dimensions are json based, you register them via a Codec.
for a Dimension you need a ChunkGenerator, a BiomeSource, a Dimension json file and a DimensionType json file
also a lot of ResourceKeys.
you can take a look at these links (it's a practical example):
ChunkGenerator (Note: you can also look at the vanilla ChunkGenerator, and if you use a AT extends it) ,