From 56b428d501f56e6e3c0b64118a10bb1952605c7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Tue, 12 Dec 2023 17:19:32 -0700 Subject: [PATCH] refactor --- .../dfsek/terra/mod/util/DimensionUtil.java | 9 +-- .../com/dfsek/terra/mod/util/PresetUtil.java | 79 ++++++++++--------- 2 files changed, 42 insertions(+), 46 deletions(-) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java index 4d604da29..37f1442b7 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java @@ -25,14 +25,9 @@ import java.util.OptionalLong; public class DimensionUtil { - public static DimensionType createDimension(ConfigPack pack, ModPlatform platform) { - VanillaWorldProperties vanillaWorldProperties; + public static DimensionType createDimension(VanillaWorldProperties vanillaWorldProperties, ModPlatform platform) { + MonsterSettingsConfig monsterSettingsConfig; - if (pack.getContext().has(VanillaWorldProperties.class)) { - vanillaWorldProperties = pack.getContext().get(VanillaWorldProperties.class); - } else { - vanillaWorldProperties = new VanillaWorldProperties(); - } if (vanillaWorldProperties.getMonsterSettings() != null) { monsterSettingsConfig = vanillaWorldProperties.getMonsterSettings(); } else { 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 9cf37a4a4..95d1184df 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 @@ -1,5 +1,7 @@ package com.dfsek.terra.mod.util; +import com.dfsek.terra.mod.config.VanillaWorldProperties; + import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; @@ -45,30 +47,14 @@ public class PresetUtil { platform.multiNoiseBiomeSourceParameterListRegistry(); - 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(); - - Identifier generatorID = Identifier.of("terra", pack.getID().toLowerCase(Locale.ROOT) + "/" + pack.getNamespace().toLowerCase( Locale.ROOT)); PRESETS.add(generatorID); - TerraBiomeSource biomeSource = new TerraBiomeSource(pack); - ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(biomeSource, pack, overworld); - - DimensionOptions dimensionOptions = new DimensionOptions(dimensionTypeRegistryEntry, generator); - HashMap, DimensionOptions> dimensionMap = new HashMap<>(); - dimensionMap.put(DimensionOptions.OVERWORLD, dimensionOptions); + insertCustom(platform, "minecraft:overworld", pack, dimensionTypeRegistry, chunkGeneratorSettingsRegistry, dimensionMap); insertDefaults(dimensionTypeRegistry, chunkGeneratorSettingsRegistry, multiNoiseBiomeSourceParameterLists, platform.biomeRegistry(), dimensionMap); @@ -91,28 +77,7 @@ public class PresetUtil { HashMap, DimensionOptions> dimensionMap = new HashMap<>(); 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); - - RegistryEntry generatorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get(demensionIdentifier)); - if (key.equals("minecraft:the_nether") || key.equals("minecraft:the_end")) { //TODO REMOVE WHEN ADDING CUSTOM GEN SETTINGS - Identifier demensionIdentifier2 = new Identifier(key.replace("the_", "")); - generatorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get(demensionIdentifier2)); - } - - ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(biomeSource, pack, generatorSettings); - - DimensionOptions dimensionOptions = new DimensionOptions(dimensionTypeRegistryEntry, generator); - RegistryKey dimensionOptionsRegistryKey = RegistryKey.of(RegistryKeys.DIMENSION, demensionIdentifier); - dimensionMap.put(dimensionOptionsRegistryKey, dimensionOptions); + insertCustom(platform, key, pack, dimensionTypeRegistry, chunkGeneratorSettingsRegistry, dimensionMap); }); insertDefaults(dimensionTypeRegistry, chunkGeneratorSettingsRegistry, multiNoiseBiomeSourceParameterLists, platform.biomeRegistry(), dimensionMap); @@ -122,6 +87,42 @@ public class PresetUtil { return Pair.of(generatorID, preset); } + private static void insertCustom(ModPlatform platform, String key, ConfigPack pack, Registry dimensionTypeRegistry, + Registry chunkGeneratorSettingsRegistry, + HashMap, DimensionOptions> dimensionMap) { + Identifier demensionIdentifier = new Identifier(key); + + VanillaWorldProperties vanillaWorldProperties; + + if (pack.getContext().has(VanillaWorldProperties.class)) { + vanillaWorldProperties = pack.getContext().get(VanillaWorldProperties.class); + } else { + vanillaWorldProperties = new VanillaWorldProperties(); + } + + DimensionType dimensionType = DimensionUtil.createDimension(vanillaWorldProperties, 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); + + RegistryEntry generatorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get(demensionIdentifier)); + if (key.equals("minecraft:the_nether") || key.equals("minecraft:the_end")) { //TODO REMOVE WHEN ADDING CUSTOM GEN SETTINGS + Identifier demensionIdentifier2 = new Identifier(key.replace("the_", "")); + generatorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get(demensionIdentifier2)); + } + + ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(biomeSource, pack, generatorSettings); + + DimensionOptions dimensionOptions = new DimensionOptions(dimensionTypeRegistryEntry, generator); + RegistryKey dimensionOptionsRegistryKey = RegistryKey.of(RegistryKeys.DIMENSION, demensionIdentifier); + dimensionMap.put(dimensionOptionsRegistryKey, dimensionOptions); + } + private static void insertDefaults(Registry dimensionTypeRegistry, Registry chunkGeneratorSettingsRegistry, Registry multiNoiseBiomeSourceParameterLists, Registry biomeRegistry, HashMap, DimensionOptions> map) { if (!map.containsKey(DimensionOptions.OVERWORLD)) { RegistryEntry overworldDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.OVERWORLD).orElseThrow();