From 184ae7fd90d7c55bff34339924e598951e7b9dbb Mon Sep 17 00:00:00 2001 From: brandyn Date: Tue, 16 Jun 2026 22:52:46 +0100 Subject: [PATCH 1/3] Add ASM configs --- .../NovaCraft/BookshelfPowerTransformer.java | 7 +- .../java/com/NovaCraft/CoremodConfig.java | 140 ++++++++++++++++++ .../com/NovaCraft/SpiderSpeedTransformer.java | 7 +- .../java/com/NovaCraft/config/Configs.java | 18 +++ 4 files changed, 170 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/NovaCraft/CoremodConfig.java diff --git a/src/main/java/com/NovaCraft/BookshelfPowerTransformer.java b/src/main/java/com/NovaCraft/BookshelfPowerTransformer.java index 05732040..04654b91 100644 --- a/src/main/java/com/NovaCraft/BookshelfPowerTransformer.java +++ b/src/main/java/com/NovaCraft/BookshelfPowerTransformer.java @@ -26,6 +26,11 @@ public byte[] transform(String className, String transformedClassName, byte[] or return originalClassBytes; } + CoremodConfig.ensureLoaded(); + if (!CoremodConfig.enableBookshelfPowerTransformer) { + return originalClassBytes; + } + System.out.println("[NovaCraft] Patching ContainerEnchantment: " + transformedClassName); //No idea what this is doing beyond this point other than finding the correct strings in the classes above and altering them @@ -49,7 +54,7 @@ public void visitMethodInsn(int opcode, String calledClassOwner, String calledMe //Target only the call to EnchantmentHelper.calcItemStackEnchantability if (calledClassOwner.equals("net/minecraft/enchantment/EnchantmentHelper") && calledMethodName.equals("calcItemStackEnchantability")) { super.visitInsn(Opcodes.SWAP); - super.visitInsn(Opcodes.ICONST_2); + super.visitLdcInsn(Integer.valueOf(CoremodConfig.bookshelfPowerDivisor)); super.visitInsn(Opcodes.IDIV); super.visitInsn(Opcodes.SWAP); } diff --git a/src/main/java/com/NovaCraft/CoremodConfig.java b/src/main/java/com/NovaCraft/CoremodConfig.java new file mode 100644 index 00000000..2ea5317f --- /dev/null +++ b/src/main/java/com/NovaCraft/CoremodConfig.java @@ -0,0 +1,140 @@ +package com.NovaCraft; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; + +final class CoremodConfig { + private static final String CONFIG_DIRECTORY = "config/NovaCraft"; + private static final String CONFIG_FILE_NAME = "NovaCraft_Base.cfg"; + + private static final boolean DEFAULT_ENABLE_BOOKSHELF_POWER_TRANSFORMER = true; + private static final int DEFAULT_BOOKSHELF_POWER_DIVISOR = 2; + private static final boolean DEFAULT_ENABLE_SPIDER_SPEED_TRANSFORMER = true; + private static final double DEFAULT_SPIDER_MOVEMENT_SPEED_MULTIPLIER = 2.0D; + + static boolean enableBookshelfPowerTransformer = DEFAULT_ENABLE_BOOKSHELF_POWER_TRANSFORMER; + static int bookshelfPowerDivisor = DEFAULT_BOOKSHELF_POWER_DIVISOR; + static boolean enableSpiderSpeedTransformer = DEFAULT_ENABLE_SPIDER_SPEED_TRANSFORMER; + static double spiderMovementSpeedMultiplier = DEFAULT_SPIDER_MOVEMENT_SPEED_MULTIPLIER; + + private static boolean loaded; + + private CoremodConfig() { + } + + static synchronized void ensureLoaded() { + if (!loaded) { + load(); + } + } + + private static void load() { + enableBookshelfPowerTransformer = DEFAULT_ENABLE_BOOKSHELF_POWER_TRANSFORMER; + bookshelfPowerDivisor = DEFAULT_BOOKSHELF_POWER_DIVISOR; + enableSpiderSpeedTransformer = DEFAULT_ENABLE_SPIDER_SPEED_TRANSFORMER; + spiderMovementSpeedMultiplier = DEFAULT_SPIDER_MOVEMENT_SPEED_MULTIPLIER; + + File configFile = new File(CONFIG_DIRECTORY, CONFIG_FILE_NAME); + if (!configFile.exists()) { + loaded = true; + return; + } + + BufferedReader reader = null; + + try { + reader = new BufferedReader(new FileReader(configFile)); + String line; + + while ((line = reader.readLine()) != null) { + parseLine(line.trim()); + } + } catch (IOException e) { + log("Failed to load ASM config from NovaCraft_Base.cfg, using defaults. " + e.getMessage()); + } finally { + if (reader != null) { + try { + reader.close(); + } catch (IOException ignored) { + } + } + } + + loaded = true; + } + + private static void parseLine(String line) { + if (line.length() < 4 || line.startsWith("#")) { + return; + } + + if (line.charAt(1) != ':') { + return; + } + + int equalsIndex = line.indexOf('='); + if (equalsIndex <= 2) { + return; + } + + String key = line.substring(2, equalsIndex).trim(); + String rawValue = line.substring(equalsIndex + 1).trim(); + + if ("enableBookshelfPowerTransformer".equals(key)) { + enableBookshelfPowerTransformer = parseBoolean(key, rawValue, DEFAULT_ENABLE_BOOKSHELF_POWER_TRANSFORMER); + } else if ("bookshelfPowerDivisor".equals(key)) { + bookshelfPowerDivisor = parseInt(key, rawValue, DEFAULT_BOOKSHELF_POWER_DIVISOR, 1); + } else if ("enableSpiderSpeedTransformer".equals(key)) { + enableSpiderSpeedTransformer = parseBoolean(key, rawValue, DEFAULT_ENABLE_SPIDER_SPEED_TRANSFORMER); + } else if ("spiderMovementSpeedMultiplier".equals(key)) { + spiderMovementSpeedMultiplier = parseDouble(key, rawValue, DEFAULT_SPIDER_MOVEMENT_SPEED_MULTIPLIER, 0.0D); + } + } + + private static boolean parseBoolean(String key, String rawValue, boolean defaultValue) { + if ("true".equalsIgnoreCase(rawValue) || "false".equalsIgnoreCase(rawValue)) { + return Boolean.parseBoolean(rawValue); + } + + log("Invalid boolean for " + key + ": " + rawValue + ". Using default " + defaultValue + "."); + return defaultValue; + } + + private static int parseInt(String key, String rawValue, int defaultValue, int minValue) { + try { + int value = Integer.parseInt(rawValue.trim()); + + if (value < minValue) { + log("Value for " + key + " must be at least " + minValue + ". Using default " + defaultValue + "."); + return defaultValue; + } + + return value; + } catch (NumberFormatException e) { + log("Invalid integer for " + key + ": " + rawValue + ". Using default " + defaultValue + "."); + return defaultValue; + } + } + + private static double parseDouble(String key, String rawValue, double defaultValue, double minValue) { + try { + double value = Double.parseDouble(rawValue.trim()); + + if (Double.isNaN(value) || Double.isInfinite(value) || value < minValue) { + log("Value for " + key + " must be a finite number greater than or equal to " + minValue + ". Using default " + defaultValue + "."); + return defaultValue; + } + + return value; + } catch (NumberFormatException e) { + log("Invalid decimal for " + key + ": " + rawValue + ". Using default " + defaultValue + "."); + return defaultValue; + } + } + + private static void log(String message) { + System.out.println("[NovaCraft][ASM Config] " + message); + } +} diff --git a/src/main/java/com/NovaCraft/SpiderSpeedTransformer.java b/src/main/java/com/NovaCraft/SpiderSpeedTransformer.java index 6508e3bb..56e99795 100644 --- a/src/main/java/com/NovaCraft/SpiderSpeedTransformer.java +++ b/src/main/java/com/NovaCraft/SpiderSpeedTransformer.java @@ -13,6 +13,11 @@ public byte[] transform(String name, String transformedName, byte[] basicClass) if (!transformedName.equals("net.minecraft.entity.monster.EntitySpider") && !transformedName.equals("net.minecraft.entity.monster.EntityCaveSpider")) return basicClass; + CoremodConfig.ensureLoaded(); + if (!CoremodConfig.enableSpiderSpeedTransformer) { + return basicClass; + } + System.out.println("[SpiderTransformer] Patching EntitySpider..."); ClassNode classNode = new ClassNode(); @@ -36,7 +41,7 @@ public byte[] transform(String name, String transformedName, byte[] basicClass) if (value == 0.800000011920929D) { - ldc.cst = 1.600000023841858D; + ldc.cst = value * CoremodConfig.spiderMovementSpeedMultiplier; } } } diff --git a/src/main/java/com/NovaCraft/config/Configs.java b/src/main/java/com/NovaCraft/config/Configs.java index f1a4640c..8f9f1458 100644 --- a/src/main/java/com/NovaCraft/config/Configs.java +++ b/src/main/java/com/NovaCraft/config/Configs.java @@ -15,6 +15,10 @@ public class Configs { public static boolean disableEnchantedGoldenAppleRecipe; public static boolean enableWeaponsToAllignWithVanilla; public static boolean enableHalfNaturalRegenInEnd; + public static boolean enableBookshelfPowerTransformer; + public static int bookshelfPowerDivisor; + public static boolean enableSpiderSpeedTransformer; + public static double spiderMovementSpeedMultiplier; //Vanilla Ore Generation Alterations public static boolean disableRegularVanillaGen; @@ -142,6 +146,20 @@ public static void loadConfigs(File configFile) { enableDebugMode = conf.getBoolean("enableDebugMode", "Important Options", false, "Enables log messages for location of structures generating or if a crash was prevented."); enableNewCaveSounds = conf.getBoolean("enableNewCaveSounds", "Important Options", true, "Enables New Cave Sounds."); enableHalfNaturalRegenInEnd = conf.getBoolean("enableHalfNaturalRegenInEnd", "Important Options", true, "Enables Half Natural Regeneration speed for the player while in the End."); + + //Important Options + enableBookshelfPowerTransformer = conf.getBoolean("enableBookshelfPowerTransformer", "Important Options", true, "Enables the startup ASM patch that changes enchantment table bookshelf power."); + prop = conf.get("Important Options", "bookshelfPowerDivisor", 2); + prop.comment = "Startup ASM option. Divides the bookshelf count before enchantability is calculated. 1 = vanilla, 2 = half power."; + bookshelfPowerDivisor = Math.max(1, prop.getInt(2)); + enableSpiderSpeedTransformer = conf.getBoolean("enableSpiderSpeedTransformer", "Important Options", true, "Enables the startup ASM patch that changes spider and cave spider movement speed."); + prop = conf.get("Important Options", "spiderMovementSpeedMultiplier", 2.0D); + prop.comment = "Startup ASM option. Multiplies vanilla spider movement speed. 1.0 = vanilla, 2.0 = double speed, 0.5 = half speed."; + spiderMovementSpeedMultiplier = prop.getDouble(2.0D); + if (spiderMovementSpeedMultiplier <= 0.0D || Double.isNaN(spiderMovementSpeedMultiplier) || Double.isInfinite(spiderMovementSpeedMultiplier)) { + spiderMovementSpeedMultiplier = 2.0D; + } + enableStrongholdAlterations = conf.getBoolean("enableStrongholdAlterations", "Important Options", true, "Enables Stronghold Alterations."); enableMaxStrongholdSpawners = conf.getBoolean("enableMaxStrongholdSpawners", "Misc", false, "Enables that most rooms in the stronghold have a spawner in them."); enableCrackedEndPortalFrame = conf.getBoolean("enableCrackedEndPortalFrame", "Misc", true, "Enables that several end portal frames are cracked and must be repaired in the Stronghold."); From a680fa1ea666ce0ebd10f6872269572ebdcdd930 Mon Sep 17 00:00:00 2001 From: brandyn Date: Sun, 9 Aug 2026 02:59:50 +0100 Subject: [PATCH 2/3] optimize sculk mineshaft --- src/main/java/com/NovaCraft/NovaCraft.java | 4 ++- .../StructureSculkMineshaftPieces.java | 16 +++++----- .../StructureSculkMineshaftStart.java | 2 -- .../WorldGenSculkedMineshaftInjector.java | 32 +++---------------- 4 files changed, 15 insertions(+), 39 deletions(-) diff --git a/src/main/java/com/NovaCraft/NovaCraft.java b/src/main/java/com/NovaCraft/NovaCraft.java index 4ecc3bca..a571a8db 100644 --- a/src/main/java/com/NovaCraft/NovaCraft.java +++ b/src/main/java/com/NovaCraft/NovaCraft.java @@ -39,6 +39,7 @@ import com.NovaCraft.world.nether.structure.StructureNovaCraftNetherBridgePieces; import com.NovaCraft.world.nether.structure.MapGenNetherBridgeNovaCraft.Start; import com.NovaCraft.world.sculkshaft.WorldGenSculkedMineshaftInjector; +import com.NovaCraft.world.sculkshaft.StructureSculkMineshaftPieces; import com.NovaCraft.world.stronghold.*; import com.NovaCraft.world.structure.WorldGenRavineInjector; import com.NovaCraftBlocks.NovaCraftBlocks; @@ -159,7 +160,8 @@ public void init(FMLInitializationEvent event) { } if (ConfigsStructures.enableSculkInfestedMineshaft) { - MinecraftForge.EVENT_BUS.register(new WorldGenSculkedMineshaftInjector()); + StructureSculkMineshaftPieces.registerStructurePieces(); + MinecraftForge.TERRAIN_GEN_BUS.register(new WorldGenSculkedMineshaftInjector()); } MinecraftForge.EVENT_BUS.register(new WorldGenRavineInjector()); GameRegistry.registerWorldGenerator(new MeteorCraterGen(), 0); diff --git a/src/main/java/com/NovaCraft/world/sculkshaft/StructureSculkMineshaftPieces.java b/src/main/java/com/NovaCraft/world/sculkshaft/StructureSculkMineshaftPieces.java index a54f6420..99357baa 100644 --- a/src/main/java/com/NovaCraft/world/sculkshaft/StructureSculkMineshaftPieces.java +++ b/src/main/java/com/NovaCraft/world/sculkshaft/StructureSculkMineshaftPieces.java @@ -1,7 +1,7 @@ package com.NovaCraft.world.sculkshaft; import java.util.Iterator; -import java.util.LinkedList; +import java.util.ArrayList; import java.util.List; import java.util.Random; import com.NovaCraft.config.Configs; @@ -27,11 +27,11 @@ public class StructureSculkMineshaftPieces { public static void registerStructurePieces() { - MapGenStructureIO.func_143031_a(StructureSculkMineshaftPieces.Corridor.class, "MineshaftCorridor"); - MapGenStructureIO.func_143031_a(StructureSculkMineshaftPieces.Cross.class, "MineshaftCorridorCrossing"); - MapGenStructureIO.func_143031_a(StructureSculkMineshaftPieces.Room.class, "MineshaftCorridorRoom"); - MapGenStructureIO.func_143031_a(StructureSculkMineshaftPieces.Stairs.class, "MineshaftCorridorStairs"); - MapGenStructureIO.registerStructure(StructureSculkMineshaftStart.class, "Mineshaft"); + MapGenStructureIO.func_143031_a(StructureSculkMineshaftPieces.Corridor.class, "NCSMC"); + MapGenStructureIO.func_143031_a(StructureSculkMineshaftPieces.Cross.class, "NCSMX"); + MapGenStructureIO.func_143031_a(StructureSculkMineshaftPieces.Room.class, "NCSMR"); + MapGenStructureIO.func_143031_a(StructureSculkMineshaftPieces.Stairs.class, "NCSMS"); + MapGenStructureIO.registerStructure(StructureSculkMineshaftStart.class, "NCSM"); } private static StructureComponent getRandomComponent(List list, Random random, int p_78815_2_, int p_78815_3_, int p_78815_4_, int p_78815_5_, int p_78815_6_) @@ -774,7 +774,7 @@ public boolean addComponentParts(World world, Random random, StructureBoundingBo public static class Room extends StructureComponent { - private List roomsLinkedToTheRoom = new LinkedList(); + private List roomsLinkedToTheRoom = new ArrayList(); public Room() {} @@ -1006,4 +1006,4 @@ public boolean addComponentParts(World world, Random random, StructureBoundingBo } -} \ No newline at end of file +} diff --git a/src/main/java/com/NovaCraft/world/sculkshaft/StructureSculkMineshaftStart.java b/src/main/java/com/NovaCraft/world/sculkshaft/StructureSculkMineshaftStart.java index 1ce67d12..c029c5f3 100644 --- a/src/main/java/com/NovaCraft/world/sculkshaft/StructureSculkMineshaftStart.java +++ b/src/main/java/com/NovaCraft/world/sculkshaft/StructureSculkMineshaftStart.java @@ -13,8 +13,6 @@ public StructureSculkMineshaftStart() { public StructureSculkMineshaftStart(World world, Random rand, int chunkX, int chunkZ) { super(chunkX, chunkZ); - StructureSculkMineshaftPieces.registerStructurePieces(); - StructureSculkMineshaftPieces.Room room = new StructureSculkMineshaftPieces.Room(0, rand, (chunkX << 4) + 2, (chunkZ << 4) + 2); this.components.add(room); diff --git a/src/main/java/com/NovaCraft/world/sculkshaft/WorldGenSculkedMineshaftInjector.java b/src/main/java/com/NovaCraft/world/sculkshaft/WorldGenSculkedMineshaftInjector.java index f940f0e8..4edf584e 100644 --- a/src/main/java/com/NovaCraft/world/sculkshaft/WorldGenSculkedMineshaftInjector.java +++ b/src/main/java/com/NovaCraft/world/sculkshaft/WorldGenSculkedMineshaftInjector.java @@ -1,38 +1,14 @@ package com.NovaCraft.world.sculkshaft; -import java.lang.reflect.Field; -import net.minecraft.world.WorldServer; -import net.minecraft.world.gen.ChunkProviderGenerate; -import net.minecraft.world.gen.ChunkProviderServer; -import net.minecraft.world.gen.structure.MapGenMineshaft; -import net.minecraftforge.event.world.WorldEvent; import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.event.terraingen.InitMapGenEvent; public class WorldGenSculkedMineshaftInjector { @SubscribeEvent - public void onWorldLoad(WorldEvent.Load event) { - if (!(event.world instanceof WorldServer)) return; - - WorldServer world = (WorldServer) event.world; - ChunkProviderServer cps = world.theChunkProviderServer; - - if (!(cps.currentChunkProvider instanceof ChunkProviderGenerate)) return; - - ChunkProviderGenerate gen = (ChunkProviderGenerate) cps.currentChunkProvider; - - try { - for (Field field : ChunkProviderGenerate.class.getDeclaredFields()) { - field.setAccessible(true); - Object value = field.get(gen); - - if (value instanceof MapGenMineshaft) { - field.set(gen, new MapGenSculkMineshaft()); - return; - } - } - } catch (Exception e) { - e.printStackTrace(); + public void onInitMapGen(InitMapGenEvent event) { + if (event.type == InitMapGenEvent.EventType.MINESHAFT) { + event.newGen = new MapGenSculkMineshaft(); } } } From 971ca89d45cfad702b7abbd4d5bcf4bf4b9eea0f Mon Sep 17 00:00:00 2001 From: brandyn Date: Sun, 9 Aug 2026 03:00:34 +0100 Subject: [PATCH 3/3] Revert "Add ASM configs" This reverts commit 184ae7fd90d7c55bff34339924e598951e7b9dbb. --- .../NovaCraft/BookshelfPowerTransformer.java | 7 +- .../java/com/NovaCraft/CoremodConfig.java | 140 ------------------ .../com/NovaCraft/SpiderSpeedTransformer.java | 7 +- .../java/com/NovaCraft/config/Configs.java | 18 --- 4 files changed, 2 insertions(+), 170 deletions(-) delete mode 100644 src/main/java/com/NovaCraft/CoremodConfig.java diff --git a/src/main/java/com/NovaCraft/BookshelfPowerTransformer.java b/src/main/java/com/NovaCraft/BookshelfPowerTransformer.java index 04654b91..05732040 100644 --- a/src/main/java/com/NovaCraft/BookshelfPowerTransformer.java +++ b/src/main/java/com/NovaCraft/BookshelfPowerTransformer.java @@ -26,11 +26,6 @@ public byte[] transform(String className, String transformedClassName, byte[] or return originalClassBytes; } - CoremodConfig.ensureLoaded(); - if (!CoremodConfig.enableBookshelfPowerTransformer) { - return originalClassBytes; - } - System.out.println("[NovaCraft] Patching ContainerEnchantment: " + transformedClassName); //No idea what this is doing beyond this point other than finding the correct strings in the classes above and altering them @@ -54,7 +49,7 @@ public void visitMethodInsn(int opcode, String calledClassOwner, String calledMe //Target only the call to EnchantmentHelper.calcItemStackEnchantability if (calledClassOwner.equals("net/minecraft/enchantment/EnchantmentHelper") && calledMethodName.equals("calcItemStackEnchantability")) { super.visitInsn(Opcodes.SWAP); - super.visitLdcInsn(Integer.valueOf(CoremodConfig.bookshelfPowerDivisor)); + super.visitInsn(Opcodes.ICONST_2); super.visitInsn(Opcodes.IDIV); super.visitInsn(Opcodes.SWAP); } diff --git a/src/main/java/com/NovaCraft/CoremodConfig.java b/src/main/java/com/NovaCraft/CoremodConfig.java deleted file mode 100644 index 2ea5317f..00000000 --- a/src/main/java/com/NovaCraft/CoremodConfig.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.NovaCraft; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; - -final class CoremodConfig { - private static final String CONFIG_DIRECTORY = "config/NovaCraft"; - private static final String CONFIG_FILE_NAME = "NovaCraft_Base.cfg"; - - private static final boolean DEFAULT_ENABLE_BOOKSHELF_POWER_TRANSFORMER = true; - private static final int DEFAULT_BOOKSHELF_POWER_DIVISOR = 2; - private static final boolean DEFAULT_ENABLE_SPIDER_SPEED_TRANSFORMER = true; - private static final double DEFAULT_SPIDER_MOVEMENT_SPEED_MULTIPLIER = 2.0D; - - static boolean enableBookshelfPowerTransformer = DEFAULT_ENABLE_BOOKSHELF_POWER_TRANSFORMER; - static int bookshelfPowerDivisor = DEFAULT_BOOKSHELF_POWER_DIVISOR; - static boolean enableSpiderSpeedTransformer = DEFAULT_ENABLE_SPIDER_SPEED_TRANSFORMER; - static double spiderMovementSpeedMultiplier = DEFAULT_SPIDER_MOVEMENT_SPEED_MULTIPLIER; - - private static boolean loaded; - - private CoremodConfig() { - } - - static synchronized void ensureLoaded() { - if (!loaded) { - load(); - } - } - - private static void load() { - enableBookshelfPowerTransformer = DEFAULT_ENABLE_BOOKSHELF_POWER_TRANSFORMER; - bookshelfPowerDivisor = DEFAULT_BOOKSHELF_POWER_DIVISOR; - enableSpiderSpeedTransformer = DEFAULT_ENABLE_SPIDER_SPEED_TRANSFORMER; - spiderMovementSpeedMultiplier = DEFAULT_SPIDER_MOVEMENT_SPEED_MULTIPLIER; - - File configFile = new File(CONFIG_DIRECTORY, CONFIG_FILE_NAME); - if (!configFile.exists()) { - loaded = true; - return; - } - - BufferedReader reader = null; - - try { - reader = new BufferedReader(new FileReader(configFile)); - String line; - - while ((line = reader.readLine()) != null) { - parseLine(line.trim()); - } - } catch (IOException e) { - log("Failed to load ASM config from NovaCraft_Base.cfg, using defaults. " + e.getMessage()); - } finally { - if (reader != null) { - try { - reader.close(); - } catch (IOException ignored) { - } - } - } - - loaded = true; - } - - private static void parseLine(String line) { - if (line.length() < 4 || line.startsWith("#")) { - return; - } - - if (line.charAt(1) != ':') { - return; - } - - int equalsIndex = line.indexOf('='); - if (equalsIndex <= 2) { - return; - } - - String key = line.substring(2, equalsIndex).trim(); - String rawValue = line.substring(equalsIndex + 1).trim(); - - if ("enableBookshelfPowerTransformer".equals(key)) { - enableBookshelfPowerTransformer = parseBoolean(key, rawValue, DEFAULT_ENABLE_BOOKSHELF_POWER_TRANSFORMER); - } else if ("bookshelfPowerDivisor".equals(key)) { - bookshelfPowerDivisor = parseInt(key, rawValue, DEFAULT_BOOKSHELF_POWER_DIVISOR, 1); - } else if ("enableSpiderSpeedTransformer".equals(key)) { - enableSpiderSpeedTransformer = parseBoolean(key, rawValue, DEFAULT_ENABLE_SPIDER_SPEED_TRANSFORMER); - } else if ("spiderMovementSpeedMultiplier".equals(key)) { - spiderMovementSpeedMultiplier = parseDouble(key, rawValue, DEFAULT_SPIDER_MOVEMENT_SPEED_MULTIPLIER, 0.0D); - } - } - - private static boolean parseBoolean(String key, String rawValue, boolean defaultValue) { - if ("true".equalsIgnoreCase(rawValue) || "false".equalsIgnoreCase(rawValue)) { - return Boolean.parseBoolean(rawValue); - } - - log("Invalid boolean for " + key + ": " + rawValue + ". Using default " + defaultValue + "."); - return defaultValue; - } - - private static int parseInt(String key, String rawValue, int defaultValue, int minValue) { - try { - int value = Integer.parseInt(rawValue.trim()); - - if (value < minValue) { - log("Value for " + key + " must be at least " + minValue + ". Using default " + defaultValue + "."); - return defaultValue; - } - - return value; - } catch (NumberFormatException e) { - log("Invalid integer for " + key + ": " + rawValue + ". Using default " + defaultValue + "."); - return defaultValue; - } - } - - private static double parseDouble(String key, String rawValue, double defaultValue, double minValue) { - try { - double value = Double.parseDouble(rawValue.trim()); - - if (Double.isNaN(value) || Double.isInfinite(value) || value < minValue) { - log("Value for " + key + " must be a finite number greater than or equal to " + minValue + ". Using default " + defaultValue + "."); - return defaultValue; - } - - return value; - } catch (NumberFormatException e) { - log("Invalid decimal for " + key + ": " + rawValue + ". Using default " + defaultValue + "."); - return defaultValue; - } - } - - private static void log(String message) { - System.out.println("[NovaCraft][ASM Config] " + message); - } -} diff --git a/src/main/java/com/NovaCraft/SpiderSpeedTransformer.java b/src/main/java/com/NovaCraft/SpiderSpeedTransformer.java index 56e99795..6508e3bb 100644 --- a/src/main/java/com/NovaCraft/SpiderSpeedTransformer.java +++ b/src/main/java/com/NovaCraft/SpiderSpeedTransformer.java @@ -13,11 +13,6 @@ public byte[] transform(String name, String transformedName, byte[] basicClass) if (!transformedName.equals("net.minecraft.entity.monster.EntitySpider") && !transformedName.equals("net.minecraft.entity.monster.EntityCaveSpider")) return basicClass; - CoremodConfig.ensureLoaded(); - if (!CoremodConfig.enableSpiderSpeedTransformer) { - return basicClass; - } - System.out.println("[SpiderTransformer] Patching EntitySpider..."); ClassNode classNode = new ClassNode(); @@ -41,7 +36,7 @@ public byte[] transform(String name, String transformedName, byte[] basicClass) if (value == 0.800000011920929D) { - ldc.cst = value * CoremodConfig.spiderMovementSpeedMultiplier; + ldc.cst = 1.600000023841858D; } } } diff --git a/src/main/java/com/NovaCraft/config/Configs.java b/src/main/java/com/NovaCraft/config/Configs.java index 8f9f1458..f1a4640c 100644 --- a/src/main/java/com/NovaCraft/config/Configs.java +++ b/src/main/java/com/NovaCraft/config/Configs.java @@ -15,10 +15,6 @@ public class Configs { public static boolean disableEnchantedGoldenAppleRecipe; public static boolean enableWeaponsToAllignWithVanilla; public static boolean enableHalfNaturalRegenInEnd; - public static boolean enableBookshelfPowerTransformer; - public static int bookshelfPowerDivisor; - public static boolean enableSpiderSpeedTransformer; - public static double spiderMovementSpeedMultiplier; //Vanilla Ore Generation Alterations public static boolean disableRegularVanillaGen; @@ -146,20 +142,6 @@ public static void loadConfigs(File configFile) { enableDebugMode = conf.getBoolean("enableDebugMode", "Important Options", false, "Enables log messages for location of structures generating or if a crash was prevented."); enableNewCaveSounds = conf.getBoolean("enableNewCaveSounds", "Important Options", true, "Enables New Cave Sounds."); enableHalfNaturalRegenInEnd = conf.getBoolean("enableHalfNaturalRegenInEnd", "Important Options", true, "Enables Half Natural Regeneration speed for the player while in the End."); - - //Important Options - enableBookshelfPowerTransformer = conf.getBoolean("enableBookshelfPowerTransformer", "Important Options", true, "Enables the startup ASM patch that changes enchantment table bookshelf power."); - prop = conf.get("Important Options", "bookshelfPowerDivisor", 2); - prop.comment = "Startup ASM option. Divides the bookshelf count before enchantability is calculated. 1 = vanilla, 2 = half power."; - bookshelfPowerDivisor = Math.max(1, prop.getInt(2)); - enableSpiderSpeedTransformer = conf.getBoolean("enableSpiderSpeedTransformer", "Important Options", true, "Enables the startup ASM patch that changes spider and cave spider movement speed."); - prop = conf.get("Important Options", "spiderMovementSpeedMultiplier", 2.0D); - prop.comment = "Startup ASM option. Multiplies vanilla spider movement speed. 1.0 = vanilla, 2.0 = double speed, 0.5 = half speed."; - spiderMovementSpeedMultiplier = prop.getDouble(2.0D); - if (spiderMovementSpeedMultiplier <= 0.0D || Double.isNaN(spiderMovementSpeedMultiplier) || Double.isInfinite(spiderMovementSpeedMultiplier)) { - spiderMovementSpeedMultiplier = 2.0D; - } - enableStrongholdAlterations = conf.getBoolean("enableStrongholdAlterations", "Important Options", true, "Enables Stronghold Alterations."); enableMaxStrongholdSpawners = conf.getBoolean("enableMaxStrongholdSpawners", "Misc", false, "Enables that most rooms in the stronghold have a spawner in them."); enableCrackedEndPortalFrame = conf.getBoolean("enableCrackedEndPortalFrame", "Misc", true, "Enables that several end portal frames are cracked and must be repaired in the Stronghold.");