Posted January 22, 201411 yr Originally I was using the typical IWorldGenerator to generate some structures into the world, but I noticed that vanilla Dungeons, Desert Temples, and the like would generate afterwards, sometimes breaking up my custom structures. I tried using PopulateChunkEvent.Post, but that had exactly the same results as IWorldGenerator: my structures generated fine, but vanilla structures would generate over them occasionally. I saw the Populate event called for different types such as DUNGEON, but there didn't seem to be a way to use this event after the structures have generated. Using DecorateBiomeEvent.Post gave me a runtime exception "java.lang.RuntimeException: Already decorating!!" tracing back to me structure gen code (which generated fine in the other attempts). Not sure what's going on here or if it's even important to my issue. Anyway, my question is: How do I run my structure gen code after vanilla structures generate? Thanks for any suggestions. http://i.imgur.com/NdrFdld.png[/img]
January 25, 201411 yr Author This is the code I'm using with PopulateChunkEvent.Post, but the vanilla structures still seem to generate after this event fires because they will generate through my structures. Here is an image of what I mean when I say the vanilla structures are cutting through mine - those sandstone blocks are part of a desert temple, and that chest is mine that should have been inside a hollow stone cube. @ForgeSubscribe public void postPopulate(PopulateChunkEvent.Post event) { // I tried printing a simple message here when using PopulateChunkEvent.Populate to no avail // but the Post event performs as expected switch(event.world.provider.dimensionId) { case -1: // the Nether netherRoomGen.generate(event.chunkProvider, event.world, event.rand, event.chunkX, event.chunkZ); netherBossGen.generate(event.chunkProvider, event.world, event.rand, event.chunkX, event.chunkZ); break; case 0: // the Overworld secretRoomGen.generate(event.chunkProvider, event.world, event.rand, event.chunkX, event.chunkZ); bossRoomGen.generate(event.chunkProvider, event.world, event.rand, event.chunkX, event.chunkZ); break; default: break; } } http://i.imgur.com/NdrFdld.png[/img]
January 29, 201411 yr Author Using PopulateChunkEvent.Populate event, posted to TERRAIN_GEN_BUS, and generating only if the event type == EventType.ICE partially works. ICE generates after both LAVA and DUNGEON, which were both responsible for some of the structures breaking; however, this still doesn't fire after Mineshafts, Temples, etc. generate, so those are still able to break the structures, and not all other EventTypes are reliably posted for every chunk. Is there not a way using the generation Events available to generate after Mineshafts and Temples? http://i.imgur.com/NdrFdld.png[/img]
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.