diff options
author | Alkalus <3060479+draknyte1@users.noreply.github.com> | 2020-01-13 21:22:33 +0000 |
---|---|---|
committer | Alkalus <3060479+draknyte1@users.noreply.github.com> | 2020-01-13 21:22:33 +0000 |
commit | d304d49e7e835fa601accd0740b53ae06909a71e (patch) | |
tree | 6b3e2c54efaba3a2c63a9946b4f29944c737668f /src/Java/gtPlusPlus | |
parent | bc630f3a7738e4a495cdc1672949d934f76838e3 (diff) | |
download | GT5-Unofficial-d304d49e7e835fa601accd0740b53ae06909a71e.tar.gz GT5-Unofficial-d304d49e7e835fa601accd0740b53ae06909a71e.tar.bz2 GT5-Unofficial-d304d49e7e835fa601accd0740b53ae06909a71e.zip |
$ Fixed CPI patch, which was failing due to different args present on other GT forks.
$ Fixed incorrect energy usage on Alloy Smelting recipes, they're no longer 2x.
Diffstat (limited to 'src/Java/gtPlusPlus')
-rw-r--r-- | src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_CharcoalPit.java | 43 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_AlloySmelter.java | 6 |
2 files changed, 35 insertions, 14 deletions
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_CharcoalPit.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_CharcoalPit.java index 45e1608d6b..0c1b61be55 100644 --- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_CharcoalPit.java +++ b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_CharcoalPit.java @@ -1,10 +1,6 @@ package gtPlusPlus.preloader.asm.transformers; -import static org.objectweb.asm.Opcodes.ACC_PUBLIC; -import static org.objectweb.asm.Opcodes.ALOAD; -import static org.objectweb.asm.Opcodes.ASM5; -import static org.objectweb.asm.Opcodes.INVOKESTATIC; -import static org.objectweb.asm.Opcodes.IRETURN; +import static org.objectweb.asm.Opcodes.*; import java.util.ArrayList; @@ -30,7 +26,11 @@ public class ClassTransformer_GT_CharcoalPit { private final ClassWriter writer; public static boolean isWoodLog(Block log) { - boolean isLog1 = OrePrefixes.log.contains(new ItemStack(log, 1)); + return isWoodLog(log, 0); + } + + public static boolean isWoodLog(Block log, int meta) { + boolean isLog1 = OrePrefixes.log.contains(ItemUtils.getSimpleStack(log, meta, 1)); if (isLog1) { return true; } @@ -40,13 +40,13 @@ public class ClassTransformer_GT_CharcoalPit { } return false; } - + public ClassTransformer_GT_CharcoalPit(byte[] basicClass, boolean obfuscated) { ClassReader aTempReader = null; ClassWriter aTempWriter = null; boolean aBadTime = false; if (ReflectionUtils.doesClassExist("aji")) { - obfuscated = true; + obfuscated = true; } else { if (ReflectionUtils.doesClassExist("net.minecraft.block.Block")) { @@ -92,13 +92,14 @@ public class ClassTransformer_GT_CharcoalPit { MethodVisitor mv; boolean didInject = false; FMLRelaunchLog.log("[GT++ ASM] GT Charcoal Pit Fix", Level.INFO, "Injecting " + aMethodName + "."); - + String aBlockClassName = "net/minecraft/block/Block"; if (obfuscated) { aBlockClassName = "aji"; } if (aMethodName.equals("isWoodLog")) { - + + // Inject original Method with only block arg. mv = cw.visitMethod(ACC_PUBLIC, "isWoodLog", "(L"+aBlockClassName+";)Z", null, null); mv.visitCode(); Label l0 = new Label(); @@ -113,8 +114,28 @@ public class ClassTransformer_GT_CharcoalPit { mv.visitLocalVariable("log", "L"+aBlockClassName+";", null, l0, l1, 1); mv.visitMaxs(1, 2); mv.visitEnd(); + + + // Inject better Method with block & meta arg. + mv = cw.visitMethod(ACC_PUBLIC, "isWoodLog", "(L"+aBlockClassName+";I)Z", null, null); + mv.visitCode(); + Label label0 = new Label(); + mv.visitLabel(label0); + mv.visitLineNumber(201, label0); + mv.visitVarInsn(ALOAD, 1); + mv.visitVarInsn(ILOAD, 2); + mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_CharcoalPit", "isWoodLog", "(L"+aBlockClassName+";I)Z", false); + mv.visitInsn(IRETURN); + Label label1 = new Label(); + mv.visitLabel(label1); + mv.visitLocalVariable("this", "Lgregtech/common/tileentities/machines/multi/GT_MetaTileEntity_Charcoal_Pit;", null, label0, label1, 0); + mv.visitLocalVariable("log", "L"+aBlockClassName+";", null, label0, label1, 1); + mv.visitLocalVariable("meta", "I", null, label0, label1, 2); + mv.visitMaxs(2, 3); + mv.visitEnd(); + didInject = true; - + } FMLRelaunchLog.log("[GT++ ASM] GT Charcoal Pit Fix", Level.INFO, "Method injection complete."); return didInject; diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_AlloySmelter.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_AlloySmelter.java index aab362f6ec..7754d039cf 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_AlloySmelter.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_AlloySmelter.java @@ -40,7 +40,7 @@ public class RecipeGen_AlloySmelter extends RecipeGen_Base { ItemList.Shape_Mold_Nugget.get(0), material.getNugget(9), (int) Math.max(material.getMass() * 2L, 1L), - 2 * tVoltageMultiplier); + tVoltageMultiplier); //Gears if (ItemUtils.checkForInvalidItems(material.getIngot(1)) && ItemUtils.checkForInvalidItems(material.getGear(1))) @@ -49,7 +49,7 @@ public class RecipeGen_AlloySmelter extends RecipeGen_Base { ItemList.Shape_Mold_Gear.get(0), material.getGear(1), (int) Math.max(material.getMass() * 2L, 1L), - 2 * tVoltageMultiplier); + tVoltageMultiplier); //Ingot if (ItemUtils.checkForInvalidItems(material.getIngot(1)) && ItemUtils.checkForInvalidItems(material.getNugget(1))) @@ -58,7 +58,7 @@ public class RecipeGen_AlloySmelter extends RecipeGen_Base { ItemList.Shape_Mold_Ingot.get(0), material.getIngot(1), (int) Math.max(material.getMass() * 2L, 1L), - 2 * tVoltageMultiplier); + tVoltageMultiplier); } |