Posted October 5, 20178 yr So I've been developing a very large mod over the last couple months, and I'm trying to use WorldEdit schematics with WorldPainter so I can create some stuff for a server. (Specifically, large trees for a certain area, using my custom blocks) The problem is that if I'm using WorldEdit's schematics by themselves, like for transferring stuff between worlds, it works just fine, but if I load a schematic into WorldPainter and then put it in a new world, half of the blocks don't get generated. And the weird thing is, the blocks that don't get generated are the blocks that are registered second in my proxy. So if I register the logs first and the leaves second, only the logs will get put into the world, and vice versa. I'm inclined to think that there's something wrong with the registration, because I basically made the leaves and logs identical blocks with different textures, and the only thing that makes a difference is the registry order. public static void registerBlocks() { //if I register the leaves first, they'll get generated by WorldPainter, but the logs won't and vice versa register(spiderTreeLeaves); register(spiderTreeLog); //.... } where register blocks is called from: public class CommonProxy { public void preInit(FMLPreInitializationEvent event) { //... TOCItems.registerItems(); TOCBlocks.registerBlocks(); //... } //.... } Does anyone have ANY idea that they could help me with? I've been scratching my head on this one for a while
October 5, 20178 yr could you give an example of what the item id's show up in game as and show the code for registering that specific item.
October 5, 20178 yr Author Sure thing. I'm refactoring my registration system to using the new RegistryEvents, so if that doesn't clear it up, I'll show that as soon as I'm building again!
October 5, 20178 yr Author 2 hours ago, MDW01 said: could you give an example of what the item id's show up in game as and show the code for registering that specific item. Okay, so completely refactored, and no improvement. The first SS is a picture of what WorldPainter generates from a really simply .schematic file. The schematic is just a column of alternating custom leaf and log blocks. Only the block that is registered first shows up right for some reason. Item IDs appear to be working correctly. And my registration code... @SubscribeEvent public void registerBlocks(RegistryEvent.Register<Block> event) { final IForgeRegistry<Block> registry = event.getRegistry(); final Block[] blocks = { //... spiderTreeLeaves, spiderTreeLog //... }; for(Block b : blocks) { registry.register(b); } }
October 5, 20178 yr I don't see anything wrong this might be an issue with world painter. Is there a way to see if world painter actually tells the blocks to get generated or not?
October 5, 20178 yr Author 9 minutes ago, MDW01 said: I don't see anything wrong this might be an issue with world painter. Is there a way to see if world painter actually tells the blocks to get generated or not? That, I'm not sure of, I don't know enough about the implementation of WorldPainter and/or MCEdit's schematic files, butttt..... Fixed it!!! It's a SUPER ghetto fix that I have no idea why it works...Check this out...this may be very very useful for other modders. So apparently WorldPainter doesn't want to generate the LAST block that's registered in your Mod, so if you register a dummy block as the final one, it will generate just fine So here's what I did: @SubscribeEvent public void registerItemBlocks(RegistryEvent.Register<Item> event) { final IForgeRegistry<Item> registry = event.getRegistry(); final ItemBlock[] items = { //... new ItemBlock(spiderTreeLeaves), new ItemBlock(spiderTreeLog), new ItemBlock(dummy_block) }; for(ItemBlock i : items) { Block b = i.getBlock(); registry.register(i.setRegistryName(b.getRegistryName())); } } Annddd BAM. It works, it just doesn't copy over the dummy block. So strange. Thanks for your input anyway!
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.