diff options
author | Raven Szewczyk <git@kubasz.xyz> | 2022-08-31 14:51:26 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-31 15:51:26 +0200 |
commit | 5c58462ba6fd5b5a31b000f05599c7e722091d1e (patch) | |
tree | 5f1d5988f55239ab95311583286788ae67fc6b1a | |
parent | 15ec51bb053de5fca2ecf3521ccec0afd1ee373e (diff) | |
download | GT5-Unofficial-5c58462ba6fd5b5a31b000f05599c7e722091d1e.tar.gz GT5-Unofficial-5c58462ba6fd5b5a31b000f05599c7e722091d1e.tar.bz2 GT5-Unofficial-5c58462ba6fd5b5a31b000f05599c7e722091d1e.zip |
Remove Railcraft asm as we have the source code now (#332)
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)) { |