diff --git a/worldgeneratorapi-impl/src/main/java/nl/rutgerkok/worldgeneratorapi/internal/InjectedBiomeGenerator.java b/worldgeneratorapi-impl/src/main/java/nl/rutgerkok/worldgeneratorapi/internal/InjectedBiomeGenerator.java index 9da3849..5c38fd0 100644 --- a/worldgeneratorapi-impl/src/main/java/nl/rutgerkok/worldgeneratorapi/internal/InjectedBiomeGenerator.java +++ b/worldgeneratorapi-impl/src/main/java/nl/rutgerkok/worldgeneratorapi/internal/InjectedBiomeGenerator.java @@ -2,6 +2,7 @@ package nl.rutgerkok.worldgeneratorapi.internal; import static java.util.stream.Collectors.toList; +import java.util.Arrays; import java.util.List; import java.util.Set; @@ -14,8 +15,8 @@ import net.minecraft.server.v1_16_R1.BiomeBase; import net.minecraft.server.v1_16_R1.Biomes; import net.minecraft.server.v1_16_R1.IRegistry; import net.minecraft.server.v1_16_R1.WorldChunkManager; -import net.minecraft.server.v1_16_R1.WorldChunkManagerHell; import nl.rutgerkok.worldgeneratorapi.BiomeGenerator; +import nl.rutgerkok.worldgeneratorapi.WorldGeneratorApi; public class InjectedBiomeGenerator extends WorldChunkManager { @@ -25,10 +26,13 @@ public class InjectedBiomeGenerator extends WorldChunkManager { * generators.) Instead, we serialize as if we are a biome generator that * generates only oceans. */ - private static final Codec DUMMY_CODEC = IRegistry.BIOME.fieldOf("biome") - .xmap(biome -> new WorldChunkManagerHell(biome), biomeGenToSerialize -> { + private static final Codec DUMMY_CODEC = IRegistry.BIOME.fieldOf( + "[" + WorldGeneratorApi.class.getSimpleName() + + "] Custom biome generators cannot be stored in the level.dat, please ignore this error") + .xmap(biome -> new InjectedBiomeGenerator(), biomeGenToSerialize -> { + // Serializes as a single-biome generator return Biomes.OCEAN; - }) + }) .stable().codec(); private static List toBiomeBase(Set biomes) { @@ -53,6 +57,16 @@ public class InjectedBiomeGenerator extends WorldChunkManager { private final BiomeGenerator biomeGenerator; + /** + * Constructor only used for deserialization. Just provides a dummy biome + * generator, as the biome generator plugin should inject its own biome + * generator. + */ + private InjectedBiomeGenerator() { + super(Arrays.asList(Biomes.OCEAN)); + this.biomeGenerator = (x, y, z) -> Biome.OCEAN; + } + public InjectedBiomeGenerator(BiomeGenerator biomeGenerator) { super(toBiomeBase(biomeGenerator.getStructureBiomes()));