From 9d200565d73825badd21587d4a9e870ca8c44926 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Tue, 12 Dec 2023 16:54:27 -0700 Subject: [PATCH] more fixes --- .../MinecraftChunkGeneratorWrapper.java | 25 +++-------- .../dfsek/terra/mod/util/MinecraftUtil.java | 7 ++- .../com/dfsek/terra/mod/util/PresetUtil.java | 44 ++++++------------- .../dfsek/terra/lifecycle/util/BiomeUtil.java | 2 +- 4 files changed, 28 insertions(+), 50 deletions(-) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java index acf22cc1d..54284ecaf 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java @@ -17,6 +17,8 @@ package com.dfsek.terra.mod.generation; +import com.dfsek.terra.api.util.ConstantRange; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.mod.config.VanillaBiomeProperties; import com.dfsek.terra.mod.config.VanillaWorldProperties; @@ -75,8 +77,7 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun private final RegistryEntry settings; private ChunkGenerator delegate; private ConfigPack pack; - - private VanillaWorldProperties vanillaWorldProperties; + public MinecraftChunkGeneratorWrapper(TerraBiomeSource biomeSource, ConfigPack configPack, RegistryEntry settingsSupplier) { @@ -87,11 +88,6 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun this.delegate = pack.getGeneratorProvider().newInstance(pack); logger.info("Loading world with config pack {}", pack.getID()); this.biomeSource = biomeSource; - if (pack.getContext().has(VanillaBiomeProperties.class)) { - vanillaWorldProperties = pack.getContext().get(VanillaWorldProperties.class); - } else { - vanillaWorldProperties = new VanillaWorldProperties(); - } } @Override @@ -117,7 +113,7 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun @Override public int getWorldHeight() { - return vanillaWorldProperties.getHeight().getMax(); + return settings.value().generationShapeConfig().height(); } @@ -177,15 +173,14 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun @Override public int getSeaLevel() { - return vanillaWorldProperties.getSealevel(); + return settings.value().seaLevel(); } @Override public int getMinimumY() { - return vanillaWorldProperties.getHeight().getMin(); + return settings.value().generationShapeConfig().minimumY(); } - @Override public int getHeight(int x, int z, Type heightmap, HeightLimitView height, NoiseConfig noiseConfig) { WorldProperties properties = MinecraftAdapter.adapt(height, SeedHack.getSeed(noiseConfig.getMultiNoiseSampler())); @@ -223,13 +218,7 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun this.pack = pack; this.delegate = pack.getGeneratorProvider().newInstance(pack); biomeSource.setPack(pack); - - if (pack.getContext().has(VanillaBiomeProperties.class)) { - vanillaWorldProperties = pack.getContext().get(VanillaWorldProperties.class); - } else { - vanillaWorldProperties = new VanillaWorldProperties(); - } - + logger.debug("Loading world with config pack {}", pack.getID()); } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java index e47ebb4f4..f1c2031b8 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java @@ -24,6 +24,7 @@ import net.minecraft.world.biome.Biome.Builder; import net.minecraft.world.biome.BiomeEffects; import net.minecraft.world.biome.GenerationSettings; +import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.gen.feature.ConfiguredFeature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -109,10 +110,14 @@ public final class MinecraftUtil { TerraIntProvider.TERRA_RANGE_TYPE_TO_INT_PROVIDER_TYPE.put(ConstantRange.class, CONSTANT); } - public static RegistryKey registerKey(Identifier identifier) { + public static RegistryKey registerBiomeKey(Identifier identifier) { return RegistryKey.of(RegistryKeys.BIOME, identifier); } + public static RegistryKey registerDimensionTypeKey(Identifier identifier) { + return RegistryKey.of(RegistryKeys.DIMENSION_TYPE, identifier); + } + public static Biome createBiome(com.dfsek.terra.api.world.biome.Biome biome, Biome vanilla, VanillaBiomeProperties vanillaBiomeProperties) { GenerationSettings.Builder generationSettings = new GenerationSettings.Builder(); diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java index 6270ac0b9..9cf37a4a4 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java @@ -26,39 +26,12 @@ import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.mod.ModPlatform; import com.dfsek.terra.mod.generation.MinecraftChunkGeneratorWrapper; import com.dfsek.terra.mod.generation.TerraBiomeSource; -import net.minecraft.registry.Registry; -import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.util.Identifier; + import net.minecraft.world.biome.source.MultiNoiseBiomeSource; import net.minecraft.world.biome.source.MultiNoiseBiomeSourceParameterList; import net.minecraft.world.biome.source.MultiNoiseBiomeSourceParameterLists; import net.minecraft.world.biome.source.TheEndBiomeSource; -import net.minecraft.world.dimension.DimensionOptions; -import net.minecraft.world.dimension.DimensionType; -import net.minecraft.world.dimension.DimensionTypes; -import net.minecraft.world.gen.WorldPreset; -import net.minecraft.world.gen.WorldPresets; -import net.minecraft.world.gen.chunk.ChunkGenerator; -import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; -import net.minecraft.world.gen.chunk.FlatChunkGenerator; -import net.minecraft.world.gen.chunk.FlatChunkGeneratorConfig; import net.minecraft.world.gen.chunk.NoiseChunkGenerator; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Optional; - -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.terra.mod.ModPlatform; -import com.dfsek.terra.mod.generation.MinecraftChunkGeneratorWrapper; -import com.dfsek.terra.mod.generation.TerraBiomeSource; - - public class PresetUtil { @@ -72,7 +45,13 @@ public class PresetUtil { platform.multiNoiseBiomeSourceParameterListRegistry(); - RegistryEntry overworldDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.OVERWORLD).orElseThrow(); + DimensionType dimensionType = DimensionUtil.createDimension(pack, platform); + RegistryKey dimensionTypeRegistryKey = MinecraftUtil.registerDimensionTypeKey(new Identifier("overworld")); + + Registry.registerReference(dimensionTypeRegistry, dimensionTypeRegistryKey, dimensionType); + + RegistryEntry dimensionTypeRegistryEntry = dimensionTypeRegistry.getEntry(dimensionType); + RegistryEntry overworld = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.OVERWORLD) .orElseThrow(); @@ -85,7 +64,7 @@ public class PresetUtil { TerraBiomeSource biomeSource = new TerraBiomeSource(pack); ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(biomeSource, pack, overworld); - DimensionOptions dimensionOptions = new DimensionOptions(overworldDimensionType, generator); + DimensionOptions dimensionOptions = new DimensionOptions(dimensionTypeRegistryEntry, generator); HashMap, DimensionOptions> dimensionMap = new HashMap<>(); @@ -114,6 +93,11 @@ public class PresetUtil { metaPack.packs().forEach((key, pack) -> { Identifier demensionIdentifier = new Identifier(key); DimensionType dimensionType = DimensionUtil.createDimension(pack, platform); + RegistryKey dimensionTypeRegistryKey = MinecraftUtil.registerDimensionTypeKey(new Identifier("terra", pack.getID().toLowerCase( + Locale.ROOT))); + + Registry.registerReference(dimensionTypeRegistry, dimensionTypeRegistryKey, dimensionType); + RegistryEntry dimensionTypeRegistryEntry = dimensionTypeRegistry.getEntry(dimensionType); TerraBiomeSource biomeSource = new TerraBiomeSource(pack); diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java index 5d5ab11c0..e02159070 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java @@ -65,7 +65,7 @@ public final class BiomeUtil { .orElseThrow()); } else { ((ProtoPlatformBiome) biome.getPlatformBiome()).setDelegate(Registry.registerReference(registry, - MinecraftUtil.registerKey(identifier) + MinecraftUtil.registerBiomeKey(identifier) .getValue(), minecraftBiome)); }