Jump to content

Vanilla structure generation hook


Recommended Posts

I'm working on a mod that needs to manipulate structures after they generate.  (I'm adding something that is NOT procedurally generated, it must have a 100% chance of spawning and can only spawn once).


I've successfully done this for villages/mineshafts/strongholds but my method is extremely hacky.  I capture the mapgen then test each chunk as it's generated if a specific structure can spawn there and get a bounding box for where it would spawn.  This seems to work well but it's not clean at all and I'm not really happy with it.  I'm wondering if there is a better way to do this?


I apologize if this has been mentioned before I've been unable to find anything and even asked in IRC a couple weeks ago and diesieben07 suggested I'd have to hack something together.


Thanks for any help.



Link to comment
Share on other sites

Well diesieben07 is pretty knowledgeable so if there was a "clean" way he'd probably know it. 


I guess my question is what your actual objection to the way you're doing it is?  I assume you're handling a chunk event and then doing some inspection of the chunk.  Seems like a logical way to do it.


In modding, since we're trying to affect other existing code without directly modifying it, there are only a few "clean" methods for modding:

1) Resource assets can be directly replaced -- not really a mod, but rather resource pack.

2) Use public fields and methods in vanilla classes, where available.

3) Use registries where available.

4) Use events where available.

5) Use Java reflection

6) Use access transformers (ASM)


You might want to consider Java reflection.  Otherwise, if there is not specific methods, registries, events for what you want to do then a bit of "hacky" might be the right thing.

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Link to comment
Share on other sites

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.

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.