From 7466048a226a76df7696fcf11f14722f57941b6c Mon Sep 17 00:00:00 2001 From: Frank Date: Sun, 22 May 2022 12:11:31 +0200 Subject: [PATCH] Minor Update --- .../bclib/client/presets/WorldPresetsUI.java | 2 +- .../bclib/gui/worldgen/WorldSetupScreen.java | 19 +++++- .../presets/worldgen/BCLChunkGenerator.java | 61 +++++++++++++++++++ 3 files changed, 78 insertions(+), 4 deletions(-) create mode 100644 src/main/java/org/betterx/bclib/presets/worldgen/BCLChunkGenerator.java diff --git a/src/main/java/org/betterx/bclib/client/presets/WorldPresetsUI.java b/src/main/java/org/betterx/bclib/client/presets/WorldPresetsUI.java index 586c21a3..4b65b54d 100644 --- a/src/main/java/org/betterx/bclib/client/presets/WorldPresetsUI.java +++ b/src/main/java/org/betterx/bclib/client/presets/WorldPresetsUI.java @@ -22,7 +22,7 @@ public class WorldPresetsUI { public static void setupClientside() { registerCustomizeUI(WorldPresets.BCL_WORLD, (createWorldScreen, worldCreationContext) -> { - return new WorldSetupScreen(createWorldScreen); + return new WorldSetupScreen(createWorldScreen, worldCreationContext); }); } } diff --git a/src/main/java/org/betterx/bclib/gui/worldgen/WorldSetupScreen.java b/src/main/java/org/betterx/bclib/gui/worldgen/WorldSetupScreen.java index 2d0c2f5a..7a9b459b 100644 --- a/src/main/java/org/betterx/bclib/gui/worldgen/WorldSetupScreen.java +++ b/src/main/java/org/betterx/bclib/gui/worldgen/WorldSetupScreen.java @@ -1,6 +1,6 @@ package org.betterx.bclib.gui.worldgen; -import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.screens.worldselection.CreateWorldScreen; import net.minecraft.client.gui.screens.worldselection.WorldCreationContext; import net.minecraft.core.Registry; import net.minecraft.network.chat.Component; @@ -10,13 +10,22 @@ import net.minecraft.world.level.levelgen.WorldGenSettings; import net.minecraft.world.level.levelgen.flat.FlatLevelGeneratorSettings; import net.minecraft.world.level.levelgen.structure.StructureSet; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + import org.betterx.bclib.gui.gridlayout.GridScreen; import org.jetbrains.annotations.Nullable; -public class WorldSetupScreen extends GridScreen { - public WorldSetupScreen(@Nullable Screen parent) { +@Environment(EnvType.CLIENT) +public class WorldSetupScreen extends GridScreen { + private final WorldCreationContext context; + private final CreateWorldScreen createWorldScreen; + + public WorldSetupScreen(@Nullable CreateWorldScreen parent, WorldCreationContext context) { super(parent, Component.translatable("title.screen.bclib.worldgen.main"), 10, false); + this.context = context; + this.createWorldScreen = parent; } @Override @@ -24,6 +33,10 @@ public class WorldSetupScreen extends GridScreen { } + private void updateSettings() { + + } + private static WorldCreationContext.Updater worldConfiguration(FlatLevelGeneratorSettings flatLevelGeneratorSettings) { return (frozen, worldGenSettings) -> { Registry registry = frozen.registryOrThrow(Registry.STRUCTURE_SET_REGISTRY); diff --git a/src/main/java/org/betterx/bclib/presets/worldgen/BCLChunkGenerator.java b/src/main/java/org/betterx/bclib/presets/worldgen/BCLChunkGenerator.java new file mode 100644 index 00000000..555023ad --- /dev/null +++ b/src/main/java/org/betterx/bclib/presets/worldgen/BCLChunkGenerator.java @@ -0,0 +1,61 @@ +package org.betterx.bclib.presets.worldgen; + +import net.minecraft.core.Holder; +import net.minecraft.core.Registry; +import net.minecraft.resources.RegistryOps; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.chunk.ChunkGenerator; +import net.minecraft.world.level.levelgen.NoiseBasedChunkGenerator; +import net.minecraft.world.level.levelgen.NoiseGeneratorSettings; +import net.minecraft.world.level.levelgen.structure.StructureSet; +import net.minecraft.world.level.levelgen.synth.NormalNoise; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import org.betterx.bclib.interfaces.NoiseGeneratorSettingsProvider; + +public class BCLChunkGenerator extends NoiseBasedChunkGenerator { + public static final Codec CODEC = RecordCodecBuilder + .create((RecordCodecBuilder.Instance builderInstance) -> { + final RecordCodecBuilder> noiseGetter = RegistryOps + .retrieveRegistry( + Registry.NOISE_REGISTRY) + .forGetter( + BCLChunkGenerator::getNoises); + + RecordCodecBuilder biomeSourceCodec = BiomeSource.CODEC + .fieldOf("biome_source") + .forGetter((BCLChunkGenerator generator) -> generator.biomeSource); + + RecordCodecBuilder> settingsCodec = NoiseGeneratorSettings.CODEC + .fieldOf("settings") + .forGetter((BCLChunkGenerator generator) -> generator.settings); + + + return NoiseBasedChunkGenerator + .commonCodec(builderInstance) + .and(builderInstance.group(noiseGetter, biomeSourceCodec, settingsCodec)) + .apply(builderInstance, builderInstance.stable(BCLChunkGenerator::new)); + }); + + + public BCLChunkGenerator(Registry registry, + Registry registry2, + BiomeSource biomeSource, + Holder holder) { + super(registry, registry2, biomeSource, holder); + } + + @Override + protected Codec codec() { + return CODEC; + } + + + private Registry getNoises() { + if (this instanceof NoiseGeneratorSettingsProvider p) { + return p.bclib_getNoises(); + } + return null; + } +}