aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaven Szewczyk <git@kubasz.xyz>2022-08-31 14:51:26 +0100
committerGitHub <noreply@github.com>2022-08-31 15:51:26 +0200
commit5c58462ba6fd5b5a31b000f05599c7e722091d1e (patch)
tree5f1d5988f55239ab95311583286788ae67fc6b1a
parent15ec51bb053de5fca2ecf3521ccec0afd1ee373e (diff)
downloadGT5-Unofficial-5c58462ba6fd5b5a31b000f05599c7e722091d1e.tar.gz
GT5-Unofficial-5c58462ba6fd5b5a31b000f05599c7e722091d1e.tar.bz2
GT5-Unofficial-5c58462ba6fd5b5a31b000f05599c7e722091d1e.zip
Remove Railcraft asm as we have the source code now (#332)
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/AsmConfig.java40
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/ClassesToTransform.java5
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_FluidCartHandling.java113
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_FluidHelper.java1039
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_InvTools.java229
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java26
6 files changed, 0 insertions, 1452 deletions
diff --git a/src/main/java/gtPlusPlus/preloader/asm/AsmConfig.java b/src/main/java/gtPlusPlus/preloader/asm/AsmConfig.java
index f1b2e908b4..efc35b8a72 100644
--- a/src/main/java/gtPlusPlus/preloader/asm/AsmConfig.java
+++ b/src/main/java/gtPlusPlus/preloader/asm/AsmConfig.java
@@ -21,11 +21,6 @@ public class AsmConfig {
public static boolean enableChunkDebugging;
public static boolean enableCofhPatch;
public static boolean enableGcFuelChanges;
- public static boolean enableRcFlowFix;
- public static int maxRailcraftTankProcessVolume;
- public static int maxRailcraftFluidLoaderFlow;
- public static int maxRailcraftFluidUnloaderFlow;
- public static boolean enableRcItemDupeFix;
public static boolean enableTcAspectSafety;
public static boolean enabledLwjglKeybindingFix;
public static boolean enabledFixEntitySetHealth;
@@ -135,40 +130,6 @@ public class AsmConfig {
enableGcFuelChanges = false;
propOrder.add(prop.getName());
- // Railcraft Tank fix
- prop = config.get("general", "enableRcFlowFix", true);
- prop.comment = "Allows Custom max IO rates on RC tanks";
- prop.setLanguageKey("gtpp.enableRcFlowFix").setRequiresMcRestart(true);
- enableRcFlowFix = prop.getBoolean(true);
- propOrder.add(prop.getName());
-
- prop = config.get("general", "maxRailcraftTankProcessVolume", 4000);
- prop.comment = "Max IO for RC fluid tanks (Not Carts). 'enableRcFlowFix' Must be enabled.";
- prop.setLanguageKey("gtpp.maxRailcraftTankProcessVolume").setRequiresMcRestart(true);
- maxRailcraftTankProcessVolume = prop.getInt(4000);
- propOrder.add(prop.getName());
-
- // Railcraft Loader Max flowrate
- prop = config.get("general", "maxRailcraftFluidLoaderFlow", 20);
- prop.comment = "Max Output rate for RC Fluid Loaders";
- prop.setLanguageKey("gtpp.maxRailcraftFluidLoaderFlow").setRequiresMcRestart(true);
- maxRailcraftFluidLoaderFlow = prop.getInt(20);
- propOrder.add(prop.getName());
-
- // Railcraft Unloader Max flowrate
- prop = config.get("general", "maxRailcraftFluidUnloaderFlow", 80);
- prop.comment = "Max Output rate for RC Fluid Unloaders";
- prop.setLanguageKey("gtpp.maxRailcraftFluidUnloaderFlow").setRequiresMcRestart(true);
- maxRailcraftFluidUnloaderFlow = prop.getInt(80);
- propOrder.add(prop.getName());
-
- // Railcraft Dupe Fix
- prop = config.get("general", "enableRcItemDupeFix", true);
- prop.comment = "Fixes possible negative itemstacks";
- prop.setLanguageKey("gtpp.enableRcItemDupeFix").setRequiresMcRestart(true);
- enableRcItemDupeFix = prop.getBoolean(true);
- propOrder.add(prop.getName());
-
// TC Aspect Safety
prop = config.get("general", "enableTcAspectSafety", true);
prop.comment = "Fixes small oversights in Thaumcraft 4.";
@@ -188,7 +149,6 @@ public class AsmConfig {
Preloader_Logger.INFO("Gt Tooltip Fix - Enabled: " + enableGtTooltipFix);
Preloader_Logger.INFO("COFH Patch - Enabled: " + enableCofhPatch);
Preloader_Logger.INFO("Gc Fuel Changes Patch - Enabled: " + enableGcFuelChanges);
- Preloader_Logger.INFO("Railcraft Fluid Flow Patch - Enabled: " + enableRcFlowFix);
Preloader_Logger.INFO("Thaumcraft Aspect Safety Patch - Enabled: " + enableTcAspectSafety);
Preloader_Logger.INFO(
"Fix bad usage of EntityLivingBase.setHealth Patch - Enabled: " + enabledFixEntitySetHealth);
diff --git a/src/main/java/gtPlusPlus/preloader/asm/ClassesToTransform.java b/src/main/java/gtPlusPlus/preloader/asm/ClassesToTransform.java
index c1cd281f09..8f4809dcd6 100644
--- a/src/main/java/gtPlusPlus/preloader/asm/ClassesToTransform.java
+++ b/src/main/java/gtPlusPlus/preloader/asm/ClassesToTransform.java
@@ -14,11 +14,6 @@ public class ClassesToTransform {
public static final String TINKERS_FLUID_BLOCK = "tconstruct.smeltery.blocks.TConstructFluid";
- public static final String RAILCRAFT_FLUID_HELPER = "mods.railcraft.common.fluids.FluidHelper";
- public static final String RAILCRAFT_TILE_FLUID_LOADER =
- "mods.railcraft.common.blocks.machine.gamma.TileFluidLoader";
- public static final String RAILCRAFT_INVENTORY_TOOLS = "mods.railcraft.common.util.inventory.InvTools";
-
public static final String GALACTICRAFT_FLUID_UTILS = "micdoodle8.mods.galacticraft.core.util.FluidUtil";
public static final String GALACTICRAFT_TILE_ENTITY_FUEL_LOADER =
"micdoodle8.mods.galacticraft.core.tile.TileEntityFuelLoader";
diff --git a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_FluidCartHandling.java b/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_FluidCartHandling.java
deleted file mode 100644
index 686f929693..0000000000
--- a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_FluidCartHandling.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.ACC_FINAL;
-import static org.objectweb.asm.Opcodes.ACC_PRIVATE;
-import static org.objectweb.asm.Opcodes.ACC_STATIC;
-import static org.objectweb.asm.Opcodes.ASM5;
-
-import cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gtPlusPlus.preloader.asm.AsmConfig;
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.FieldVisitor;
-
-public class ClassTransformer_Railcraft_FluidCartHandling {
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
-
- // mods.railcraft.common.blocks.machine.gamma.TileFluidLoader
- // mods.railcraft.common.blocks.machine.gamma.TileFluidLoader.TRANSFER_RATE
-
- // mods.railcraft.common.blocks.machine.gamma.TileFluidUnloader
- // mods.railcraft.common.blocks.machine.gamma.TileFluidUnloader.TRANSFER_RATE
-
- public static final int TileFluidLoader_RATE = 20;
- public static final int TileFluidUnloader_RATE = 80;
-
- private static final int TYPE_LOADER = 0;
- private static final int TYPE_UNLOADER = 1;
-
- public ClassTransformer_Railcraft_FluidCartHandling(byte[] basicClass, boolean obfuscated, String aClassName) {
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
- boolean aLoader = aClassName.equals("mods.railcraft.common.blocks.machine.gamma.TileFluidLoader");
-
- FMLRelaunchLog.log(
- "[GT++ ASM] Railcraft TRANSFER_RATE Patch",
- Level.INFO,
- "Attempting to patch field TRANSFER_RATE in " + aClassName + ", default value is "
- + (aLoader ? 20 : 80));
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
-
- if (aLoader) {
- aTempReader.accept(new AddFieldAdapter(aTempWriter), 0);
- addField(ACC_PRIVATE + ACC_FINAL + ACC_STATIC, "TRANSFER_RATE", aTempWriter, TYPE_LOADER);
- } else {
- aTempReader.accept(new AddFieldAdapter(aTempWriter), 0);
- addField(ACC_PRIVATE + ACC_FINAL + ACC_STATIC, "TRANSFER_RATE", aTempWriter, TYPE_UNLOADER);
- }
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- FMLRelaunchLog.log("[GT++ ASM] Railcraft TRANSFER_RATE Patch", Level.INFO, "Valid? " + isValid + ".");
- } else {
- isValid = false;
- }
- reader = aTempReader;
- writer = aTempWriter;
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- public boolean addField(int access, String fieldName, ClassWriter cv, int aType) {
- int aValue = (aType == TYPE_LOADER
- ? AsmConfig.maxRailcraftFluidLoaderFlow
- : AsmConfig.maxRailcraftFluidUnloaderFlow);
- FMLRelaunchLog.log(
- "[GT++ ASM] Railcraft TRANSFER_RATE Patch",
- Level.INFO,
- "Injecting " + fieldName + " with new value: " + aValue);
- FieldVisitor fv = cv.visitField(access, fieldName, "I", null, new Integer(aValue));
- if (fv != null) {
- fv.visitEnd();
- return true;
- }
- return false;
- }
-
- public class AddFieldAdapter extends ClassVisitor {
-
- public AddFieldAdapter(ClassVisitor cv) {
- super(ASM5, cv);
- this.cv = cv;
- }
-
- @Override
- public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) {
- if (name.equals("TRANSFER_RATE") && desc.equals("I")) {
- FMLRelaunchLog.log(
- "[GT++ ASM] Railcraft TRANSFER_RATE Patch", Level.INFO, "Removing " + "TRANSFER_RATE" + ".");
- return null;
- } else {
- FMLRelaunchLog.log(
- "[GT++ ASM] Railcraft TRANSFER_RATE Patch", Level.INFO, "Found Field " + name + " | " + desc);
- }
- return cv.visitField(access, name, desc, signature, value);
- }
- }
-}
diff --git a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_FluidHelper.java b/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_FluidHelper.java
deleted file mode 100644
index 98e964f69d..0000000000
--- a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_FluidHelper.java
+++ /dev/null
@@ -1,1039 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-
-import cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gtPlusPlus.preloader.asm.AsmConfig;
-import java.lang.reflect.Method;
-import net.minecraft.inventory.IInventory;
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.FieldVisitor;
-import org.objectweb.asm.Label;
-import org.objectweb.asm.MethodVisitor;
-
-public class ClassTransformer_Railcraft_FluidHelper {
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
-
- public static int PROCESS_VOLUME;
-
- public ClassTransformer_Railcraft_FluidHelper(byte[] basicClass, boolean obfuscated2) {
-
- PROCESS_VOLUME = AsmConfig.maxRailcraftTankProcessVolume;
-
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- FMLRelaunchLog.log(
- "[GT++ ASM] Railcraft PROCESS_VOLUME Patch",
- Level.INFO,
- "Attempting to patch field PROCESS_VOLUME in mods.railcraft.common.fluids.FluidHelper with new value: "
- + PROCESS_VOLUME);
-
- boolean obfuscated = false;
- boolean a1 = false;
- boolean a2 = false;
-
- // Find Non-Obf method
- try {
- Method aGetStackInSlot = IInventory.class.getDeclaredMethod("getStackInSlot", int.class);
- if (aGetStackInSlot != null) {
- a1 = true;
- }
- } catch (NoSuchMethodException | SecurityException e) {
- }
-
- // Find Obf method
- try {
- Method aGetStackInSlotObf = IInventory.class.getDeclaredMethod("func_70301_a", int.class);
- if (aGetStackInSlotObf != null) {
- a2 = true;
- }
- } catch (NoSuchMethodException | SecurityException e) {
- }
-
- if (a1) {
- obfuscated = false;
- } else if (a2) {
- obfuscated = true;
- } else {
- // Fallback
- obfuscated = false;
- }
- FMLRelaunchLog.log(
- "[GT++ ASM] Railcraft PROCESS_VOLUME Patch",
- Level.INFO,
- "Are we patching obfuscated methods? " + obfuscated);
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- aTempReader.accept(new AddFieldAdapter(aTempWriter), 0);
-
- addField(ACC_PUBLIC + ACC_FINAL + ACC_STATIC, "PROCESS_VOLUME", aTempWriter);
- injectMethod("fillContainers", aTempWriter, obfuscated);
- injectMethod("drainContainers", aTempWriter, obfuscated);
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- } else {
- isValid = false;
- }
-
- FMLRelaunchLog.log("[GT++ ASM] Railcraft PROCESS_VOLUME Patch", Level.INFO, "Valid? " + isValid + ".");
- reader = aTempReader;
- writer = aTempWriter;
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- public boolean addField(int access, String fieldName, ClassWriter cv) {
- FMLRelaunchLog.log(
- "[GT++ ASM] Railcraft PROCESS_VOLUME Patch", Level.INFO, "Injecting " + fieldName + " with new value.");
- FieldVisitor fv = cv.visitField(access, fieldName, "I", null, PROCESS_VOLUME);
- if (fv != null) {
- fv.visitEnd();
- return true;
- }
- return false;
- }
-
- public boolean injectMethod(String aMethodName, ClassWriter cw, boolean obfuscated) {
- MethodVisitor mv;
- boolean didInject = false;
- FMLRelaunchLog.log("[GT++ ASM] Railcraft PROCESS_VOLUME Patch", Level.INFO, "Injecting " + aMethodName + ".");
-
- if (aMethodName.equals("fillContainers") && !obfuscated) {
- mv = cw.visitMethod(
- ACC_PUBLIC + ACC_STATIC,
- "fillContainers",
- "(Lnet/minecraftforge/fluids/IFluidHandler;Lnet/minecraft/inventory/IInventory;IILnet/minecraftforge/fluids/Fluid;)Z",
- null,
- null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(126, l0);
- mv.visitVarInsn(ALOAD, 4);
- Label l1 = new Label();
- mv.visitJumpInsn(IFNONNULL, l1);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(127, l2);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l1);
- mv.visitLineNumber(128, l1);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "net/minecraft/inventory/IInventory",
- "getStackInSlot",
- "(I)Lnet/minecraft/item/ItemStack;",
- true);
- mv.visitVarInsn(ASTORE, 5);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(129, l3);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "net/minecraft/inventory/IInventory",
- "getStackInSlot",
- "(I)Lnet/minecraft/item/ItemStack;",
- true);
- mv.visitVarInsn(ASTORE, 6);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLineNumber(130, l4);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitTypeInsn(NEW, "net/minecraftforge/fluids/FluidStack");
- mv.visitInsn(DUP);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitIntInsn(SIPUSH, PROCESS_VOLUME);
- mv.visitMethodInsn(
- INVOKESPECIAL,
- "net/minecraftforge/fluids/FluidStack",
- "<init>",
- "(Lnet/minecraftforge/fluids/Fluid;I)V",
- false);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "mods/railcraft/common/fluids/FluidItemHelper",
- "fillContainer",
- "(Lnet/minecraft/item/ItemStack;Lnet/minecraftforge/fluids/FluidStack;)Lmods/railcraft/common/fluids/FluidItemHelper$FillReturn;",
- false);
- mv.visitVarInsn(ASTORE, 7);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(131, l5);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$FillReturn",
- "container",
- "Lnet/minecraft/item/ItemStack;");
- Label l6 = new Label();
- mv.visitJumpInsn(IFNULL, l6);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$FillReturn",
- "container",
- "Lnet/minecraft/item/ItemStack;");
- mv.visitMethodInsn(
- INVOKESTATIC,
- "mods/railcraft/common/fluids/FluidHelper",
- "hasPlaceToPutContainer",
- "(Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z",
- false);
- mv.visitJumpInsn(IFEQ, l6);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLineNumber(132, l7);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETSTATIC,
- "net/minecraftforge/common/util/ForgeDirection",
- "UNKNOWN",
- "Lnet/minecraftforge/common/util/ForgeDirection;");
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "amount", "I");
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "net/minecraftforge/fluids/IFluidHandler",
- "drain",
- "(Lnet/minecraftforge/common/util/ForgeDirection;IZ)Lnet/minecraftforge/fluids/FluidStack;",
- true);
- mv.visitVarInsn(ASTORE, 8);
- Label l8 = new Label();
- mv.visitLabel(l8);
- mv.visitLineNumber(133, l8);
- mv.visitVarInsn(ALOAD, 8);
- mv.visitJumpInsn(IFNULL, l6);
- mv.visitVarInsn(ALOAD, 8);
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "amount", "I");
- mv.visitJumpInsn(IF_ICMPNE, l6);
- Label l9 = new Label();
- mv.visitLabel(l9);
- mv.visitLineNumber(134, l9);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitVarInsn(ALOAD, 8);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "mods/railcraft/common/fluids/FluidItemHelper",
- "fillContainer",
- "(Lnet/minecraft/item/ItemStack;Lnet/minecraftforge/fluids/FluidStack;)Lmods/railcraft/common/fluids/FluidItemHelper$FillReturn;",
- false);
- mv.visitVarInsn(ASTORE, 7);
- Label l10 = new Label();
- mv.visitLabel(l10);
- mv.visitLineNumber(135, l10);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$FillReturn",
- "container",
- "Lnet/minecraft/item/ItemStack;");
- Label l11 = new Label();
- mv.visitJumpInsn(IFNULL, l11);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "amount", "I");
- mv.visitVarInsn(ALOAD, 8);
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- mv.visitJumpInsn(IF_ICMPNE, l11);
- Label l12 = new Label();
- mv.visitLabel(l12);
- mv.visitLineNumber(136, l12);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETSTATIC,
- "net/minecraftforge/common/util/ForgeDirection",
- "UNKNOWN",
- "Lnet/minecraftforge/common/util/ForgeDirection;");
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "amount", "I");
- mv.visitInsn(ICONST_1);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "net/minecraftforge/fluids/IFluidHandler",
- "drain",
- "(Lnet/minecraftforge/common/util/ForgeDirection;IZ)Lnet/minecraftforge/fluids/FluidStack;",
- true);
- mv.visitInsn(POP);
- Label l13 = new Label();
- mv.visitLabel(l13);
- mv.visitLineNumber(137, l13);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$FillReturn",
- "container",
- "Lnet/minecraft/item/ItemStack;");
- mv.visitMethodInsn(
- INVOKESTATIC,
- "mods/railcraft/common/fluids/FluidHelper",
- "storeContainer",
- "(Lnet/minecraft/inventory/IInventory;IILnet/minecraft/item/ItemStack;)V",
- false);
- mv.visitLabel(l11);
- mv.visitLineNumber(139, l11);
- mv.visitFrame(
- F_FULL,
- 9,
- new Object[] {
- "net/minecraftforge/fluids/IFluidHandler",
- "net/minecraft/inventory/IInventory",
- INTEGER,
- INTEGER,
- "net/minecraftforge/fluids/Fluid",
- "net/minecraft/item/ItemStack",
- "net/minecraft/item/ItemStack",
- "mods/railcraft/common/fluids/FluidItemHelper$FillReturn",
- "net/minecraftforge/fluids/FluidStack"
- },
- 0,
- new Object[] {});
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l6);
- mv.visitLineNumber(142, l6);
- mv.visitFrame(F_CHOP, 1, null, 0, null);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(IRETURN);
- Label l14 = new Label();
- mv.visitLabel(l14);
- mv.visitLocalVariable("drain", "Lnet/minecraftforge/fluids/FluidStack;", null, l8, l6, 8);
- mv.visitLocalVariable("fluidHandler", "Lnet/minecraftforge/fluids/IFluidHandler;", null, l0, l14, 0);
- mv.visitLocalVariable("inv", "Lnet/minecraft/inventory/IInventory;", null, l0, l14, 1);
- mv.visitLocalVariable("inputSlot", "I", null, l0, l14, 2);
- mv.visitLocalVariable("outputSlot", "I", null, l0, l14, 3);
- mv.visitLocalVariable("fluidToFill", "Lnet/minecraftforge/fluids/Fluid;", null, l0, l14, 4);
- mv.visitLocalVariable("input", "Lnet/minecraft/item/ItemStack;", null, l3, l14, 5);
- mv.visitLocalVariable("output", "Lnet/minecraft/item/ItemStack;", null, l4, l14, 6);
- mv.visitLocalVariable(
- "fill", "Lmods/railcraft/common/fluids/FluidItemHelper$FillReturn;", null, l5, l14, 7);
- mv.visitMaxs(5, 9);
- mv.visitEnd();
- didInject = true;
- } else if (aMethodName.equals("fillContainers") && obfuscated) {
- mv = cw.visitMethod(
- ACC_PUBLIC + ACC_STATIC,
- "fillContainers",
- "(Lnet/minecraftforge/fluids/IFluidHandler;Lnet/minecraft/inventory/IInventory;IILnet/minecraftforge/fluids/Fluid;)Z",
- null,
- null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(126, l0);
- mv.visitVarInsn(ALOAD, 4);
- Label l1 = new Label();
- mv.visitJumpInsn(IFNONNULL, l1);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(127, l2);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l1);
- mv.visitLineNumber(128, l1);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "net/minecraft/inventory/IInventory",
- "func_70301_a",
- "(I)Lnet/minecraft/item/ItemStack;",
- true);
- mv.visitVarInsn(ASTORE, 5);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(129, l3);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "net/minecraft/inventory/IInventory",
- "func_70301_a",
- "(I)Lnet/minecraft/item/ItemStack;",
- true);
- mv.visitVarInsn(ASTORE, 6);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLineNumber(130, l4);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitTypeInsn(NEW, "net/minecraftforge/fluids/FluidStack");
- mv.visitInsn(DUP);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitIntInsn(SIPUSH, PROCESS_VOLUME);
- mv.visitMethodInsn(
- INVOKESPECIAL,
- "net/minecraftforge/fluids/FluidStack",
- "<init>",
- "(Lnet/minecraftforge/fluids/Fluid;I)V",
- false);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "mods/railcraft/common/fluids/FluidItemHelper",
- "fillContainer",
- "(Lnet/minecraft/item/ItemStack;Lnet/minecraftforge/fluids/FluidStack;)Lmods/railcraft/common/fluids/FluidItemHelper$FillReturn;",
- false);
- mv.visitVarInsn(ASTORE, 7);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(131, l5);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$FillReturn",
- "container",
- "Lnet/minecraft/item/ItemStack;");
- Label l6 = new Label();
- mv.visitJumpInsn(IFNULL, l6);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$FillReturn",
- "container",
- "Lnet/minecraft/item/ItemStack;");
- mv.visitMethodInsn(
- INVOKESTATIC,
- "mods/railcraft/common/fluids/FluidHelper",
- "hasPlaceToPutContainer",
- "(Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z",
- false);
- mv.visitJumpInsn(IFEQ, l6);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLineNumber(132, l7);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETSTATIC,
- "net/minecraftforge/common/util/ForgeDirection",
- "UNKNOWN",
- "Lnet/minecraftforge/common/util/ForgeDirection;");
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "amount", "I");
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "net/minecraftforge/fluids/IFluidHandler",
- "drain",
- "(Lnet/minecraftforge/common/util/ForgeDirection;IZ)Lnet/minecraftforge/fluids/FluidStack;",
- true);
- mv.visitVarInsn(ASTORE, 8);
- Label l8 = new Label();
- mv.visitLabel(l8);
- mv.visitLineNumber(133, l8);
- mv.visitVarInsn(ALOAD, 8);
- mv.visitJumpInsn(IFNULL, l6);
- mv.visitVarInsn(ALOAD, 8);
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "amount", "I");
- mv.visitJumpInsn(IF_ICMPNE, l6);
- Label l9 = new Label();
- mv.visitLabel(l9);
- mv.visitLineNumber(134, l9);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitVarInsn(ALOAD, 8);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "mods/railcraft/common/fluids/FluidItemHelper",
- "fillContainer",
- "(Lnet/minecraft/item/ItemStack;Lnet/minecraftforge/fluids/FluidStack;)Lmods/railcraft/common/fluids/FluidItemHelper$FillReturn;",
- false);
- mv.visitVarInsn(ASTORE, 7);
- Label l10 = new Label();
- mv.visitLabel(l10);
- mv.visitLineNumber(135, l10);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$FillReturn",
- "container",
- "Lnet/minecraft/item/ItemStack;");
- Label l11 = new Label();
- mv.visitJumpInsn(IFNULL, l11);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "amount", "I");
- mv.visitVarInsn(ALOAD, 8);
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- mv.visitJumpInsn(IF_ICMPNE, l11);
- Label l12 = new Label();
- mv.visitLabel(l12);
- mv.visitLineNumber(136, l12);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETSTATIC,
- "net/minecraftforge/common/util/ForgeDirection",
- "UNKNOWN",
- "Lnet/minecraftforge/common/util/ForgeDirection;");
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$FillReturn", "amount", "I");
- mv.visitInsn(ICONST_1);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "net/minecraftforge/fluids/IFluidHandler",
- "drain",
- "(Lnet/minecraftforge/common/util/ForgeDirection;IZ)Lnet/minecraftforge/fluids/FluidStack;",
- true);
- mv.visitInsn(POP);
- Label l13 = new Label();
- mv.visitLabel(l13);
- mv.visitLineNumber(137, l13);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$FillReturn",
- "container",
- "Lnet/minecraft/item/ItemStack;");
- mv.visitMethodInsn(
- INVOKESTATIC,
- "mods/railcraft/common/fluids/FluidHelper",
- "storeContainer",
- "(Lnet/minecraft/inventory/IInventory;IILnet/minecraft/item/ItemStack;)V",
- false);
- mv.visitLabel(l11);
- mv.visitLineNumber(139, l11);
- mv.visitFrame(
- F_FULL,
- 9,
- new Object[] {
- "net/minecraftforge/fluids/IFluidHandler",
- "net/minecraft/inventory/IInventory",
- INTEGER,
- INTEGER,
- "net/minecraftforge/fluids/Fluid",
- "net/minecraft/item/ItemStack",
- "net/minecraft/item/ItemStack",
- "mods/railcraft/common/fluids/FluidItemHelper$FillReturn",
- "net/minecraftforge/fluids/FluidStack"
- },
- 0,
- new Object[] {});
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l6);
- mv.visitLineNumber(142, l6);
- mv.visitFrame(F_CHOP, 1, null, 0, null);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(IRETURN);
- Label l14 = new Label();
- mv.visitLabel(l14);
- mv.visitLocalVariable("drain", "Lnet/minecraftforge/fluids/FluidStack;", null, l8, l6, 8);
- mv.visitLocalVariable("fluidHandler", "Lnet/minecraftforge/fluids/IFluidHandler;", null, l0, l14, 0);
- mv.visitLocalVariable("inv", "Lnet/minecraft/inventory/IInventory;", null, l0, l14, 1);
- mv.visitLocalVariable("inputSlot", "I", null, l0, l14, 2);
- mv.visitLocalVariable("outputSlot", "I", null, l0, l14, 3);
- mv.visitLocalVariable("fluidToFill", "Lnet/minecraftforge/fluids/Fluid;", null, l0, l14, 4);
- mv.visitLocalVariable("input", "Lnet/minecraft/item/ItemStack;", null, l3, l14, 5);
- mv.visitLocalVariable("output", "Lnet/minecraft/item/ItemStack;", null, l4, l14, 6);
- mv.visitLocalVariable(
- "fill", "Lmods/railcraft/common/fluids/FluidItemHelper$FillReturn;", null, l5, l14, 7);
- mv.visitMaxs(5, 9);
- mv.visitEnd();
- didInject = true;
- } else if (aMethodName.equals("drainContainers") && !obfuscated) {
- mv = cw.visitMethod(
- ACC_PUBLIC + ACC_STATIC,
- "drainContainers",
- "(Lnet/minecraftforge/fluids/IFluidHandler;Lnet/minecraft/inventory/IInventory;II)Z",
- null,
- null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(146, l0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "net/minecraft/inventory/IInventory",
- "getStackInSlot",
- "(I)Lnet/minecraft/item/ItemStack;",
- true);
- mv.visitVarInsn(ASTORE, 4);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(147, l1);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "net/minecraft/inventory/IInventory",
- "getStackInSlot",
- "(I)Lnet/minecraft/item/ItemStack;",
- true);
- mv.visitVarInsn(ASTORE, 5);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(148, l2);
- mv.visitVarInsn(ALOAD, 4);
- Label l3 = new Label();
- mv.visitJumpInsn(IFNULL, l3);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLineNumber(149, l4);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitIntInsn(SIPUSH, PROCESS_VOLUME);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "mods/railcraft/common/fluids/FluidItemHelper",
- "drainContainer",
- "(Lnet/minecraft/item/ItemStack;I)Lmods/railcraft/common/fluids/FluidItemHelper$DrainReturn;",
- false);
- mv.visitVarInsn(ASTORE, 6);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(150, l5);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn",
- "fluidDrained",
- "Lnet/minecraftforge/fluids/FluidStack;");
- mv.visitJumpInsn(IFNULL, l3);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn",
- "container",
- "Lnet/minecraft/item/ItemStack;");
- Label l6 = new Label();
- mv.visitJumpInsn(IFNULL, l6);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn",
- "container",
- "Lnet/minecraft/item/ItemStack;");
- mv.visitMethodInsn(
- INVOKESTATIC,
- "mods/railcraft/common/fluids/FluidHelper",
- "hasPlaceToPutContainer",
- "(Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z",
- false);
- mv.visitJumpInsn(IFEQ, l3);
- mv.visitLabel(l6);
- mv.visitLineNumber(151, l6);
- mv.visitFrame(
- F_APPEND,
- 3,
- new Object[] {
- "net/minecraft/item/ItemStack",
- "net/minecraft/item/ItemStack",
- "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn"
- },
- 0,
- null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETSTATIC,
- "net/minecraftforge/common/util/ForgeDirection",
- "UNKNOWN",
- "Lnet/minecraftforge/common/util/ForgeDirection;");
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn",
- "fluidDrained",
- "Lnet/minecraftforge/fluids/FluidStack;");
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "net/minecraftforge/fluids/IFluidHandler",
- "fill",
- "(Lnet/minecraftforge/common/util/ForgeDirection;Lnet/minecraftforge/fluids/FluidStack;Z)I",
- true);
- mv.visitVarInsn(ISTORE, 7);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLineNumber(152, l7);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "isAtomic", "Z");
- Label l8 = new Label();
- mv.visitJumpInsn(IFEQ, l8);
- mv.visitVarInsn(ILOAD, 7);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn",
- "fluidDrained",
- "Lnet/minecraftforge/fluids/FluidStack;");
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- Label l9 = new Label();
- mv.visitJumpInsn(IF_ICMPEQ, l9);
- mv.visitLabel(l8);
- mv.visitFrame(F_APPEND, 1, new Object[] {INTEGER}, 0, null);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "isAtomic", "Z");
- mv.visitJumpInsn(IFNE, l3);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn",
- "fluidDrained",
- "Lnet/minecraftforge/fluids/FluidStack;");
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- mv.visitJumpInsn(IFLE, l3);
- mv.visitLabel(l9);
- mv.visitLineNumber(153, l9);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETSTATIC,
- "net/minecraftforge/common/util/ForgeDirection",
- "UNKNOWN",
- "Lnet/minecraftforge/common/util/ForgeDirection;");
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn",
- "fluidDrained",
- "Lnet/minecraftforge/fluids/FluidStack;");
- mv.visitInsn(ICONST_1);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "net/minecraftforge/fluids/IFluidHandler",
- "fill",
- "(Lnet/minecraftforge/common/util/ForgeDirection;Lnet/minecraftforge/fluids/FluidStack;Z)I",
- true);
- mv.visitInsn(POP);
- Label l10 = new Label();
- mv.visitLabel(l10);
- mv.visitLineNumber(154, l10);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn",
- "container",
- "Lnet/minecraft/item/ItemStack;");
- mv.visitMethodInsn(
- INVOKESTATIC,
- "mods/railcraft/common/fluids/FluidHelper",
- "storeContainer",
- "(Lnet/minecraft/inventory/IInventory;IILnet/minecraft/item/ItemStack;)V",
- false);
- Label l11 = new Label();
- mv.visitLabel(l11);
- mv.visitLineNumber(155, l11);
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l3);
- mv.visitLineNumber(159, l3);
- mv.visitFrame(F_CHOP, 2, null, 0, null);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(IRETURN);
- Label l12 = new Label();
- mv.visitLabel(l12);
- mv.visitLocalVariable("used", "I", null, l7, l3, 7);
- mv.visitLocalVariable(
- "drain", "Lmods/railcraft/common/fluids/FluidItemHelper$DrainReturn;", null, l5, l3, 6);
- mv.visitLocalVariable("fluidHandler", "Lnet/minecraftforge/fluids/IFluidHandler;", null, l0, l12, 0);
- mv.visitLocalVariable("inv", "Lnet/minecraft/inventory/IInventory;", null, l0, l12, 1);
- mv.visitLocalVariable("inputSlot", "I", null, l0, l12, 2);
- mv.visitLocalVariable("outputSlot", "I", null, l0, l12, 3);
- mv.visitLocalVariable("input", "Lnet/minecraft/item/ItemStack;", null, l1, l12, 4);
- mv.visitLocalVariable("output", "Lnet/minecraft/item/ItemStack;", null, l2, l12, 5);
- mv.visitMaxs(4, 8);
- mv.visitEnd();
- didInject = true;
- } else if (aMethodName.equals("drainContainers") && obfuscated) {
- mv = cw.visitMethod(
- ACC_PUBLIC + ACC_STATIC,
- "drainContainers",
- "(Lnet/minecraftforge/fluids/IFluidHandler;Lnet/minecraft/inventory/IInventory;II)Z",
- null,
- null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(146, l0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "net/minecraft/inventory/IInventory",
- "func_70301_a",
- "(I)Lnet/minecraft/item/ItemStack;",
- true);
- mv.visitVarInsn(ASTORE, 4);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(147, l1);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "net/minecraft/inventory/IInventory",
- "func_70301_a",
- "(I)Lnet/minecraft/item/ItemStack;",
- true);
- mv.visitVarInsn(ASTORE, 5);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(148, l2);
- mv.visitVarInsn(ALOAD, 4);
- Label l3 = new Label();
- mv.visitJumpInsn(IFNULL, l3);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLineNumber(149, l4);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitIntInsn(SIPUSH, PROCESS_VOLUME);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "mods/railcraft/common/fluids/FluidItemHelper",
- "drainContainer",
- "(Lnet/minecraft/item/ItemStack;I)Lmods/railcraft/common/fluids/FluidItemHelper$DrainReturn;",
- false);
- mv.visitVarInsn(ASTORE, 6);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(150, l5);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn",
- "fluidDrained",
- "Lnet/minecraftforge/fluids/FluidStack;");
- mv.visitJumpInsn(IFNULL, l3);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn",
- "container",
- "Lnet/minecraft/item/ItemStack;");
- Label l6 = new Label();
- mv.visitJumpInsn(IFNULL, l6);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn",
- "container",
- "Lnet/minecraft/item/ItemStack;");
- mv.visitMethodInsn(
- INVOKESTATIC,
- "mods/railcraft/common/fluids/FluidHelper",
- "hasPlaceToPutContainer",
- "(Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z",
- false);
- mv.visitJumpInsn(IFEQ, l3);
- mv.visitLabel(l6);
- mv.visitLineNumber(151, l6);
- mv.visitFrame(
- F_APPEND,
- 3,
- new Object[] {
- "net/minecraft/item/ItemStack",
- "net/minecraft/item/ItemStack",
- "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn"
- },
- 0,
- null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETSTATIC,
- "net/minecraftforge/common/util/ForgeDirection",
- "UNKNOWN",
- "Lnet/minecraftforge/common/util/ForgeDirection;");
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn",
- "fluidDrained",
- "Lnet/minecraftforge/fluids/FluidStack;");
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "net/minecraftforge/fluids/IFluidHandler",
- "fill",
- "(Lnet/minecraftforge/common/util/ForgeDirection;Lnet/minecraftforge/fluids/FluidStack;Z)I",
- true);
- mv.visitVarInsn(ISTORE, 7);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLineNumber(152, l7);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "isAtomic", "Z");
- Label l8 = new Label();
- mv.visitJumpInsn(IFEQ, l8);
- mv.visitVarInsn(ILOAD, 7);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn",
- "fluidDrained",
- "Lnet/minecraftforge/fluids/FluidStack;");
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- Label l9 = new Label();
- mv.visitJumpInsn(IF_ICMPEQ, l9);
- mv.visitLabel(l8);
- mv.visitFrame(F_APPEND, 1, new Object[] {INTEGER}, 0, null);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(GETFIELD, "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn", "isAtomic", "Z");
- mv.visitJumpInsn(IFNE, l3);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn",
- "fluidDrained",
- "Lnet/minecraftforge/fluids/FluidStack;");
- mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I");
- mv.visitJumpInsn(IFLE, l3);
- mv.visitLabel(l9);
- mv.visitLineNumber(153, l9);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(
- GETSTATIC,
- "net/minecraftforge/common/util/ForgeDirection",
- "UNKNOWN",
- "Lnet/minecraftforge/common/util/ForgeDirection;");
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn",
- "fluidDrained",
- "Lnet/minecraftforge/fluids/FluidStack;");
- mv.visitInsn(ICONST_1);
- mv.visitMethodInsn(
- INVOKEINTERFACE,
- "net/minecraftforge/fluids/IFluidHandler",
- "fill",
- "(Lnet/minecraftforge/common/util/ForgeDirection;Lnet/minecraftforge/fluids/FluidStack;Z)I",
- true);
- mv.visitInsn(POP);
- Label l10 = new Label();
- mv.visitLabel(l10);
- mv.visitLineNumber(154, l10);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitFieldInsn(
- GETFIELD,
- "mods/railcraft/common/fluids/FluidItemHelper$DrainReturn",
- "container",
- "Lnet/minecraft/item/ItemStack;");
- mv.visitMethodInsn(
- INVOKESTATIC,
- "mods/railcraft/common/fluids/FluidHelper",
- "storeContainer",
- "(Lnet/minecraft/inventory/IInventory;IILnet/minecraft/item/ItemStack;)V",
- false);
- Label l11 = new Label();
- mv.visitLabel(l11);
- mv.visitLineNumber(155, l11);
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l3);
- mv.visitLineNumber(159, l3);
- mv.visitFrame(F_CHOP, 2, null, 0, null);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(IRETURN);
- Label l12 = new Label();
- mv.visitLabel(l12);
- mv.visitLocalVariable("used", "I", null, l7, l3, 7);
- mv.visitLocalVariable(
- "drain", "Lmods/railcraft/common/fluids/FluidItemHelper$DrainReturn;", null, l5, l3, 6);
- mv.visitLocalVariable("fluidHandler", "Lnet/minecraftforge/fluids/IFluidHandler;", null, l0, l12, 0);
- mv.visitLocalVariable("inv", "Lnet/minecraft/inventory/IInventory;", null, l0, l12, 1);
- mv.visitLocalVariable("inputSlot", "I", null, l0, l12, 2);
- mv.visitLocalVariable("outputSlot", "I", null, l0, l12, 3);
- mv.visitLocalVariable("input", "Lnet/minecraft/item/ItemStack;", null, l1, l12, 4);
- mv.visitLocalVariable("output", "Lnet/minecraft/item/ItemStack;", null, l2, l12, 5);
- mv.visitMaxs(4, 8);
- mv.visitEnd();
- didInject = true;
- }
-
- FMLRelaunchLog.log(
- "[GT++ ASM] Railcraft PROCESS_VOLUME Patch",
- Level.INFO,
- "Method injection complete. " + (obfuscated ? "Obfuscated" : "Non-Obfuscated"));
- return didInject;
- }
-
- public class AddFieldAdapter extends ClassVisitor {
-
- public AddFieldAdapter(ClassVisitor cv) {
- super(ASM5, cv);
- this.cv = cv;
- }
-
- @Override
- public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) {
- if (name.equals("PROCESS_VOLUME") && desc.equals("I")) {
- FMLRelaunchLog.log(
- "[GT++ ASM] Railcraft PROCESS_VOLUME Patch", Level.INFO, "Removing " + "PROCESS_VOLUME" + ".");
- return null;
- }
- return cv.visitField(access, name, desc, signature, value);
- }
-
- private final String[] aMethodsToStrip = new String[] {"fillContainers", "drainContainers"};
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
-
- MethodVisitor methodVisitor;
- boolean found = false;
-
- for (String s : aMethodsToStrip) {
- if (name.equals(s)) {
- found = true;
- break;
- }
- }
- if (!found) {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- } else {
- methodVisitor = null;
- }
-
- if (found) {
- FMLRelaunchLog.log(
- "[GT++ ASM] Railcraft PROCESS_VOLUME Patch",
- Level.INFO,
- "Found method " + name + ", removing.");
- }
- return methodVisitor;
- }
- }
-}
diff --git a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_InvTools.java b/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_InvTools.java
deleted file mode 100644
index a74cb97500..0000000000
--- a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_InvTools.java
+++ /dev/null
@@ -1,229 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
-import static org.objectweb.asm.Opcodes.ACC_STATIC;
-import static org.objectweb.asm.Opcodes.ALOAD;
-import static org.objectweb.asm.Opcodes.ARETURN;
-import static org.objectweb.asm.Opcodes.ASM5;
-import static org.objectweb.asm.Opcodes.INVOKESTATIC;
-
-import cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gregtech.api.enums.GT_Values;
-import gtPlusPlus.core.util.minecraft.ItemUtils;
-import java.lang.reflect.Method;
-import net.minecraft.inventory.IInventory;
-import net.minecraft.item.ItemStack;
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.Label;
-import org.objectweb.asm.MethodVisitor;
-
-public class ClassTransformer_Railcraft_InvTools {
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
- private boolean obfuscated = true;
-
- public static ItemStack depleteItem(ItemStack stack) {
- if (stack == null) {
- return GT_Values.NI;
- } else {
- if (stack.stackSize == 0) {
- return GT_Values.NI;
- } else if (stack.stackSize == 1) {
- ItemStack container = stack.getItem().getContainerItem(stack);
- if (container != null) {
- return container;
- } else {
- return GT_Values.NI;
- }
- } else {
- return ItemUtils.depleteStack(stack);
- }
- }
- }
-
- public ClassTransformer_Railcraft_InvTools(byte[] basicClass, boolean obfuscated2) {
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- boolean devEnv = false;
- boolean a1 = false;
- boolean a2 = false;
-
- // Find Non-Obf method
- try {
- Method aGetStackInSlot = IInventory.class.getDeclaredMethod("getStackInSlot", int.class);
- if (aGetStackInSlot != null) {
- a1 = true;
- }
- } catch (NoSuchMethodException | SecurityException e) {
- }
-
- // Find Obf method
- try {
- Method aGetStackInSlotObf = IInventory.class.getDeclaredMethod("func_70301_a", int.class);
- if (aGetStackInSlotObf != null) {
- a2 = true;
- }
- } catch (NoSuchMethodException | SecurityException e) {
- }
-
- if (a1) {
- devEnv = false;
- } else if (a2) {
- devEnv = true;
- } else {
- // Fallback
- devEnv = false;
- }
-
- if (obfuscated && devEnv) {
-
- } else {
-
- }
-
- FMLRelaunchLog.log(
- "[GT++ ASM] Railcraft negative ItemStack Fix",
- Level.INFO,
- "Are we patching obfuscated method? " + obfuscated);
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- aTempReader.accept(new AddFieldAdapter(aTempWriter), 0);
-
- injectMethod("depleteItem", aTempWriter, obfuscated);
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- } else {
- isValid = false;
- }
-
- FMLRelaunchLog.log("[GT++ ASM] Railcraft negative ItemStack Fix", Level.INFO, "Valid? " + isValid + ".");
- reader = aTempReader;
- writer = aTempWriter;
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- public boolean injectMethod(String aMethodName, ClassWriter cw, boolean obfuscated) {
- MethodVisitor mv;
- boolean didInject = false;
- FMLRelaunchLog.log("[GT++ ASM] Railcraft negative ItemStack Fix", Level.INFO, "Injecting " + aMethodName + ".");
- if (aMethodName.equals("depleteItem") && !obfuscated) {
- mv = cw.visitMethod(
- ACC_PUBLIC + ACC_STATIC,
- "depleteItem",
- "(Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/ItemStack;",
- null,
- null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(36, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_InvTools",
- "depleteItem",
- "(Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/ItemStack;",
- false);
- mv.visitInsn(ARETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("stack", "Lnet/minecraft/item/ItemStack;", null, l0, l1, 0);
- mv.visitMaxs(1, 1);
- mv.visitEnd();
- didInject = true;
- } else if (aMethodName.equals("depleteItem") && obfuscated) {
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "depleteItem", "(Ladd;)Ladd;", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(36, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_InvTools",
- "depleteItem",
- "(Ladd;)Ladd;",
- false);
- mv.visitInsn(ARETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("stack", "Ladd;", null, l0, l1, 0);
- mv.visitMaxs(1, 1);
- mv.visitEnd();
- didInject = true;
- }
- FMLRelaunchLog.log(
- "[GT++ ASM] Railcraft negative ItemStack Fix",
- Level.INFO,
- "Method injection complete. " + (obfuscated ? "Obfuscated" : "Non-Obfuscated"));
- return didInject;
- }
-
- public class AddFieldAdapter extends ClassVisitor {
-
- public AddFieldAdapter(ClassVisitor cv) {
- super(ASM5, cv);
- this.cv = cv;
- }
-
- private final String[] aMethodsToStrip = new String[] {"depleteItem"};
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
-
- MethodVisitor methodVisitor;
- boolean found = false;
-
- for (String s : aMethodsToStrip) {
- if (name.equals(s)) {
- found = true;
- break;
- }
- }
- if (!found) {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- } else {
- if (desc.equals("(Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/ItemStack;")) {
- obfuscated = false;
- } else if (desc.equals("(Ladd;)Ladd;")) {
- obfuscated = true;
- } else {
- obfuscated = false;
- }
- FMLRelaunchLog.log(
- "[GT++ ASM] Railcraft negative ItemStack Fix",
- Level.INFO,
- "Method desc " + desc + ", using "
- + (obfuscated ? "obfuscated method handler" : "deobfuscated method handler"));
- methodVisitor = null;
- }
-
- if (found) {
- FMLRelaunchLog.log(
- "[GT++ ASM] Railcraft negative ItemStack Fix",
- Level.INFO,
- "Found method " + name + ", removing.");
- }
- return methodVisitor;
- }
- }
-}
diff --git a/src/main/java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java b/src/main/java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java
index 1f2abc4a06..ceaebe8740 100644
--- a/src/main/java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java
+++ b/src/main/java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java
@@ -149,32 +149,6 @@ public class Preloader_Transformer_Handler implements IClassTransformer {
.toByteArray();
}
- // Fix RC stuff
- // Patching PROCESS_VOLUME to allow more transfer limits
- if (transformedName.equals(RAILCRAFT_FLUID_HELPER)
- && (AsmConfig.enableRcFlowFix && AsmConfig.maxRailcraftTankProcessVolume != 4000)) {
- Preloader_Logger.INFO("Railcraft PROCESS_VOLUME Patch", "Transforming " + transformedName);
- return new ClassTransformer_Railcraft_FluidHelper(basicClass, obfuscated)
- .getWriter()
- .toByteArray();
- }
- // Patching TRANSFER_RATE in Fluid Loaders/Unloaders
- if ((transformedName.equals(RAILCRAFT_TILE_FLUID_LOADER) && AsmConfig.maxRailcraftFluidLoaderFlow != 20)
- || (transformedName.equals("mods.railcraft.common.blocks.machine.gamma.TileFluidUnloader")
- && AsmConfig.maxRailcraftFluidUnloaderFlow != 80)) {
- Preloader_Logger.INFO("Railcraft TRANSFER_RATE Patch", "Transforming " + transformedName);
- return new ClassTransformer_Railcraft_FluidCartHandling(basicClass, obfuscated, transformedName)
- .getWriter()
- .toByteArray();
- }
- // Fix Weird glitch involving negative itemstacks.
- if (transformedName.equals(RAILCRAFT_INVENTORY_TOOLS) && AsmConfig.enableRcItemDupeFix) {
- Preloader_Logger.INFO("Railcraft negative ItemStack Fix", "Transforming " + transformedName);
- return new ClassTransformer_Railcraft_InvTools(basicClass, obfuscated)
- .getWriter()
- .toByteArray();
- }
-
// Fix GC stuff
if (AsmConfig.enableGcFuelChanges) {
if (transformedName.equals(GALACTICRAFT_FLUID_UTILS)) {