SOrt available features before BiomeSOurce is initialized

This commit is contained in:
Frank 2021-12-09 22:17:25 +01:00
parent b6bc8acf6b
commit 32280dc499
3 changed files with 42 additions and 23 deletions

View file

@ -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<Biome> biomeRegistry;
protected final long seed;
private static List<Biome> preInit(Registry<Biome> biomeRegistry, List<Biome> biomes){
biomes.forEach(biome -> BiomeAPI.sortBiomeFeatures(biome));
return biomes;
}
protected BCLBiomeSource(Registry<Biome> biomeRegistry, long seed, List<Biome> list) {
super(preInit(biomeRegistry, list));
this.seed = seed;
this.biomeRegistry = biomeRegistry;
BiomeAPI.initRegistry(biomeRegistry);
}
}

View file

@ -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<BCLibEndBiomeSource> 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<Point, Boolean> endLandFunction;
private final Registry<Biome> 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<Biome> 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);

View file

@ -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<BCLibNetherBiomeSource> 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<Biome> 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<Biome> 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<Biome> getBiomes(Registry<Biome> biomeRegistry) {