So it took me a few days, but I managed to figure things out myself. First of all, apparently
RegistryObject<Biome>
fields used with
DeferredRegister
cannot be referenced directly. When you want to reference your custom biomes, you need to get them from the biome registry itself. This solves the issues I had with the
getNoiseBiome
method. Secondly, the codec thing. All I had to do to get that working, was to register the codec in a static initialiser in my biome provider class:
static {
Registry.register(Registry.BIOME_PROVIDER_CODEC, new ResourceLocation(MOD_ID, "biome_source"), CODEC);
}
I hope this helps anyone trying this for themselves.