Jump to content

Recommended Posts

Posted

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.

Posted

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;
}
}

Posted

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?

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.