Disclaimer: I am a beginner modder. I am using this site more to make notes for myself, and if it helps others along the way, that is great. That being said, the info below may be incomplete or may change frequently as I learn more. If you are aware of anything that needs to be changed or may help myself or other readers, please let me know in the comments.
These are some notes I took from reading mcjty’s dimension mod tutorial here: Dimensions-1.9 (works for 1.10)
A good reference for doing more with dimensions is from the Minecraft ChunkProviderOverworld class.
Each dimension needs its own WorldProvider implementation (for the most part).
You can override many functions from WorldProvider to affect sky, weather, and more.
Generates the landscape.
In mcjty’s tutorial, he separates the actual terrain generator from this class into its own class for clarity (it contains a lot of math for generation).
Place custom mobs here.
The dimensions need a registry class, similar to classes like ModItems and ModBlocks.
Two things need to be registered in this class:
- The dimension type – an enum that can be extended at runtime using DimensionType.register(). This maps a dimension id to the world provider
- The dimension itself – maps the dimension to the dimension type.
Register in the init part of the CommonProxy or mod class.
(I read in another tutorial that you had to put it after all other inits, but I don’t entirely think this is true).
There should be a custom teleport command at least to help you get to the dimension.
The other option is to make your own custom portal blocks (which I have not yet learned to do).