mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-02-16 10:30:42 +00:00
fix codecs
This commit is contained in:
@@ -2,16 +2,14 @@ package com.dfsek.terra.fabric.data;
|
||||
|
||||
import com.dfsek.terra.api.config.ConfigPack;
|
||||
import com.dfsek.terra.api.registry.key.RegistryKey;
|
||||
|
||||
import com.dfsek.terra.fabric.FabricEntryPoint;
|
||||
|
||||
import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper;
|
||||
import com.dfsek.terra.fabric.generation.TerraBiomeSource;
|
||||
|
||||
import com.mojang.serialization.Codec;
|
||||
import com.mojang.serialization.Lifecycle;
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||
import net.minecraft.util.dynamic.RegistryElementCodec;
|
||||
import net.minecraft.util.dynamic.RegistryLoader;
|
||||
import net.minecraft.structure.StructureSet;
|
||||
import net.minecraft.util.registry.Registry;
|
||||
import net.minecraft.util.registry.RegistryCodecs;
|
||||
import net.minecraft.util.registry.RegistryFixedCodec;
|
||||
@@ -38,26 +36,28 @@ public final class Codecs {
|
||||
id)))));
|
||||
|
||||
public static final Codec<TerraBiomeSource> TERRA_BIOME_SOURCE = RecordCodecBuilder
|
||||
.create(instance -> instance.group(RegistryCodecs.entryList(Registry.BIOME_KEY)
|
||||
.fieldOf("biome_registry")
|
||||
.create(instance -> instance.group(RegistryCodecs.dynamicRegistry(Registry.BIOME_KEY, Lifecycle.stable(), Biome.CODEC)
|
||||
.fieldOf("biome_registry")
|
||||
.forGetter(TerraBiomeSource::getBiomeRegistry),
|
||||
Codec.LONG.fieldOf("seed").stable()
|
||||
.forGetter(TerraBiomeSource::getSeed),
|
||||
CONFIG_PACK.fieldOf("pack").stable()
|
||||
.forGetter(TerraBiomeSource::getPack))
|
||||
.apply(instance, instance.stable(
|
||||
TerraBiomeSource::new)));
|
||||
.apply(instance, instance.stable(TerraBiomeSource::new)));
|
||||
|
||||
public static final Codec<FabricChunkGeneratorWrapper> CODEC = RecordCodecBuilder.create(
|
||||
instance -> instance.group(
|
||||
RegistryCodecs.dynamicRegistry(Registry.STRUCTURE_SET_KEY, Lifecycle.stable(), StructureSet.CODEC)
|
||||
.fieldOf("structures")
|
||||
.forGetter(FabricChunkGeneratorWrapper::getNoiseRegistry),
|
||||
TERRA_BIOME_SOURCE.fieldOf("biome_source")
|
||||
.forGetter(FabricChunkGeneratorWrapper::getBiomeSource),
|
||||
Codec.LONG.fieldOf("seed").stable()
|
||||
.forGetter(FabricChunkGeneratorWrapper::getSeed),
|
||||
CONFIG_PACK.fieldOf("pack").stable()
|
||||
.forGetter(FabricChunkGeneratorWrapper::getPack),
|
||||
.forGetter(FabricChunkGeneratorWrapper::getPack),
|
||||
ChunkGeneratorSettings.REGISTRY_CODEC.fieldOf("settings")
|
||||
.forGetter(FabricChunkGeneratorWrapper::getSettingsSupplier)
|
||||
.forGetter(FabricChunkGeneratorWrapper::getSettings)
|
||||
).apply(instance, instance.stable(FabricChunkGeneratorWrapper::new))
|
||||
);
|
||||
}
|
||||
|
||||
@@ -71,14 +71,14 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C
|
||||
private ChunkGenerator delegate;
|
||||
private final Registry<StructureSet> noiseRegistry;
|
||||
private ConfigPack pack;
|
||||
private final Supplier<ChunkGeneratorSettings> settingsSupplier;
|
||||
private final RegistryEntry<ChunkGeneratorSettings> settings;
|
||||
|
||||
public FabricChunkGeneratorWrapper(Registry<StructureSet> noiseRegistry, TerraBiomeSource biomeSource, long seed, ConfigPack configPack,
|
||||
Supplier<ChunkGeneratorSettings> settingsSupplier) {
|
||||
RegistryEntry<ChunkGeneratorSettings> settingsSupplier) {
|
||||
super(noiseRegistry, Optional.empty(), biomeSource, biomeSource, seed);
|
||||
this.noiseRegistry = noiseRegistry;
|
||||
this.pack = configPack;
|
||||
this.settingsSupplier = settingsSupplier;
|
||||
this.settings = settingsSupplier;
|
||||
|
||||
this.delegate = pack.getGeneratorProvider().newInstance(pack);
|
||||
logger.info("Loading world with config pack {}", pack.getID());
|
||||
@@ -87,6 +87,10 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C
|
||||
this.seed = seed;
|
||||
}
|
||||
|
||||
public Registry<StructureSet> getNoiseRegistry() {
|
||||
return noiseRegistry;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Codec<? extends net.minecraft.world.gen.chunk.ChunkGenerator> getCodec() {
|
||||
return Codecs.CODEC;
|
||||
@@ -94,7 +98,7 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C
|
||||
|
||||
@Override
|
||||
public net.minecraft.world.gen.chunk.ChunkGenerator withSeed(long seed) {
|
||||
return new FabricChunkGeneratorWrapper(noiseRegistry, (TerraBiomeSource) this.biomeSource.withSeed(seed), seed, pack, settingsSupplier);
|
||||
return new FabricChunkGeneratorWrapper(noiseRegistry, (TerraBiomeSource) this.biomeSource.withSeed(seed), seed, pack, settings);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -118,7 +122,7 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C
|
||||
|
||||
@Override
|
||||
public int getWorldHeight() {
|
||||
return settingsSupplier.get().generationShapeConfig().height();
|
||||
return settings.value().generationShapeConfig().height();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -148,12 +152,12 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C
|
||||
|
||||
@Override
|
||||
public int getSeaLevel() {
|
||||
return settingsSupplier.get().seaLevel();
|
||||
return settings.value().seaLevel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMinimumY() {
|
||||
return settingsSupplier.get().generationShapeConfig().minimumY();
|
||||
return settings.value().generationShapeConfig().minimumY();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -209,8 +213,8 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C
|
||||
return seed;
|
||||
}
|
||||
|
||||
public Supplier<ChunkGeneratorSettings> getSettingsSupplier() {
|
||||
return settingsSupplier;
|
||||
public RegistryEntry<ChunkGeneratorSettings> getSettings() {
|
||||
return settings;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -23,6 +23,7 @@ import net.minecraft.client.world.GeneratorType;
|
||||
import net.minecraft.structure.StructureSet;
|
||||
import net.minecraft.util.registry.DynamicRegistryManager;
|
||||
import net.minecraft.util.registry.Registry;
|
||||
import net.minecraft.util.registry.RegistryEntry;
|
||||
import net.minecraft.world.gen.GeneratorOptions;
|
||||
import net.minecraft.world.gen.chunk.ChunkGenerator;
|
||||
|
||||
@@ -47,7 +48,8 @@ public class TerraGeneratorType extends GeneratorType {
|
||||
@Override
|
||||
protected ChunkGenerator getChunkGenerator(DynamicRegistryManager manager, long seed) {
|
||||
Registry<ChunkGeneratorSettings> chunkGeneratorSettingsRegistry = manager.get(Registry.CHUNK_GENERATOR_SETTINGS_KEY);
|
||||
Supplier<ChunkGeneratorSettings> settingsSupplier = () -> chunkGeneratorSettingsRegistry.getOrThrow(ChunkGeneratorSettings.OVERWORLD);
|
||||
RegistryEntry<ChunkGeneratorSettings>
|
||||
settingsSupplier = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.OVERWORLD).orElseThrow();
|
||||
Registry<StructureSet> noiseRegistry = manager.get(Registry.STRUCTURE_SET_KEY);
|
||||
return new FabricChunkGeneratorWrapper(noiseRegistry, new TerraBiomeSource(manager.get(Registry.BIOME_KEY), seed, pack), seed, pack, settingsSupplier);
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ import net.minecraft.server.dedicated.ServerPropertiesHandler;
|
||||
import net.minecraft.structure.StructureSet;
|
||||
import net.minecraft.util.registry.DynamicRegistryManager;
|
||||
import net.minecraft.util.registry.Registry;
|
||||
import net.minecraft.util.registry.RegistryEntry;
|
||||
import net.minecraft.world.biome.Biome;
|
||||
import net.minecraft.world.dimension.DimensionOptions;
|
||||
import net.minecraft.world.dimension.DimensionType;
|
||||
@@ -79,8 +80,8 @@ public abstract class GeneratorOptionsMixin {
|
||||
Registry<DimensionOptions> dimensionOptions = DimensionType.createDefaultDimensionOptions(manager, seed, false);
|
||||
|
||||
Registry<ChunkGeneratorSettings> chunkGeneratorSettingsRegistry = manager.get(Registry.CHUNK_GENERATOR_SETTINGS_KEY);
|
||||
Supplier<ChunkGeneratorSettings>
|
||||
settingsSupplier = () -> chunkGeneratorSettingsRegistry.getOrThrow(ChunkGeneratorSettings.OVERWORLD);
|
||||
RegistryEntry<ChunkGeneratorSettings>
|
||||
settingsSupplier = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.OVERWORLD).orElseThrow();
|
||||
Registry<StructureSet> noiseRegistry = manager.get(Registry.STRUCTURE_SET_KEY);
|
||||
|
||||
String pack = levelType.substring(levelType.indexOf(":") + 1);
|
||||
|
||||
Reference in New Issue
Block a user