From 0146e82866cb1d38194e40e870e8fbf97d9cf2e7 Mon Sep 17 00:00:00 2001 From: George Paton Date: Sun, 7 Apr 2024 13:41:48 +1000 Subject: [PATCH] Change structure/dungeon configs to be trinary (true|false|flag) --- src/main/java/com/hbm/config/CommonConfig.java | 17 +++++++++++++++++ src/main/java/com/hbm/config/GeneralConfig.java | 7 +++++-- .../java/com/hbm/config/StructureConfig.java | 7 +++++-- src/main/java/com/hbm/lib/HbmWorldGen.java | 4 +++- .../com/hbm/world/gen/NTMWorldGenerator.java | 10 ++++++++-- 5 files changed, 38 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/hbm/config/CommonConfig.java b/src/main/java/com/hbm/config/CommonConfig.java index 46acd791a..7fce253e8 100644 --- a/src/main/java/com/hbm/config/CommonConfig.java +++ b/src/main/java/com/hbm/config/CommonConfig.java @@ -87,4 +87,21 @@ public class CommonConfig { return prop.getStringList(); } + public static int parseStructureFlag(String flag) { + if(flag == null) flag = ""; + + switch(flag.toLowerCase(Locale.US)) { + case "true": + case "on": + case "yes": + return 1; + case "false": + case "off": + case "no": + return 0; + default: + return 2; + } + } + } diff --git a/src/main/java/com/hbm/config/GeneralConfig.java b/src/main/java/com/hbm/config/GeneralConfig.java index 99eb1fed8..13f5e37dd 100644 --- a/src/main/java/com/hbm/config/GeneralConfig.java +++ b/src/main/java/com/hbm/config/GeneralConfig.java @@ -9,7 +9,7 @@ public class GeneralConfig { public static boolean enableDebugMode = true; public static boolean enableMycelium = false; public static boolean enablePlutoniumOre = false; - public static boolean enableDungeons = true; + public static int enableDungeons = 2; public static boolean enableMDOres = true; public static boolean enableMines = true; public static boolean enableRad = true; @@ -73,7 +73,10 @@ public class GeneralConfig { enableDebugMode = config.get(CATEGORY_GENERAL, "1.00_enableDebugMode", false, "Enable debugging mode").getBoolean(false); enableMycelium = config.get(CATEGORY_GENERAL, "1.01_enableMyceliumSpread", false, "Allows glowing mycelium to spread").getBoolean(false); enablePlutoniumOre = config.get(CATEGORY_GENERAL, "1.02_enablePlutoniumNetherOre", false, "Enables plutonium ore generation in the nether").getBoolean(false); - enableDungeons = config.get(CATEGORY_GENERAL, "1.03_enableDungeonSpawn", true, "Allows structures and dungeons to spawn").getBoolean(true); + + String unparsedDungeonFlag = config.get(CATEGORY_GENERAL, "1.03_enableDungeonSpawn", "flag", "Allows structures and dungeons to spawn. Valid values are true|false|flag - flag will respect the \"Generate Structures\" world flag.").getString(); + enableDungeons = CommonConfig.parseStructureFlag(unparsedDungeonFlag); + enableMDOres = config.get(CATEGORY_GENERAL, "1.04_enableOresInModdedDimensions", true, "Allows NTM ores to generate in modded dimensions").getBoolean(true); enableMines = config.get(CATEGORY_GENERAL, "1.05_enableLandmineSpawn", true, "Allows landmines to generate").getBoolean(true); enableRad = config.get(CATEGORY_GENERAL, "1.06_enableRadHotspotSpawn", true, "Allows radiation hotspots to generate").getBoolean(true); diff --git a/src/main/java/com/hbm/config/StructureConfig.java b/src/main/java/com/hbm/config/StructureConfig.java index 9d6ad3cc0..944a7cbb0 100644 --- a/src/main/java/com/hbm/config/StructureConfig.java +++ b/src/main/java/com/hbm/config/StructureConfig.java @@ -8,7 +8,7 @@ import net.minecraftforge.common.config.Configuration; public class StructureConfig { - public static boolean enableStructures = true; + public static int enableStructures = 2; public static int structureMinChunks = 8; public static int structureMaxChunks = 24; @@ -18,7 +18,10 @@ public class StructureConfig { public static void loadFromConfig(Configuration config) { final String CATEGORY_STRUCTURES = CommonConfig.CATEGORY_STRUCTURES; - enableStructures = CommonConfig.createConfigBool(config, CATEGORY_STRUCTURES, "5.00_enableStructures", "Switch for whether structures using the MapGenStructure system spawn.", true); + + String unparsedStructureFlag = CommonConfig.createConfigString(config, CATEGORY_STRUCTURES, "5.00_enableStructures", "Flag for whether modern NTM structures will spawn. Valid values are true|false|flag - flag will respect the \"Generate Structures\" world flag.", "flag"); + + enableStructures = CommonConfig.parseStructureFlag(unparsedStructureFlag); structureMinChunks = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.01_structureMinChunks", "Minimum non-zero distance between structures in chunks (Settings lower than 8 may be problematic).", 8); structureMaxChunks = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.02_structureMaxChunks", "Maximum non-zero distance between structures in chunks.", 24); diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index e6029be87..f8ee016ff 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -220,8 +220,10 @@ public class HbmWorldGen implements IWorldGenerator { } boolean enableDungeons = world.getWorldInfo().isMapFeaturesEnabled(); + if(GeneralConfig.enableDungeons == 1) enableDungeons = true; + if(GeneralConfig.enableDungeons == 0) enableDungeons = false; - if(GeneralConfig.enableDungeons && world.provider.dimensionId == 0 && enableDungeons) { + if(enableDungeons && world.provider.dimensionId == 0) { if(MobConfig.enableHives && rand.nextInt(MobConfig.hiveSpawn) == 0) { int x = i + rand.nextInt(16) + 8; diff --git a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java index 34efa8ea1..6fb9e7fd1 100644 --- a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java +++ b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java @@ -49,7 +49,8 @@ public class NTMWorldGenerator implements IWorldGenerator { setRandomSeed(event.world, event.chunkX, event.chunkZ); //Set random for population down the line. hasPopulationEvent = true; - if(!StructureConfig.enableStructures || !event.world.getWorldInfo().isMapFeaturesEnabled()) return; + if(StructureConfig.enableStructures == 0) return; + if(StructureConfig.enableStructures == 2 && !event.world.getWorldInfo().isMapFeaturesEnabled()) return; switch (event.world.provider.dimensionId) { case -1: @@ -94,7 +95,12 @@ public class NTMWorldGenerator implements IWorldGenerator { private void generateSurface(World world, Random rand, IChunkProvider chunkGenerator, IChunkProvider chunkProvider, int chunkX, int chunkZ) { if(!hasPopulationEvent) { //If we've failed to generate any structures (flatlands) setRandomSeed(world, chunkX, chunkZ); //Reset the random seed to compensate - if(StructureConfig.enableStructures) generateOverworldStructures(world, chunkGenerator, chunkX, chunkZ); //Do it through the post-population generation directly + + boolean enableStructures = world.getWorldInfo().isMapFeaturesEnabled(); + if(StructureConfig.enableStructures == 1) enableStructures = true; + if(StructureConfig.enableStructures == 0) enableStructures = false; + + if(enableStructures) generateOverworldStructures(world, chunkGenerator, chunkX, chunkZ); //Do it through the post-population generation directly } /* biome dictionary my beloved <3