From 54dd4e7fbe42e50039a1107d12f0c2a20a64f7b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=9D=E5=A4=8F=E5=90=8C=E5=AD=A6?= <2411829240@qq.com> Date: Mon, 26 Aug 2024 17:02:32 +0800 Subject: [PATCH] Change the various strategies to Tweaker --- .../wohaopa/GTNHModify/CommonProxy.java | 6 +- .../client/command/GTNHModifyCommand.java | 8 +- .../wohaopa/GTNHModify/config/Config.java | 13 +- .../GTNHModify/handler/BotaniaHandler.java | 16 --- .../GTNHModify/handler/GregTechHandler.java | 43 ------ .../wohaopa/GTNHModify/handler/Handlers.java | 64 --------- .../wohaopa/GTNHModify/handler/IHandler.java | 13 -- .../GTNHModify/handler/MinecraftHandler.java | 20 --- .../GTNHModify/handler/ThaumcraftHandler.java | 16 --- .../mixins/TileEntityFurnaceMixin.java | 4 +- .../late/botania/TileSpreaderMixin.java | 4 +- .../GT_MetaTileEntity_DrillerBaseMixin.java | 4 +- .../GT_MetaTileEntity_MinerMixin.java | 4 +- .../GT_MetaTileEntity_MultiFurnaceMixin.java | 4 +- .../GT_MetaTileEntity_ScannerMixin.java | 4 +- .../thaumcraft/TileAlchemyFurnaceMixin.java | 4 +- .../mixins/late/thaumcraft/TileNodeMixin.java | 4 +- .../tweakers/EyeOfHarmonyRecipeTweaker.java | 127 ++++++++++++++++++ .../tweakers/GGNaquadahReactorTweaker.java | 12 ++ .../wohaopa/GTNHModify/tweakers/ITweaker.java | 16 +++ .../wohaopa/GTNHModify/tweakers/Tweakers.java | 54 ++++++++ .../tweakers/gt/EnergyLessTweaker.java | 16 +++ .../tweakers/gt/GT_RecipeTweaker.java | 22 +++ .../GTNHModify/tweakers/gt/InputOne.java | 45 +++++++ .../tweakers/gt/OneTickTweaker.java | 16 +++ .../GTNHModify/tweakers/gt/Output64.java | 36 +++++ .../GTNHModify/tweakers/gt/TenthsTweaker.java | 16 +++ .../tweakers/handler/BotaniaHandler.java | 7 + .../tweakers/handler/GregTechHandler.java | 7 + .../GTNHModify/tweakers/handler/Handler.java | 18 +++ .../tweakers/handler/MinecraftHandler.java | 7 + .../tweakers/handler/ThaumcraftHandler.java | 6 + 32 files changed, 432 insertions(+), 204 deletions(-) delete mode 100644 src/main/java/com/github/wohaopa/GTNHModify/handler/BotaniaHandler.java delete mode 100644 src/main/java/com/github/wohaopa/GTNHModify/handler/GregTechHandler.java delete mode 100644 src/main/java/com/github/wohaopa/GTNHModify/handler/Handlers.java delete mode 100644 src/main/java/com/github/wohaopa/GTNHModify/handler/IHandler.java delete mode 100644 src/main/java/com/github/wohaopa/GTNHModify/handler/MinecraftHandler.java delete mode 100644 src/main/java/com/github/wohaopa/GTNHModify/handler/ThaumcraftHandler.java create mode 100644 src/main/java/com/github/wohaopa/GTNHModify/tweakers/EyeOfHarmonyRecipeTweaker.java create mode 100644 src/main/java/com/github/wohaopa/GTNHModify/tweakers/GGNaquadahReactorTweaker.java create mode 100644 src/main/java/com/github/wohaopa/GTNHModify/tweakers/ITweaker.java create mode 100644 src/main/java/com/github/wohaopa/GTNHModify/tweakers/Tweakers.java create mode 100644 src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/EnergyLessTweaker.java create mode 100644 src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/GT_RecipeTweaker.java create mode 100644 src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/InputOne.java create mode 100644 src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/OneTickTweaker.java create mode 100644 src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/Output64.java create mode 100644 src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/TenthsTweaker.java create mode 100644 src/main/java/com/github/wohaopa/GTNHModify/tweakers/handler/BotaniaHandler.java create mode 100644 src/main/java/com/github/wohaopa/GTNHModify/tweakers/handler/GregTechHandler.java create mode 100644 src/main/java/com/github/wohaopa/GTNHModify/tweakers/handler/Handler.java create mode 100644 src/main/java/com/github/wohaopa/GTNHModify/tweakers/handler/MinecraftHandler.java create mode 100644 src/main/java/com/github/wohaopa/GTNHModify/tweakers/handler/ThaumcraftHandler.java diff --git a/src/main/java/com/github/wohaopa/GTNHModify/CommonProxy.java b/src/main/java/com/github/wohaopa/GTNHModify/CommonProxy.java index 26dd023..d99e2b9 100644 --- a/src/main/java/com/github/wohaopa/GTNHModify/CommonProxy.java +++ b/src/main/java/com/github/wohaopa/GTNHModify/CommonProxy.java @@ -1,8 +1,7 @@ package com.github.wohaopa.GTNHModify; import com.github.wohaopa.GTNHModify.config.Config; -import com.github.wohaopa.GTNHModify.handler.Handlers; -import com.github.wohaopa.GTNHModify.strategies.Strategy; +import com.github.wohaopa.GTNHModify.tweakers.Tweakers; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; @@ -14,7 +13,6 @@ public class CommonProxy { // preInit "Run before anything else. Read your config, create blocks, items, etc, and register them with the // GameRegistry." (Remove if not needed) public void preInit(FMLPreInitializationEvent event) { - Strategy.init(); Config.init(event.getSuggestedConfigurationFile()); } @@ -26,6 +24,6 @@ public void postInit(FMLPostInitializationEvent event) {} // register server commands in this event handler (Remove if not needed) public void serverStarting(FMLServerStartingEvent event) { - Handlers.init(); + Tweakers.initialize(); } } diff --git a/src/main/java/com/github/wohaopa/GTNHModify/client/command/GTNHModifyCommand.java b/src/main/java/com/github/wohaopa/GTNHModify/client/command/GTNHModifyCommand.java index bd4067f..675d3fb 100644 --- a/src/main/java/com/github/wohaopa/GTNHModify/client/command/GTNHModifyCommand.java +++ b/src/main/java/com/github/wohaopa/GTNHModify/client/command/GTNHModifyCommand.java @@ -11,7 +11,7 @@ import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatComponentTranslation; -import com.github.wohaopa.GTNHModify.handler.Handlers; +import com.github.wohaopa.GTNHModify.tweakers.Tweakers; public class GTNHModifyCommand extends CommandBase { @@ -89,9 +89,9 @@ public void processCommand(ICommandSender sender, String[] args) { case "help" -> printHelps(sender); case "hello" -> sender.addChatMessage(new ChatComponentText("你好")); case "load" -> { - if (Handlers.init()) - sender.addChatMessage(new ChatComponentTranslation("commands.gtnh-modify.load.success")); - else sender.addChatMessage(new ChatComponentTranslation("commands.gtnh-modify.load.failure")); + Tweakers.initialize(); + sender.addChatMessage(new ChatComponentTranslation("commands.gtnh-modify.load.success")); + } default -> { if (subCmds.contains(test)) { diff --git a/src/main/java/com/github/wohaopa/GTNHModify/config/Config.java b/src/main/java/com/github/wohaopa/GTNHModify/config/Config.java index 9812f61..f206b57 100644 --- a/src/main/java/com/github/wohaopa/GTNHModify/config/Config.java +++ b/src/main/java/com/github/wohaopa/GTNHModify/config/Config.java @@ -5,7 +5,7 @@ import net.minecraftforge.common.config.Configuration; import com.github.wohaopa.GTNHModify.GTNHModifyMod; -import com.github.wohaopa.GTNHModify.strategies.Strategy; +import com.github.wohaopa.GTNHModify.tweakers.Tweakers; import cpw.mods.fml.client.event.ConfigChangedEvent; import cpw.mods.fml.common.FMLCommonHandler; @@ -37,13 +37,10 @@ public void onConfigChangedEvent(ConfigChangedEvent.OnConfigChangedEvent event) private static void loadConfig() { - String strategyName = config.getString( - "Strategy", - Configuration.CATEGORY_GENERAL, - "None", - "Possible values: [None, OneTick, Tenths, Output64, Energyless]"); - - Strategy.setStrategy(strategyName); + for (Tweakers tweaker : Tweakers.values()) { + tweaker.enabled = config + .getBoolean(tweaker.name, Configuration.CATEGORY_GENERAL, false, tweaker.description); + } if (config.hasChanged() || doSave) { config.save(); diff --git a/src/main/java/com/github/wohaopa/GTNHModify/handler/BotaniaHandler.java b/src/main/java/com/github/wohaopa/GTNHModify/handler/BotaniaHandler.java deleted file mode 100644 index 6e682e4..0000000 --- a/src/main/java/com/github/wohaopa/GTNHModify/handler/BotaniaHandler.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.github.wohaopa.GTNHModify.handler; - -import com.github.wohaopa.GTNHModify.strategies.Strategy; - -@IHandler("init") -public class BotaniaHandler { - - public static void init() { - - } - - public static int handle(Object owner, int number) { - // todo new method - return Strategy.strategy.handler_FurnaceProcessingTime(owner, number); - } -} diff --git a/src/main/java/com/github/wohaopa/GTNHModify/handler/GregTechHandler.java b/src/main/java/com/github/wohaopa/GTNHModify/handler/GregTechHandler.java deleted file mode 100644 index adc62c9..0000000 --- a/src/main/java/com/github/wohaopa/GTNHModify/handler/GregTechHandler.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.github.wohaopa.GTNHModify.handler; - -import java.lang.reflect.Field; -import java.util.HashMap; - -import com.github.technus.tectech.TecTech; -import com.github.technus.tectech.recipe.EyeOfHarmonyRecipe; -import com.github.technus.tectech.recipe.EyeOfHarmonyRecipeStorage; -import com.github.technus.tectech.recipe.TecTechRecipeMaps; -import com.github.wohaopa.GTNHModify.strategies.Strategy; - -import gregtech.api.recipe.RecipeMap; -import gregtech.api.util.GT_Recipe; - -@IHandler("init") -public class GregTechHandler { - - static HashMap recipeHashMap; - - protected static void init() { - RecipeMap.ALL_RECIPE_MAPS.forEach( - (s, recipeMap) -> recipeMap.getAllRecipes() - .forEach(recipe -> Strategy.strategy.handler_GT_Recipe(recipe))); - GT_Recipe.GT_Recipe_AssemblyLine.sAssemblylineRecipes - .forEach(gtRecipeAssemblyLine -> Strategy.strategy.handler_GT_Recipe_AssemblyLine(gtRecipeAssemblyLine)); - TecTechRecipeMaps.eyeOfHarmonyRecipes.getAllRecipes() - .forEach(recipe -> Strategy.strategy.handler_GT_Recipe(recipe)); - - try { - Class clazz = EyeOfHarmonyRecipeStorage.class; - Field field = clazz.getDeclaredField("recipeHashMap"); - field.setAccessible(true); - recipeHashMap = (HashMap) field.get(TecTech.eyeOfHarmonyRecipeStorage); - recipeHashMap - .forEach((s, eyeOfHarmonyRecipe) -> Strategy.strategy.handler_EyeOfHarmonyRecipe(eyeOfHarmonyRecipe)); - } catch (NoSuchFieldException | IllegalAccessException e) {} - } - - public static int handle(Object owner, int number) { - return Strategy.strategy.handler_GT_ProcessingTime(owner, number); - } - -} diff --git a/src/main/java/com/github/wohaopa/GTNHModify/handler/Handlers.java b/src/main/java/com/github/wohaopa/GTNHModify/handler/Handlers.java deleted file mode 100644 index 9be0df2..0000000 --- a/src/main/java/com/github/wohaopa/GTNHModify/handler/Handlers.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.github.wohaopa.GTNHModify.handler; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.List; - -import com.github.wohaopa.GTNHModify.GTNHModifyMod; -import com.github.wohaopa.GTNHModify.Mods; -import com.github.wohaopa.GTNHModify.strategies.Strategy; - -public class Handlers { - - public static List handlers = new ArrayList<>(); - private static final String Suffix = "Handler"; - private static final List methods = new ArrayList<>(); - - public static boolean init() { - if (!Strategy.prevInit()) return false; - - GTNHModifyMod.LOG.info("Start processing the recipe"); - if (methods.isEmpty()) { - - handlers.add("Minecraft"); - for (Mods mod : Mods.values()) { - String handler = mod.getHandler(); - if (handler != null) { - handlers.add(handler); - } - } - - String pkg = Handlers.class.getName() - .replace("Handlers", ""); - for (String name : handlers) { - String className = pkg + name + Suffix; - try { - Class clazz = Class.forName(className); - IHandler iHandler = clazz.getAnnotation(IHandler.class); - if (iHandler != null) { - Method method = clazz.getDeclaredMethod(iHandler.value()); - methods.add(method); - GTNHModifyMod.LOG.info("Discovery handler: " + className); - } - } catch (ClassNotFoundException | NoSuchMethodException e) { - GTNHModifyMod.LOG.debug("An error occurred while initializing handler. Reason: " + e.getMessage()); - } - } - } - for (Method method : methods) { - try { - GTNHModifyMod.LOG.info( - "Invoke handler: " + method.getDeclaringClass() - .getName()); - method.invoke(null); - } catch (IllegalAccessException | InvocationTargetException e) { - GTNHModifyMod.LOG.debug("An error occurred while executing handler. Reason: " + e.getMessage()); - } - } - - Strategy.postInit(); - GTNHModifyMod.LOG.info("Complete processing the recipe"); - return true; - } -} diff --git a/src/main/java/com/github/wohaopa/GTNHModify/handler/IHandler.java b/src/main/java/com/github/wohaopa/GTNHModify/handler/IHandler.java deleted file mode 100644 index bc36d43..0000000 --- a/src/main/java/com/github/wohaopa/GTNHModify/handler/IHandler.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.github.wohaopa.GTNHModify.handler; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.TYPE) -public @interface IHandler { - - String value(); -} diff --git a/src/main/java/com/github/wohaopa/GTNHModify/handler/MinecraftHandler.java b/src/main/java/com/github/wohaopa/GTNHModify/handler/MinecraftHandler.java deleted file mode 100644 index d47ce95..0000000 --- a/src/main/java/com/github/wohaopa/GTNHModify/handler/MinecraftHandler.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.github.wohaopa.GTNHModify.handler; - -import net.minecraft.item.crafting.FurnaceRecipes; - -import com.github.wohaopa.GTNHModify.strategies.Strategy; - -@IHandler("init") -public class MinecraftHandler { - - public static void init() { - // todo recipe - FurnaceRecipes.smelting() - .getSmeltingList() - .forEach((itemStack, itemStack2) -> Strategy.strategy.handler_FurnaceRecipe(itemStack, itemStack2)); - } - - public static int handle(Object owner, int number) { - return Strategy.strategy.handler_FurnaceProcessingTime(owner, number); - } -} diff --git a/src/main/java/com/github/wohaopa/GTNHModify/handler/ThaumcraftHandler.java b/src/main/java/com/github/wohaopa/GTNHModify/handler/ThaumcraftHandler.java deleted file mode 100644 index f74b515..0000000 --- a/src/main/java/com/github/wohaopa/GTNHModify/handler/ThaumcraftHandler.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.github.wohaopa.GTNHModify.handler; - -import com.github.wohaopa.GTNHModify.strategies.Strategy; - -@IHandler("init") -public class ThaumcraftHandler { - - public static void init() { - - } - - public static int handle(Object owner, int number) { - // todo new method - return Strategy.strategy.handler_FurnaceProcessingTime(owner, number); - } -} diff --git a/src/main/java/com/github/wohaopa/GTNHModify/mixins/TileEntityFurnaceMixin.java b/src/main/java/com/github/wohaopa/GTNHModify/mixins/TileEntityFurnaceMixin.java index f35c043..82d8a2a 100644 --- a/src/main/java/com/github/wohaopa/GTNHModify/mixins/TileEntityFurnaceMixin.java +++ b/src/main/java/com/github/wohaopa/GTNHModify/mixins/TileEntityFurnaceMixin.java @@ -6,13 +6,13 @@ import org.spongepowered.asm.mixin.injection.Constant; import org.spongepowered.asm.mixin.injection.ModifyConstant; -import com.github.wohaopa.GTNHModify.handler.MinecraftHandler; +import com.github.wohaopa.GTNHModify.tweakers.handler.MinecraftHandler; @Mixin(TileEntityFurnace.class) public abstract class TileEntityFurnaceMixin { @ModifyConstant(method = "updateEntity", constant = @Constant(intValue = 200)) private int injected(int value) { - return MinecraftHandler.handle(this, value); + return MinecraftHandler.instance.handle(this, value); } } diff --git a/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/botania/TileSpreaderMixin.java b/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/botania/TileSpreaderMixin.java index 663551c..6228e92 100644 --- a/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/botania/TileSpreaderMixin.java +++ b/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/botania/TileSpreaderMixin.java @@ -5,7 +5,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -import com.github.wohaopa.GTNHModify.handler.ThaumcraftHandler; +import com.github.wohaopa.GTNHModify.tweakers.handler.BotaniaHandler; import vazkii.botania.common.block.tile.mana.TileSpreader; @@ -19,6 +19,6 @@ public abstract class TileSpreaderMixin { target = "Lvazkii/botania/common/block/tile/mana/TileSpreader;pingbackTicks:I", opcode = Opcodes.PUTFIELD)) private void injectedPingback(TileSpreader tileSpreader, int pingbackTicks) { - tileSpreader.pingbackTicks = ThaumcraftHandler.handle(tileSpreader, pingbackTicks); + tileSpreader.pingbackTicks = BotaniaHandler.instance.handle(tileSpreader, pingbackTicks); } } diff --git a/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/gregtech/GT_MetaTileEntity_DrillerBaseMixin.java b/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/gregtech/GT_MetaTileEntity_DrillerBaseMixin.java index 20f0061..e0586be 100644 --- a/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/gregtech/GT_MetaTileEntity_DrillerBaseMixin.java +++ b/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/gregtech/GT_MetaTileEntity_DrillerBaseMixin.java @@ -5,7 +5,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import com.github.wohaopa.GTNHModify.handler.GregTechHandler; +import com.github.wohaopa.GTNHModify.tweakers.handler.GregTechHandler; import gregtech.api.recipe.check.CheckRecipeResult; import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_DrillerBase; @@ -21,7 +21,7 @@ public abstract class GT_MetaTileEntity_DrillerBaseMixin { shift = At.Shift.AFTER)) private void injected(CallbackInfoReturnable cir) { - ((GT_MetaTileEntity_DrillerBase) ((Object) this)).mMaxProgresstime = GregTechHandler + ((GT_MetaTileEntity_DrillerBase) ((Object) this)).mMaxProgresstime = GregTechHandler.instance .handle(this, ((GT_MetaTileEntity_DrillerBase) ((Object) this)).mMaxProgresstime); } } diff --git a/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/gregtech/GT_MetaTileEntity_MinerMixin.java b/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/gregtech/GT_MetaTileEntity_MinerMixin.java index 7b5d321..518e2e7 100644 --- a/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/gregtech/GT_MetaTileEntity_MinerMixin.java +++ b/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/gregtech/GT_MetaTileEntity_MinerMixin.java @@ -8,7 +8,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -import com.github.wohaopa.GTNHModify.handler.GregTechHandler; +import com.github.wohaopa.GTNHModify.tweakers.handler.GregTechHandler; import gregtech.common.tileentities.machines.basic.GT_MetaTileEntity_Miner; @@ -27,6 +27,6 @@ public class GT_MetaTileEntity_MinerMixin { target = "Lgregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Miner;mSpeed:I", opcode = Opcodes.GETFIELD)) private int injected(GT_MetaTileEntity_Miner miner) { - return GregTechHandler.handle(miner, mSpeed); + return GregTechHandler.instance.handle(miner, mSpeed); } } diff --git a/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/gregtech/GT_MetaTileEntity_MultiFurnaceMixin.java b/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/gregtech/GT_MetaTileEntity_MultiFurnaceMixin.java index 4791a33..808e445 100644 --- a/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/gregtech/GT_MetaTileEntity_MultiFurnaceMixin.java +++ b/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/gregtech/GT_MetaTileEntity_MultiFurnaceMixin.java @@ -4,7 +4,7 @@ import org.spongepowered.asm.mixin.injection.Constant; import org.spongepowered.asm.mixin.injection.ModifyConstant; -import com.github.wohaopa.GTNHModify.handler.GregTechHandler; +import com.github.wohaopa.GTNHModify.tweakers.handler.GregTechHandler; import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_MultiFurnace; @@ -13,6 +13,6 @@ public class GT_MetaTileEntity_MultiFurnaceMixin { @ModifyConstant(method = "checkProcessing", constant = @Constant(intValue = 512)) private int injected(int value) { - return GregTechHandler.handle(this, value); + return GregTechHandler.instance.handle(this, value); } } diff --git a/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/gregtech/GT_MetaTileEntity_ScannerMixin.java b/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/gregtech/GT_MetaTileEntity_ScannerMixin.java index ce9de2f..1c95d0b 100644 --- a/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/gregtech/GT_MetaTileEntity_ScannerMixin.java +++ b/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/gregtech/GT_MetaTileEntity_ScannerMixin.java @@ -4,7 +4,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyArg; -import com.github.wohaopa.GTNHModify.handler.GregTechHandler; +import com.github.wohaopa.GTNHModify.tweakers.handler.GregTechHandler; import gregtech.common.tileentities.machines.basic.GT_MetaTileEntity_Scanner; @@ -13,6 +13,6 @@ public abstract class GT_MetaTileEntity_ScannerMixin { @ModifyArg(method = "checkRecipe", at = @At(value = "INVOKE", target = "calculateOverclockedNess"), index = 1) private int injected(int x) { - return GregTechHandler.handle(this, x); + return GregTechHandler.instance.handle(this, x); } } diff --git a/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/thaumcraft/TileAlchemyFurnaceMixin.java b/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/thaumcraft/TileAlchemyFurnaceMixin.java index 536fee5..3d23cf8 100644 --- a/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/thaumcraft/TileAlchemyFurnaceMixin.java +++ b/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/thaumcraft/TileAlchemyFurnaceMixin.java @@ -5,7 +5,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -import com.github.wohaopa.GTNHModify.handler.ThaumcraftHandler; +import com.github.wohaopa.GTNHModify.tweakers.handler.ThaumcraftHandler; import thaumcraft.common.tiles.TileAlchemyFurnace; @@ -19,6 +19,6 @@ public abstract class TileAlchemyFurnaceMixin { target = "Lthaumcraft/common/tiles/TileAlchemyFurnace;smeltTime:I", opcode = Opcodes.PUTFIELD)) private void injectedSmeltTime(TileAlchemyFurnace furnace, int smeltTime) { - furnace.smeltTime = ThaumcraftHandler.handle(furnace, smeltTime); + furnace.smeltTime = ThaumcraftHandler.instance.handle(furnace, smeltTime); } } diff --git a/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/thaumcraft/TileNodeMixin.java b/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/thaumcraft/TileNodeMixin.java index 8bc1d64..cffc2ab 100644 --- a/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/thaumcraft/TileNodeMixin.java +++ b/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/thaumcraft/TileNodeMixin.java @@ -6,7 +6,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -import com.github.wohaopa.GTNHModify.handler.ThaumcraftHandler; +import com.github.wohaopa.GTNHModify.tweakers.handler.ThaumcraftHandler; import thaumcraft.common.tiles.TileNode; @@ -23,6 +23,6 @@ public abstract class TileNodeMixin { target = "Lthaumcraft/common/tiles/TileNode;regeneration:I", opcode = Opcodes.PUTFIELD)) private void injectedHandleRecharge(TileNode tileNode, int regeneration) { - this.regeneration = ThaumcraftHandler.handle(tileNode, regeneration); + this.regeneration = ThaumcraftHandler.instance.handle(tileNode, regeneration); } } diff --git a/src/main/java/com/github/wohaopa/GTNHModify/tweakers/EyeOfHarmonyRecipeTweaker.java b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/EyeOfHarmonyRecipeTweaker.java new file mode 100644 index 0000000..13ed547 --- /dev/null +++ b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/EyeOfHarmonyRecipeTweaker.java @@ -0,0 +1,127 @@ +package com.github.wohaopa.GTNHModify.tweakers; + +import java.lang.reflect.Field; +import java.util.HashMap; + +import com.github.technus.tectech.TecTech; +import com.github.technus.tectech.recipe.EyeOfHarmonyRecipe; +import com.github.technus.tectech.recipe.EyeOfHarmonyRecipeStorage; + +public class EyeOfHarmonyRecipeTweaker extends ITweaker { + + @Override + protected void apply() { + try { + Class clazz = EyeOfHarmonyRecipeStorage.class; + Field field = clazz.getDeclaredField("recipeHashMap"); + field.setAccessible(true); + HashMap recipeHashMap = (HashMap) field + .get(TecTech.eyeOfHarmonyRecipeStorage); + recipeHashMap.forEach((s, eyeOfHarmonyRecipe) -> handler_EyeOfHarmonyRecipe(eyeOfHarmonyRecipe)); + } catch (NoSuchFieldException | IllegalAccessException e) {} + } + + private Field miningTimeSecondsField; + private Field hydrogenRequirementField; + private Field heliumRequirementField; + private Field baseSuccessChanceField; + private Field euOutputField; + private Field euStartCostField; + + private void handler_EyeOfHarmonyRecipe(EyeOfHarmonyRecipe eyeOfHarmonyRecipe) { + Class clazz = EyeOfHarmonyRecipe.class; + + // miningTimeSeconds + { + if (miningTimeSecondsField == null) { + try { + miningTimeSecondsField = clazz.getDeclaredField("miningTimeSeconds"); + miningTimeSecondsField.setAccessible(true); + } catch (NoSuchFieldException ignored) {} + } + if (miningTimeSecondsField != null) { + try { + miningTimeSecondsField.setLong(eyeOfHarmonyRecipe, 1); + } catch (IllegalAccessException ignored) {} + } + } + + // hydrogenRequirement + { + if (hydrogenRequirementField == null) { + try { + hydrogenRequirementField = clazz.getDeclaredField("hydrogenRequirement"); + hydrogenRequirementField.setAccessible(true); + + } catch (NoSuchFieldException ignored) {} + } + if (hydrogenRequirementField != null) { + try { + hydrogenRequirementField.setLong(eyeOfHarmonyRecipe, 1); + } catch (IllegalAccessException ignored) {} + } + } + + // heliumRequirement + { + if (heliumRequirementField == null) { + try { + heliumRequirementField = clazz.getDeclaredField("heliumRequirement"); + heliumRequirementField.setAccessible(true); + + } catch (NoSuchFieldException ignored) {} + } + if (heliumRequirementField != null) { + try { + heliumRequirementField.setLong(eyeOfHarmonyRecipe, 1); + } catch (IllegalAccessException ignored) {} + } + } + + // baseSuccessChance + { + if (baseSuccessChanceField == null) { + try { + baseSuccessChanceField = clazz.getDeclaredField("baseSuccessChance"); + baseSuccessChanceField.setAccessible(true); + + } catch (NoSuchFieldException ignored) {} + } + if (baseSuccessChanceField != null) { + try { + baseSuccessChanceField.setDouble(eyeOfHarmonyRecipe, 5); + } catch (IllegalAccessException ignored) {} + } + } + + // euOutput + { + if (euOutputField == null) { + try { + euOutputField = clazz.getDeclaredField("euOutput"); + euOutputField.setAccessible(true); + } catch (NoSuchFieldException ignored) {} + } + if (euOutputField != null) { + try { + euOutputField.setLong(eyeOfHarmonyRecipe, 999999999); + } catch (IllegalAccessException ignored) {} + } + } + + // euStartCost + { + if (euStartCostField == null) { + try { + euStartCostField = clazz.getDeclaredField("euStartCost"); + euStartCostField.setAccessible(true); + } catch (NoSuchFieldException ignored) {} + } + if (euStartCostField != null) { + try { + euStartCostField.setLong(eyeOfHarmonyRecipe, 114); + } catch (IllegalAccessException ignored) {} + } + } + } +} diff --git a/src/main/java/com/github/wohaopa/GTNHModify/tweakers/GGNaquadahReactorTweaker.java b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/GGNaquadahReactorTweaker.java new file mode 100644 index 0000000..a502ec5 --- /dev/null +++ b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/GGNaquadahReactorTweaker.java @@ -0,0 +1,12 @@ +package com.github.wohaopa.GTNHModify.tweakers; + +import goodgenerator.api.recipe.GoodGeneratorRecipeMaps; + +public class GGNaquadahReactorTweaker extends ITweaker { + + @Override + public void apply() { + GoodGeneratorRecipeMaps.naquadahReactorFuels.getAllRecipes() + .forEach(gtRecipe -> gtRecipe.mDuration *= 10); + } +} diff --git a/src/main/java/com/github/wohaopa/GTNHModify/tweakers/ITweaker.java b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/ITweaker.java new file mode 100644 index 0000000..050e4df --- /dev/null +++ b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/ITweaker.java @@ -0,0 +1,16 @@ +package com.github.wohaopa.GTNHModify.tweakers; + +public abstract class ITweaker { + + private boolean done = false; + + public void apply0() { + if (done) return; + done = true; + apply(); + } + + protected abstract void apply(); + + void exportRecipe() {} +} diff --git a/src/main/java/com/github/wohaopa/GTNHModify/tweakers/Tweakers.java b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/Tweakers.java new file mode 100644 index 0000000..9faaba7 --- /dev/null +++ b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/Tweakers.java @@ -0,0 +1,54 @@ +package com.github.wohaopa.GTNHModify.tweakers; + +import com.github.wohaopa.GTNHModify.tweakers.gt.EnergyLessTweaker; +import com.github.wohaopa.GTNHModify.tweakers.gt.InputOne; +import com.github.wohaopa.GTNHModify.tweakers.gt.OneTickTweaker; +import com.github.wohaopa.GTNHModify.tweakers.gt.Output64; +import com.github.wohaopa.GTNHModify.tweakers.gt.TenthsTweaker; +import com.github.wohaopa.GTNHModify.tweakers.handler.BotaniaHandler; +import com.github.wohaopa.GTNHModify.tweakers.handler.GregTechHandler; +import com.github.wohaopa.GTNHModify.tweakers.handler.MinecraftHandler; +import com.github.wohaopa.GTNHModify.tweakers.handler.ThaumcraftHandler; + +public enum Tweakers { + + // GregTech common + OneTick("GT_Recipe OneTick", "GT_Recipe duration is 1 tick.", new OneTickTweaker()), + Tenths("GT_Recipe Tenths", "GT_Recipe duration is one-tenth of the previous.", new TenthsTweaker()), + EnergyLess("GT_Recipe EnergyLess", "GT_Recipe requires no energy.", new EnergyLessTweaker()), + Input_1("GT_Recipe Input_1", "The input of GT_Recipe is 1.", new InputOne()), + Output("GT_Recipe Input_64", "The output of GT_Recipe is 64.", new Output64()), + + // GG Naquadah reactor + GGNaquadahReactor("Other GGNaquadahReactor", "Ten times the burn time.", new GGNaquadahReactorTweaker()), + // Homo + EyeOfHarmonyRecipe("Other EyeOfHarmonyRecipeTweaker", "Some enhancement.", new EyeOfHarmonyRecipeTweaker()), + + // Handler + + Botania("Handle Botania", "The time of some devices was changed to 1 tick.", BotaniaHandler.instance), + GregTech("Handle GregTech", "The time of some devices was changed to 1 tick", GregTechHandler.instance), + Minecraft("Handle Minecraft", "The time of some devices was changed to 1 tick", MinecraftHandler.instance), + Thaumcraft("Handle Thaumcraft", "The time of some devices was changed to 1 tick", ThaumcraftHandler.instance), + // :( + ; + + public static void initialize() { + for (Tweakers tweaker : Tweakers.values()) { + if (tweaker.enabled) { + tweaker.tweaker.apply(); + } + } + } + + public final String name; + public final String description; + public final ITweaker tweaker; + public boolean enabled; + + Tweakers(String name, String description, ITweaker tweaker) { + this.name = name; + this.description = description; + this.tweaker = tweaker; + } +} diff --git a/src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/EnergyLessTweaker.java b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/EnergyLessTweaker.java new file mode 100644 index 0000000..4a1b583 --- /dev/null +++ b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/EnergyLessTweaker.java @@ -0,0 +1,16 @@ +package com.github.wohaopa.GTNHModify.tweakers.gt; + +import gregtech.api.util.GT_Recipe; + +public class EnergyLessTweaker extends GT_RecipeTweaker { + + @Override + protected void modifyGT_Recipe(GT_Recipe aRecipe) { + aRecipe.mEUt = 0; + } + + @Override + protected void modifyGT_Recipe_AssemblyLine(GT_Recipe.GT_Recipe_AssemblyLine aRecipe) { + aRecipe.mEUt = 0; + } +} diff --git a/src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/GT_RecipeTweaker.java b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/GT_RecipeTweaker.java new file mode 100644 index 0000000..aa53c85 --- /dev/null +++ b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/GT_RecipeTweaker.java @@ -0,0 +1,22 @@ +package com.github.wohaopa.GTNHModify.tweakers.gt; + +import com.github.wohaopa.GTNHModify.tweakers.ITweaker; + +import gregtech.api.recipe.RecipeMap; +import gregtech.api.util.GT_Recipe; + +public abstract class GT_RecipeTweaker extends ITweaker { + + @Override + public void apply() { + RecipeMap.ALL_RECIPE_MAPS.forEach((s, recipeMap) -> { + if (!recipeMap.unlocalizedName.equals("gg.recipe.naquadah_reactor")) recipeMap.getAllRecipes() + .forEach(this::modifyGT_Recipe); + }); + GT_Recipe.GT_Recipe_AssemblyLine.sAssemblylineRecipes.forEach(this::modifyGT_Recipe_AssemblyLine); + } + + protected abstract void modifyGT_Recipe(GT_Recipe aRecipe); + + protected abstract void modifyGT_Recipe_AssemblyLine(GT_Recipe.GT_Recipe_AssemblyLine aRecipe); +} diff --git a/src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/InputOne.java b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/InputOne.java new file mode 100644 index 0000000..7301d4d --- /dev/null +++ b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/InputOne.java @@ -0,0 +1,45 @@ +package com.github.wohaopa.GTNHModify.tweakers.gt; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; + +import gregtech.api.util.GT_Recipe; + +public class InputOne extends GT_RecipeTweaker { + + @Override + protected void modifyGT_Recipe(GT_Recipe aRecipe) { + if (aRecipe.mInputs != null) { + for (ItemStack itemStack : aRecipe.mInputs) { + if (itemStack != null) { + if (itemStack.stackSize > 0) itemStack.stackSize = 1; + } + } + } + if (aRecipe.mFluidInputs != null) { + for (FluidStack fluidStack : aRecipe.mFluidInputs) { + if (fluidStack != null) { + if (fluidStack.amount > 0) fluidStack.amount = 1; + } + } + } + } + + @Override + protected void modifyGT_Recipe_AssemblyLine(GT_Recipe.GT_Recipe_AssemblyLine aRecipe) { + if (aRecipe.mInputs != null) { + for (ItemStack itemStack : aRecipe.mInputs) { + if (itemStack != null) { + if (itemStack.stackSize > 0) itemStack.stackSize = 1; + } + } + } + if (aRecipe.mFluidInputs != null) { + for (FluidStack fluidStack : aRecipe.mFluidInputs) { + if (fluidStack != null) { + if (fluidStack.amount > 0) fluidStack.amount = 1; + } + } + } + } +} diff --git a/src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/OneTickTweaker.java b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/OneTickTweaker.java new file mode 100644 index 0000000..6cd5a2d --- /dev/null +++ b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/OneTickTweaker.java @@ -0,0 +1,16 @@ +package com.github.wohaopa.GTNHModify.tweakers.gt; + +import gregtech.api.util.GT_Recipe; + +public class OneTickTweaker extends GT_RecipeTweaker { + + @Override + protected void modifyGT_Recipe(GT_Recipe aRecipe) { + if (aRecipe.mDuration > 1) aRecipe.mDuration = 1; + } + + @Override + protected void modifyGT_Recipe_AssemblyLine(GT_Recipe.GT_Recipe_AssemblyLine aRecipe) { + if (aRecipe.mDuration > 1) aRecipe.mDuration = 1; + } +} diff --git a/src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/Output64.java b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/Output64.java new file mode 100644 index 0000000..26936d0 --- /dev/null +++ b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/Output64.java @@ -0,0 +1,36 @@ +package com.github.wohaopa.GTNHModify.tweakers.gt; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; + +import gregtech.api.util.GT_Recipe; + +public class Output64 extends GT_RecipeTweaker { + + @Override + protected void modifyGT_Recipe(GT_Recipe aRecipe) { + if (aRecipe.mOutputs != null) { + for (ItemStack itemStack : aRecipe.mOutputs) { + if (itemStack != null) { + if (itemStack.stackSize > 0 && itemStack.stackSize < 64) itemStack.stackSize = 64; + } + } + } + + if (aRecipe.mFluidOutputs != null) { + for (FluidStack fluidStack : aRecipe.mFluidOutputs) { + if (fluidStack != null) { + if (fluidStack.amount > 0 && fluidStack.amount < 16000) + fluidStack.amount = fluidStack.amount % 36 == 0 ? 9216 : 16000; + } + } + } + } + + @Override + protected void modifyGT_Recipe_AssemblyLine(GT_Recipe.GT_Recipe_AssemblyLine aRecipe) { + if (aRecipe.mOutput != null) { + if (aRecipe.mOutput.stackSize > 0 && aRecipe.mOutput.stackSize < 64) aRecipe.mOutput.stackSize = 64; + } + } +} diff --git a/src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/TenthsTweaker.java b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/TenthsTweaker.java new file mode 100644 index 0000000..46aa618 --- /dev/null +++ b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/gt/TenthsTweaker.java @@ -0,0 +1,16 @@ +package com.github.wohaopa.GTNHModify.tweakers.gt; + +import gregtech.api.util.GT_Recipe; + +public class TenthsTweaker extends GT_RecipeTweaker { + + @Override + protected void modifyGT_Recipe(GT_Recipe aRecipe) { + aRecipe.mDuration /= 10; + } + + @Override + protected void modifyGT_Recipe_AssemblyLine(GT_Recipe.GT_Recipe_AssemblyLine aRecipe) { + aRecipe.mDuration /= 10; + } +} diff --git a/src/main/java/com/github/wohaopa/GTNHModify/tweakers/handler/BotaniaHandler.java b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/handler/BotaniaHandler.java new file mode 100644 index 0000000..dde4644 --- /dev/null +++ b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/handler/BotaniaHandler.java @@ -0,0 +1,7 @@ +package com.github.wohaopa.GTNHModify.tweakers.handler; + +public class BotaniaHandler extends Handler { + + public static final BotaniaHandler instance = new BotaniaHandler(); + +} diff --git a/src/main/java/com/github/wohaopa/GTNHModify/tweakers/handler/GregTechHandler.java b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/handler/GregTechHandler.java new file mode 100644 index 0000000..717060f --- /dev/null +++ b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/handler/GregTechHandler.java @@ -0,0 +1,7 @@ +package com.github.wohaopa.GTNHModify.tweakers.handler; + +public class GregTechHandler extends Handler { + + public static final GregTechHandler instance = new GregTechHandler(); + +} diff --git a/src/main/java/com/github/wohaopa/GTNHModify/tweakers/handler/Handler.java b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/handler/Handler.java new file mode 100644 index 0000000..2bcbaa2 --- /dev/null +++ b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/handler/Handler.java @@ -0,0 +1,18 @@ +package com.github.wohaopa.GTNHModify.tweakers.handler; + +import com.github.wohaopa.GTNHModify.tweakers.ITweaker; + +public abstract class Handler extends ITweaker { + + private boolean enable = false; + + public int handle(Object owner, int number) { + if (enable) return 1; + else return number; + } + + @Override + protected void apply() { + enable = true; + } +} diff --git a/src/main/java/com/github/wohaopa/GTNHModify/tweakers/handler/MinecraftHandler.java b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/handler/MinecraftHandler.java new file mode 100644 index 0000000..8e27a10 --- /dev/null +++ b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/handler/MinecraftHandler.java @@ -0,0 +1,7 @@ +package com.github.wohaopa.GTNHModify.tweakers.handler; + +public class MinecraftHandler extends Handler { + + public static final MinecraftHandler instance = new MinecraftHandler(); + +} diff --git a/src/main/java/com/github/wohaopa/GTNHModify/tweakers/handler/ThaumcraftHandler.java b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/handler/ThaumcraftHandler.java new file mode 100644 index 0000000..dfd86c7 --- /dev/null +++ b/src/main/java/com/github/wohaopa/GTNHModify/tweakers/handler/ThaumcraftHandler.java @@ -0,0 +1,6 @@ +package com.github.wohaopa.GTNHModify.tweakers.handler; + +public class ThaumcraftHandler extends Handler { + + public static final ThaumcraftHandler instance = new ThaumcraftHandler(); +}