From 32280dc499b92773d6609cf2579d979f9f00d374 Mon Sep 17 00:00:00 2001 From: Frank Date: Thu, 9 Dec 2021 22:17:25 +0100 Subject: [PATCH] SOrt available features before BiomeSOurce is initialized --- .../bclib/world/generator/BCLBiomeSource.java | 27 +++++++++++++++++++ .../world/generator/BCLibEndBiomeSource.java | 22 +++++++-------- .../generator/BCLibNetherBiomeSource.java | 16 +++++------ 3 files changed, 42 insertions(+), 23 deletions(-) create mode 100644 src/main/java/ru/bclib/world/generator/BCLBiomeSource.java diff --git a/src/main/java/ru/bclib/world/generator/BCLBiomeSource.java b/src/main/java/ru/bclib/world/generator/BCLBiomeSource.java new file mode 100644 index 00000000..beb414f4 --- /dev/null +++ b/src/main/java/ru/bclib/world/generator/BCLBiomeSource.java @@ -0,0 +1,27 @@ +package ru.bclib.world.generator; + +import java.util.List; + +import net.minecraft.core.Registry; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.BiomeSource; +import ru.bclib.api.biomes.BiomeAPI; + +public abstract class BCLBiomeSource extends BiomeSource { + protected final Registry biomeRegistry; + protected final long seed; + + private static List preInit(Registry biomeRegistry, List biomes){ + biomes.forEach(biome -> BiomeAPI.sortBiomeFeatures(biome)); + return biomes; + } + + protected BCLBiomeSource(Registry biomeRegistry, long seed, List list) { + super(preInit(biomeRegistry, list)); + + this.seed = seed; + this.biomeRegistry = biomeRegistry; + + BiomeAPI.initRegistry(biomeRegistry); + } +} diff --git a/src/main/java/ru/bclib/world/generator/BCLibEndBiomeSource.java b/src/main/java/ru/bclib/world/generator/BCLibEndBiomeSource.java index 5dc09c50..c9317a3a 100644 --- a/src/main/java/ru/bclib/world/generator/BCLibEndBiomeSource.java +++ b/src/main/java/ru/bclib/world/generator/BCLibEndBiomeSource.java @@ -1,5 +1,9 @@ package ru.bclib.world.generator; +import java.awt.Point; +import java.util.List; +import java.util.function.Function; + import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.core.Registry; @@ -24,11 +28,7 @@ import ru.bclib.world.biomes.BCLBiome; import ru.bclib.world.generator.map.hex.HexBiomeMap; import ru.bclib.world.generator.map.square.SquareBiomeMap; -import java.awt.Point; -import java.util.List; -import java.util.function.Function; - -public class BCLibEndBiomeSource extends BiomeSource { +public class BCLibEndBiomeSource extends BCLBiomeSource { public static final Codec CODEC = RecordCodecBuilder.create((instance) -> { return instance.group(RegistryLookupCodec.create(Registry.BIOME_REGISTRY).forGetter((theEndBiomeSource) -> { return theEndBiomeSource.biomeRegistry; @@ -38,19 +38,17 @@ public class BCLibEndBiomeSource extends BiomeSource { }); private static final OpenSimplexNoise SMALL_NOISE = new OpenSimplexNoise(8324); private Function endLandFunction; - private final Registry biomeRegistry; + private final SimplexNoise noise; private final Biome centerBiome; private final Biome barrens; private BiomeMap mapLand; private BiomeMap mapVoid; - private final long seed; private final Point pos; public BCLibEndBiomeSource(Registry biomeRegistry, long seed) { - super(getBiomes(biomeRegistry)); - - BiomeAPI.initRegistry(biomeRegistry); + super(biomeRegistry, seed, getBiomes(biomeRegistry)); + BiomeAPI.END_LAND_BIOME_PICKER.clearMutables(); BiomeAPI.END_VOID_BIOME_PICKER.clearMutables(); @@ -103,9 +101,7 @@ public class BCLibEndBiomeSource extends BiomeSource { this.centerBiome = biomeRegistry.getOrThrow(Biomes.THE_END); this.barrens = biomeRegistry.getOrThrow(Biomes.END_BARRENS); - this.biomeRegistry = biomeRegistry; - this.seed = seed; - + WorldgenRandom chunkRandom = new WorldgenRandom(new LegacyRandomSource(seed)); chunkRandom.consumeCount(17292); this.noise = new SimplexNoise(chunkRandom); diff --git a/src/main/java/ru/bclib/world/generator/BCLibNetherBiomeSource.java b/src/main/java/ru/bclib/world/generator/BCLibNetherBiomeSource.java index a2089c7e..337bb51b 100644 --- a/src/main/java/ru/bclib/world/generator/BCLibNetherBiomeSource.java +++ b/src/main/java/ru/bclib/world/generator/BCLibNetherBiomeSource.java @@ -1,5 +1,7 @@ package ru.bclib.world.generator; +import java.util.List; + import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.core.Registry; @@ -20,9 +22,7 @@ import ru.bclib.world.generator.map.MapStack; import ru.bclib.world.generator.map.hex.HexBiomeMap; import ru.bclib.world.generator.map.square.SquareBiomeMap; -import java.util.List; - -public class BCLibNetherBiomeSource extends BiomeSource { +public class BCLibNetherBiomeSource extends BCLBiomeSource { public static final Codec CODEC = RecordCodecBuilder.create((instance) -> { return instance.group(RegistryLookupCodec.create(Registry.BIOME_REGISTRY).forGetter((theEndBiomeSource) -> { return theEndBiomeSource.biomeRegistry; @@ -30,9 +30,8 @@ public class BCLibNetherBiomeSource extends BiomeSource { return theEndBiomeSource.seed; })).apply(instance, instance.stable(BCLibNetherBiomeSource::new)); }); - private final Registry biomeRegistry; private BiomeMap biomeMap; - private final long seed; + private static boolean forceLegacyGenerator = false; private static int lastWorldHeight; private static int worldHeight; @@ -57,9 +56,9 @@ public class BCLibNetherBiomeSource extends BiomeSource { } public BCLibNetherBiomeSource(Registry biomeRegistry, long seed) { - super(getBiomes(biomeRegistry)); + super(biomeRegistry, seed, getBiomes(biomeRegistry)); - BiomeAPI.initRegistry(biomeRegistry); + BiomeAPI.NETHER_BIOME_PICKER.clearMutables(); this.possibleBiomes().forEach(biome -> { @@ -86,9 +85,6 @@ public class BCLibNetherBiomeSource extends BiomeSource { BiomeAPI.NETHER_BIOME_PICKER.rebuild(); initMap(); - - this.biomeRegistry = biomeRegistry; - this.seed = seed; } private static List getBiomes(Registry biomeRegistry) {