aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlkalus <3060479+draknyte1@users.noreply.github.com>2020-01-13 21:22:33 +0000
committerAlkalus <3060479+draknyte1@users.noreply.github.com>2020-01-13 21:22:33 +0000
commitd304d49e7e835fa601accd0740b53ae06909a71e (patch)
tree6b3e2c54efaba3a2c63a9946b4f29944c737668f /src
parentbc630f3a7738e4a495cdc1672949d934f76838e3 (diff)
downloadGT5-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')
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_CharcoalPit.java43
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_AlloySmelter.java6
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);
}