This moves dimension addition code to a set of mixins and an api built on top of them instead of using minecraft's custom dimension datapack loader. Adding dimensions using these mixins seems to work slightly better than using the datapack for four main reasons:
When using the datapack dimension loader, Minecraft will complain to the user every time they try to create a new world or open an existing one.
Customized generators specified in datapacks are forced to use a static seed for all worlds, requiring some mixin hacks to get them to use the seed of the current world.
Settings for datapack dimensions will not show up in exported world settings.
Datapack dimensions from mods use the same save directory structure as dimension from actual datapacks. (I know this one is small, but it can lead to some confusion.)
This moves dimension addition code to a set of mixins and an api built on top of them instead of using minecraft's custom dimension datapack loader. Adding dimensions using these mixins seems to work slightly better than using the datapack for four main reasons: