diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/data/Codecs.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/data/Codecs.java index caf685984..056603fc2 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/data/Codecs.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/data/Codecs.java @@ -10,8 +10,12 @@ import com.dfsek.terra.fabric.generation.TerraBiomeSource; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.util.dynamic.RegistryLookupCodec; +import net.minecraft.util.dynamic.RegistryElementCodec; +import net.minecraft.util.dynamic.RegistryLoader; import net.minecraft.util.registry.Registry; +import net.minecraft.util.registry.RegistryCodecs; +import net.minecraft.util.registry.RegistryFixedCodec; +import net.minecraft.world.biome.Biome; import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; @@ -34,8 +38,9 @@ public final class Codecs { id))))); public static final Codec TERRA_BIOME_SOURCE = RecordCodecBuilder - .create(instance -> instance.group(RegistryLookupCodec.of(Registry.BIOME_KEY) - .forGetter(TerraBiomeSource::getBiomeRegistry), + .create(instance -> instance.group(RegistryCodecs.entryList(Registry.BIOME_KEY) + .fieldOf("biome_registry") + .forGetter(TerraBiomeSource::getBiomeRegistry), Codec.LONG.fieldOf("seed").stable() .forGetter(TerraBiomeSource::getSeed), CONFIG_PACK.fieldOf("pack").stable() diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java index 9d7437e3c..91c3d5b27 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java @@ -94,7 +94,7 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C @Override public MultiNoiseUtil.MultiNoiseSampler getMultiNoiseSampler() { - return (x, y, z) -> new MultiNoiseUtil.NoiseValuePoint(0, 0, 0, 0, 0, 0); + return MultiNoiseUtil.method_40443(); // zero } @Override @@ -114,43 +114,7 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C @Override public int getWorldHeight() { - return settingsSupplier.get().getGenerationShapeConfig().height(); - } - - public Pool getEntitySpawnList(Biome biome, StructureAccessor accessor, SpawnGroup group, BlockPos pos) { - if(!accessor.hasStructureReferences(pos)) { - return super.getEntitySpawnList(biome, accessor, group, pos); - } else { - if(accessor.getStructureAt(pos, StructureFeature.SWAMP_HUT).hasChildren()) { - if(group == SpawnGroup.MONSTER) { - return SwampHutFeature.MONSTER_SPAWNS; - } - - if(group == SpawnGroup.CREATURE) { - return SwampHutFeature.CREATURE_SPAWNS; - } - } - - if(group == SpawnGroup.MONSTER) { - if(accessor.getStructureAt(pos, StructureFeature.PILLAGER_OUTPOST).hasChildren()) { - return PillagerOutpostFeature.MONSTER_SPAWNS; - } - - if(accessor.getStructureAt(pos, StructureFeature.MONUMENT).hasChildren()) { - return OceanMonumentFeature.MONSTER_SPAWNS; - } - - if(accessor.getStructureAt(pos, StructureFeature.FORTRESS).hasChildren()) { - return NetherFortressFeature.MONSTER_SPAWNS; - } - } - - return (group == SpawnGroup.UNDERGROUND_WATER_CREATURE || group == SpawnGroup.AXOLOTLS) && accessor.getStructureAt(pos, - StructureFeature.MONUMENT) - .hasChildren() - ? SpawnSettings.EMPTY_ENTRY_POOL - : super.getEntitySpawnList(biome, accessor, group, pos); - } + return settingsSupplier.get().generationShapeConfig().height(); } @Override @@ -180,12 +144,12 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C @Override public int getSeaLevel() { - return settingsSupplier.get().getSeaLevel(); + return settingsSupplier.get().seaLevel(); } @Override public int getMinimumY() { - return settingsSupplier.get().getGenerationShapeConfig().minimumY(); + return settingsSupplier.get().generationShapeConfig().minimumY(); } @Override diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java index 4c54175a8..938a6a92d 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java @@ -22,12 +22,11 @@ import com.dfsek.terra.fabric.data.Codecs; import com.dfsek.terra.fabric.util.ProtoPlatformBiome; import com.mojang.serialization.Codec; -import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; +import net.minecraft.util.registry.RegistryEntry; import net.minecraft.world.biome.source.BiomeSource; import net.minecraft.world.biome.source.util.MultiNoiseUtil.MultiNoiseSampler; -import java.util.HashMap; import java.util.Map; import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; @@ -36,7 +35,6 @@ import java.util.stream.Collectors; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.fabric.util.FabricUtil; public class TerraBiomeSource extends BiomeSource { @@ -73,7 +71,7 @@ public class TerraBiomeSource extends BiomeSource { } @Override - public net.minecraft.world.biome.Biome getBiome(int biomeX, int biomeY, int biomeZ, MultiNoiseSampler noiseSampler) { + public RegistryEntry getBiome(int biomeX, int biomeY, int biomeZ, MultiNoiseSampler noiseSampler) { return ((ProtoPlatformBiome) pack.getBiomeProvider().getBiome(biomeX << 2, biomeZ << 2, seed).getPlatformBiome()).getDelegate(); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java index b85968a3b..3828b5fbf 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java @@ -34,6 +34,7 @@ import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.registry.DynamicRegistryManager; import net.minecraft.util.registry.Registry; +import net.minecraft.util.registry.RegistryEntry; import net.minecraft.util.registry.RegistryKey; import net.minecraft.world.WorldAccess; import net.minecraft.world.biome.Biome.Builder; @@ -62,7 +63,7 @@ public final class FabricUtil { public static void registerBiome(Biome biome, ConfigPack pack, DynamicRegistryManager registryManager, com.dfsek.terra.api.registry.key.RegistryKey id) { Registry biomeRegistry = registryManager.get(Registry.BIOME_KEY); - net.minecraft.world.biome.Biome vanilla = ((ProtoPlatformBiome) biome.getPlatformBiome()).get(biomeRegistry); + RegistryEntry vanilla = ((ProtoPlatformBiome) biome.getPlatformBiome()).get(biomeRegistry); if(pack.getContext().get(PreLoadCompatibilityOptions.class).useVanillaBiomes()) { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/ProtoPlatformBiome.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/ProtoPlatformBiome.java index 6c38fb2db..1ab0aea82 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/ProtoPlatformBiome.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/ProtoPlatformBiome.java @@ -22,20 +22,21 @@ import net.minecraft.util.registry.Registry; import com.dfsek.terra.api.world.biome.PlatformBiome; +import net.minecraft.util.registry.RegistryEntry; import net.minecraft.world.biome.Biome; public class ProtoPlatformBiome implements PlatformBiome { private final Identifier identifier; - private Biome delegate; + private RegistryEntry delegate; public ProtoPlatformBiome(Identifier identifier) { this.identifier = identifier; } - public net.minecraft.world.biome.Biome get(Registry registry) { - return registry.get(identifier); + public RegistryEntry get(Registry registry) { + return registry.getOrCreateEntry(registry.getKey(registry.get(identifier)).orElseThrow()); } @Override @@ -43,11 +44,11 @@ public class ProtoPlatformBiome implements PlatformBiome { return identifier; } - public Biome getDelegate() { + public RegistryEntry getDelegate() { return delegate; } - public void setDelegate(Biome delegate) { + public void setDelegate(RegistryEntry delegate) { this.delegate = delegate; } }