Posted December 5, 20204 yr Hey y'all, I've been trying my hands at making a new world type lately. This works exactly as it should using the recently added class ForgeWorldType . Now, I want my custom world type to use a set of custom biomes, and this is where I run into trouble. I've copied the code in OverworldBiomeProvider and swapped the entries of the biomes field out for my custom biomes. However, the vanilla biomes spawn like in the Default world type when I generate a world using my custom world type. And for the record: yes, I am passing it into the constructor of ForgeWorldType. I have already located the issue: the getNoiseBiome method in my copied biome provider class uses a lookup registry that always contains the vanilla biomes. How would I go about correctly implementing this method, such that my custom biomes generate instead? And on the subject of implementing biome provider methods, how do I implement the getBiomeProviderCodec method? TL;DR: How do I implement BiomeProvider's abstract methods in my custom biome provider class?
December 9, 20204 yr Author 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.
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.