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