First off, I must ask that if anyone has a better idea for a name, to please share it. With that out of the way, let me begin. Just recently I've had an idea that would allow multiple custom blocks to be created, so long as they use a preexisting texture. No, this is not "that thread" again. The idea: MC allows custom blocks to override pre-existing blocks. You can effectively do something among the lines of : Block.byId[Block.FIRE.id] = null; Block.byId[Block.FIRE.id] = new CustomFire(). That will swap the regular fire with your custom fire. All blocks have a slot allocated. If you create a block with an ID the client does not have, it will crash. But noone has ever said anything about creating custom IDs, appending custom blocks to them, but sending a legitimate ID to the client. This way, you could have hundreds of blocks, so long as they use a pre-existing texture (this texture is defined by the slot ID). This would be done by creating a custom packet handler, most likely using Comphenix 's ProtocolLib, and swap all illegitimate IDs with proper IDs. What do you think? Would you find this useful?