mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-18 06:40:55 +00:00
update MinecraftChunkGeneratorWrapper and its codec
This commit is contained in:
@@ -2,7 +2,6 @@ package com.dfsek.terra.mod.data;
|
|||||||
|
|
||||||
import com.mojang.serialization.Codec;
|
import com.mojang.serialization.Codec;
|
||||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||||
import net.minecraft.registry.Registry;
|
|
||||||
import net.minecraft.registry.RegistryKeys;
|
import net.minecraft.registry.RegistryKeys;
|
||||||
import net.minecraft.registry.RegistryOps;
|
import net.minecraft.registry.RegistryOps;
|
||||||
import net.minecraft.world.gen.chunk.ChunkGeneratorSettings;
|
import net.minecraft.world.gen.chunk.ChunkGeneratorSettings;
|
||||||
@@ -48,10 +47,6 @@ public final class Codecs {
|
|||||||
public static final Codec<MinecraftChunkGeneratorWrapper> MINECRAFT_CHUNK_GENERATOR_WRAPPER = RecordCodecBuilder
|
public static final Codec<MinecraftChunkGeneratorWrapper> MINECRAFT_CHUNK_GENERATOR_WRAPPER = RecordCodecBuilder
|
||||||
.create(
|
.create(
|
||||||
instance -> instance.group(
|
instance -> instance.group(
|
||||||
RegistryOps.createRegistryCodec(Registry.STRUCTURE_SET_KEY)
|
|
||||||
.fieldOf("structure_registry")
|
|
||||||
.stable()
|
|
||||||
.forGetter(MinecraftChunkGeneratorWrapper::getNoiseRegistry),
|
|
||||||
TERRA_BIOME_SOURCE.fieldOf("biome_source")
|
TERRA_BIOME_SOURCE.fieldOf("biome_source")
|
||||||
.stable()
|
.stable()
|
||||||
.forGetter(MinecraftChunkGeneratorWrapper::getBiomeSource),
|
.forGetter(MinecraftChunkGeneratorWrapper::getBiomeSource),
|
||||||
@@ -61,6 +56,7 @@ public final class Codecs {
|
|||||||
ChunkGeneratorSettings.REGISTRY_CODEC.fieldOf("settings")
|
ChunkGeneratorSettings.REGISTRY_CODEC.fieldOf("settings")
|
||||||
.stable()
|
.stable()
|
||||||
.forGetter(MinecraftChunkGeneratorWrapper::getSettings)
|
.forGetter(MinecraftChunkGeneratorWrapper::getSettings)
|
||||||
).apply(instance, instance.stable(MinecraftChunkGeneratorWrapper::new))
|
).apply(instance, instance.stable(
|
||||||
|
MinecraftChunkGeneratorWrapper::new))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-12
@@ -17,9 +17,12 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.mod.generation;
|
package com.dfsek.terra.mod.generation;
|
||||||
|
|
||||||
|
import com.dfsek.terra.mod.util.SeedHack;
|
||||||
|
|
||||||
import com.mojang.serialization.Codec;
|
import com.mojang.serialization.Codec;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.block.Blocks;
|
import net.minecraft.block.Blocks;
|
||||||
|
import net.minecraft.registry.entry.RegistryEntry;
|
||||||
import net.minecraft.structure.StructureSet;
|
import net.minecraft.structure.StructureSet;
|
||||||
import net.minecraft.util.Util;
|
import net.minecraft.util.Util;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
@@ -28,7 +31,6 @@ import net.minecraft.util.math.random.CheckedRandom;
|
|||||||
import net.minecraft.util.math.random.ChunkRandom;
|
import net.minecraft.util.math.random.ChunkRandom;
|
||||||
import net.minecraft.util.math.random.RandomSeed;
|
import net.minecraft.util.math.random.RandomSeed;
|
||||||
import net.minecraft.registry.Registry;
|
import net.minecraft.registry.Registry;
|
||||||
import net.minecraft.util.registry.RegistryEntry;
|
|
||||||
import net.minecraft.world.ChunkRegion;
|
import net.minecraft.world.ChunkRegion;
|
||||||
import net.minecraft.world.HeightLimitView;
|
import net.minecraft.world.HeightLimitView;
|
||||||
import net.minecraft.world.Heightmap.Type;
|
import net.minecraft.world.Heightmap.Type;
|
||||||
@@ -71,15 +73,13 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun
|
|||||||
private static final Logger logger = LoggerFactory.getLogger(MinecraftChunkGeneratorWrapper.class);
|
private static final Logger logger = LoggerFactory.getLogger(MinecraftChunkGeneratorWrapper.class);
|
||||||
|
|
||||||
private final TerraBiomeSource biomeSource;
|
private final TerraBiomeSource biomeSource;
|
||||||
private final Registry<StructureSet> noiseRegistry;
|
|
||||||
private final RegistryEntry<ChunkGeneratorSettings> settings;
|
private final RegistryEntry<ChunkGeneratorSettings> settings;
|
||||||
private ChunkGenerator delegate;
|
private ChunkGenerator delegate;
|
||||||
private ConfigPack pack;
|
private ConfigPack pack;
|
||||||
|
|
||||||
public MinecraftChunkGeneratorWrapper(Registry<StructureSet> noiseRegistry, TerraBiomeSource biomeSource, ConfigPack configPack,
|
public MinecraftChunkGeneratorWrapper(TerraBiomeSource biomeSource, ConfigPack configPack,
|
||||||
RegistryEntry<ChunkGeneratorSettings> settingsSupplier) {
|
RegistryEntry<ChunkGeneratorSettings> settingsSupplier) {
|
||||||
super(noiseRegistry, Optional.empty(), biomeSource);
|
super(biomeSource);
|
||||||
this.noiseRegistry = noiseRegistry;
|
|
||||||
this.pack = configPack;
|
this.pack = configPack;
|
||||||
this.settings = settingsSupplier;
|
this.settings = settingsSupplier;
|
||||||
|
|
||||||
@@ -88,10 +88,6 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun
|
|||||||
this.biomeSource = biomeSource;
|
this.biomeSource = biomeSource;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Registry<StructureSet> getNoiseRegistry() {
|
|
||||||
return noiseRegistry;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Codec<? extends net.minecraft.world.gen.chunk.ChunkGenerator> getCodec() {
|
protected Codec<? extends net.minecraft.world.gen.chunk.ChunkGenerator> getCodec() {
|
||||||
return Codecs.MINECRAFT_CHUNK_GENERATOR_WRAPPER;
|
return Codecs.MINECRAFT_CHUNK_GENERATOR_WRAPPER;
|
||||||
@@ -137,7 +133,7 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun
|
|||||||
|
|
||||||
private void beard(StructureAccessor structureAccessor, Chunk chunk, WorldProperties world, BiomeProvider biomeProvider,
|
private void beard(StructureAccessor structureAccessor, Chunk chunk, WorldProperties world, BiomeProvider biomeProvider,
|
||||||
PreLoadCompatibilityOptions compatibilityOptions) {
|
PreLoadCompatibilityOptions compatibilityOptions) {
|
||||||
StructureWeightSampler structureWeightSampler = StructureWeightSampler.method_42695(structureAccessor, chunk.getPos());
|
StructureWeightSampler structureWeightSampler = StructureWeightSampler.createStructureWeightSampler(structureAccessor, chunk.getPos());
|
||||||
double threshold = compatibilityOptions.getBeardThreshold();
|
double threshold = compatibilityOptions.getBeardThreshold();
|
||||||
double airThreshold = compatibilityOptions.getAirThreshold();
|
double airThreshold = compatibilityOptions.getAirThreshold();
|
||||||
int xi = chunk.getPos().x << 4;
|
int xi = chunk.getPos().x << 4;
|
||||||
@@ -185,7 +181,7 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getHeight(int x, int z, Type heightmap, HeightLimitView height, NoiseConfig noiseConfig) {
|
public int getHeight(int x, int z, Type heightmap, HeightLimitView height, NoiseConfig noiseConfig) {
|
||||||
WorldProperties properties = MinecraftAdapter.adapt(height, noiseConfig.getLegacyWorldSeed());
|
WorldProperties properties = MinecraftAdapter.adapt(height, SeedHack.getSeed(noiseConfig.getMultiNoiseSampler()));
|
||||||
BiomeProvider biomeProvider = pack.getBiomeProvider();
|
BiomeProvider biomeProvider = pack.getBiomeProvider();
|
||||||
int min = height.getBottomY();
|
int min = height.getBottomY();
|
||||||
for(int y = height.getTopY() - 1; y >= min; y--) {
|
for(int y = height.getTopY() - 1; y >= min; y--) {
|
||||||
@@ -199,7 +195,7 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun
|
|||||||
@Override
|
@Override
|
||||||
public VerticalBlockSample getColumnSample(int x, int z, HeightLimitView height, NoiseConfig noiseConfig) {
|
public VerticalBlockSample getColumnSample(int x, int z, HeightLimitView height, NoiseConfig noiseConfig) {
|
||||||
BlockState[] array = new BlockState[height.getHeight()];
|
BlockState[] array = new BlockState[height.getHeight()];
|
||||||
WorldProperties properties = MinecraftAdapter.adapt(height, noiseConfig.getLegacyWorldSeed());
|
WorldProperties properties = MinecraftAdapter.adapt(height, SeedHack.getSeed(noiseConfig.getMultiNoiseSampler()));
|
||||||
BiomeProvider biomeProvider = pack.getBiomeProvider();
|
BiomeProvider biomeProvider = pack.getBiomeProvider();
|
||||||
for(int y = height.getTopY() - 1; y >= height.getBottomY(); y--) {
|
for(int y = height.getTopY() - 1; y >= height.getBottomY(); y--) {
|
||||||
array[y - height.getBottomY()] = (BlockState) delegate.getBlock(properties, x, y, z, biomeProvider);
|
array[y - height.getBottomY()] = (BlockState) delegate.getBlock(properties, x, y, z, biomeProvider);
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ public class PresetUtil {
|
|||||||
PRESETS.add(generatorID);
|
PRESETS.add(generatorID);
|
||||||
|
|
||||||
TerraBiomeSource biomeSource = new TerraBiomeSource(biomeRegistry, pack);
|
TerraBiomeSource biomeSource = new TerraBiomeSource(biomeRegistry, pack);
|
||||||
ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(structureSetRegistry, biomeSource, pack, overworld);
|
ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(biomeSource, pack, overworld);
|
||||||
|
|
||||||
DimensionOptions dimensionOptions = new DimensionOptions(overworldDimensionType, generator);
|
DimensionOptions dimensionOptions = new DimensionOptions(overworldDimensionType, generator);
|
||||||
WorldPreset preset = new WorldPreset(
|
WorldPreset preset = new WorldPreset(
|
||||||
|
|||||||
Reference in New Issue
Block a user