From 15eeeb263ff6d364be8b361f22c8644276409c96 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: Thu, 23 May 2024 23:31:33 +0800 Subject: [PATCH] Add Thaumcraft Support --- dependencies.gradle | 13 ++++++---- .../wohaopa/GTNHModify/LateMixinLoader.java | 2 +- .../GTNHModify/handler/GregTechHandler.java | 3 --- .../wohaopa/GTNHModify/handler/Handlers.java | 8 +++++-- .../GTNHModify/handler/ThaumcraftHandler.java | 16 +++++++++++++ .../thaumcraft/TileAlchemyFurnaceMixin.java | 24 +++++++++++++++++++ 6 files changed, 56 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/github/wohaopa/GTNHModify/handler/ThaumcraftHandler.java create mode 100644 src/main/java/com/github/wohaopa/GTNHModify/mixins/late/thaumcraft/TileAlchemyFurnaceMixin.java diff --git a/dependencies.gradle b/dependencies.gradle index 974d220..75c7516 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -35,9 +35,14 @@ */ dependencies { runtimeOnlyNonPublishable("com.github.GTNewHorizons:NotEnoughItems:2.6.0-GTNH:dev") - implementation("com.github.GTNewHorizons:GT5-Unofficial:5.09.46.21:dev") + compileOnly("com.github.GTNewHorizons:GT5-Unofficial:5.09.46.21:dev") implementation("thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev") - runtimeOnly("com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-400-GTNH:dev") - runtimeOnly("com.github.GTNewHorizons:TecTech:5.4.2:dev") - runtimeOnly("com.github.GTNewHorizons:AE2FluidCraft-Rework:1.3.0-gtnh:dev") + compileOnly("com.github.GTNewHorizons:TecTech:5.4.2:dev") + +// runtimeOnly("com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-400-GTNH:dev") +// runtimeOnly("com.github.GTNewHorizons:AE2FluidCraft-Rework:1.3.0-gtnh:dev") + runtimeOnly("com.github.GTNewHorizons:Baubles:1.0.4:dev") + runtimeOnly("com.github.GTNewHorizons:waila:1.8.0:dev") + + } diff --git a/src/main/java/com/github/wohaopa/GTNHModify/LateMixinLoader.java b/src/main/java/com/github/wohaopa/GTNHModify/LateMixinLoader.java index 8f58aca..610b61d 100644 --- a/src/main/java/com/github/wohaopa/GTNHModify/LateMixinLoader.java +++ b/src/main/java/com/github/wohaopa/GTNHModify/LateMixinLoader.java @@ -36,7 +36,7 @@ public List getMixins(Set loadedMods) { mixins.add("gregtech.GT_MetaTileEntity_DrillerBaseMixin"); } if (ModHelper.hasThaumcraft) { - + mixins.add("thaumcraft.TileAlchemyFurnaceMixin"); } return mixins; diff --git a/src/main/java/com/github/wohaopa/GTNHModify/handler/GregTechHandler.java b/src/main/java/com/github/wohaopa/GTNHModify/handler/GregTechHandler.java index 0260f46..a865671 100644 --- a/src/main/java/com/github/wohaopa/GTNHModify/handler/GregTechHandler.java +++ b/src/main/java/com/github/wohaopa/GTNHModify/handler/GregTechHandler.java @@ -1,6 +1,5 @@ package com.github.wohaopa.GTNHModify.handler; -import com.github.wohaopa.GTNHModify.ModHelper; import com.github.wohaopa.GTNHModify.strategies.Strategy; import gregtech.api.recipe.RecipeMap; @@ -10,8 +9,6 @@ public class GregTechHandler { protected static void init() { - if (!ModHelper.hasGregtech) return; - RecipeMap.ALL_RECIPE_MAPS.forEach( (s, recipeMap) -> recipeMap.getAllRecipes() .forEach(recipe -> Strategy.strategy.handler_GT_Recipe(recipe))); diff --git a/src/main/java/com/github/wohaopa/GTNHModify/handler/Handlers.java b/src/main/java/com/github/wohaopa/GTNHModify/handler/Handlers.java index 3419890..4e84d08 100644 --- a/src/main/java/com/github/wohaopa/GTNHModify/handler/Handlers.java +++ b/src/main/java/com/github/wohaopa/GTNHModify/handler/Handlers.java @@ -3,21 +3,25 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import com.github.wohaopa.GTNHModify.GTNHModifyMod; +import com.github.wohaopa.GTNHModify.ModHelper; import com.github.wohaopa.GTNHModify.strategies.Strategy; public class Handlers { - public static List handlers = Arrays.asList("Minecraft", "GregTech", "Thaumcraft"); + public static List handlers = new ArrayList<>(); private static final String Suffix = "Handler"; private static final List methods = new ArrayList<>(); public static void init() { if (!Strategy.prevInit()) return; + handlers.add("Minecraft"); + if (ModHelper.hasGregtech) handlers.add("GregTech"); + if (ModHelper.hasThaumcraft) handlers.add("Thaumcraft"); + GTNHModifyMod.LOG.info("Start processing the recipe"); if (methods.isEmpty()) { String pkg = Handlers.class.getName() diff --git a/src/main/java/com/github/wohaopa/GTNHModify/handler/ThaumcraftHandler.java b/src/main/java/com/github/wohaopa/GTNHModify/handler/ThaumcraftHandler.java new file mode 100644 index 0000000..f74b515 --- /dev/null +++ b/src/main/java/com/github/wohaopa/GTNHModify/handler/ThaumcraftHandler.java @@ -0,0 +1,16 @@ +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/late/thaumcraft/TileAlchemyFurnaceMixin.java b/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/thaumcraft/TileAlchemyFurnaceMixin.java new file mode 100644 index 0000000..536fee5 --- /dev/null +++ b/src/main/java/com/github/wohaopa/GTNHModify/mixins/late/thaumcraft/TileAlchemyFurnaceMixin.java @@ -0,0 +1,24 @@ +package com.github.wohaopa.GTNHModify.mixins.late.thaumcraft; + +import org.objectweb.asm.Opcodes; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +import com.github.wohaopa.GTNHModify.handler.ThaumcraftHandler; + +import thaumcraft.common.tiles.TileAlchemyFurnace; + +@Mixin(value = TileAlchemyFurnace.class, remap = false) +public abstract class TileAlchemyFurnaceMixin { + + @Redirect( + method = "canSmelt", + at = @At( + value = "FIELD", + target = "Lthaumcraft/common/tiles/TileAlchemyFurnace;smeltTime:I", + opcode = Opcodes.PUTFIELD)) + private void injectedSmeltTime(TileAlchemyFurnace furnace, int smeltTime) { + furnace.smeltTime = ThaumcraftHandler.handle(furnace, smeltTime); + } +}