From 807c9ccad181f74384791bc33de932382a528593 Mon Sep 17 00:00:00 2001 From: chochem <40274384+chochem@users.noreply.github.com> Date: Sun, 11 Jun 2023 17:52:25 +0100 Subject: Remove broken GC asm (#666) * remove GC ASM - was broken and disabled anyway * tooltip change was also permanently disabled --- .../java/gtPlusPlus/core/common/CommonProxy.java | 3 - .../java/gtPlusPlus/preloader/asm/AsmConfig.java | 10 - .../preloader/asm/ClassesToTransform.java | 6 - .../ClassTransformer_GC_EntityAutoRocket.java | 798 --------------- .../ClassTransformer_GC_FluidUtil.java | 337 ------- .../ClassTransformer_GC_FuelLoader.java | 1025 -------------------- .../Preloader_Transformer_Handler.java | 19 - .../galacticraft/handler/HandlerTooltip_GC.java | 87 -- 8 files changed, 2285 deletions(-) delete mode 100644 src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_EntityAutoRocket.java delete mode 100644 src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FluidUtil.java delete mode 100644 src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FuelLoader.java delete mode 100644 src/main/java/gtPlusPlus/xmod/galacticraft/handler/HandlerTooltip_GC.java (limited to 'src/main/java') diff --git a/src/main/java/gtPlusPlus/core/common/CommonProxy.java b/src/main/java/gtPlusPlus/core/common/CommonProxy.java index b5652af595..f42a8a5ee5 100644 --- a/src/main/java/gtPlusPlus/core/common/CommonProxy.java +++ b/src/main/java/gtPlusPlus/core/common/CommonProxy.java @@ -54,7 +54,6 @@ import gtPlusPlus.core.util.reflect.ReflectionUtils; import gtPlusPlus.plugin.villagers.block.BlockGenericSpawner; import gtPlusPlus.preloader.CORE_Preloader; import gtPlusPlus.xmod.eio.handler.HandlerTooltip_EIO; -import gtPlusPlus.xmod.galacticraft.handler.HandlerTooltip_GC; import gtPlusPlus.xmod.gregtech.api.util.SpecialBehaviourTooltipHandler; import gtPlusPlus.xmod.gregtech.recipes.GregtechRecipeAdder; import gtPlusPlus.xmod.ic2.CustomInternalName; @@ -121,8 +120,6 @@ public class CommonProxy { Utils.registerEvent(new SpecialBehaviourTooltipHandler()); // Handles Custom tooltips for EIO. Utils.registerEvent(new HandlerTooltip_EIO()); - // Handles Custom Tooltips for GC - Utils.registerEvent(new HandlerTooltip_GC()); // Handles Sleep Benefits PlayerSleepEventHandler.init(); // Handles Magic Feather diff --git a/src/main/java/gtPlusPlus/preloader/asm/AsmConfig.java b/src/main/java/gtPlusPlus/preloader/asm/AsmConfig.java index 53aadc1967..35684c267a 100644 --- a/src/main/java/gtPlusPlus/preloader/asm/AsmConfig.java +++ b/src/main/java/gtPlusPlus/preloader/asm/AsmConfig.java @@ -22,7 +22,6 @@ public class AsmConfig { public static boolean enableGtCharcoalPitFix; public static boolean enableChunkDebugging; public static boolean enableCofhPatch; - public static boolean enableGcFuelChanges; public static boolean enableTcAspectSafety; public static boolean enabledLwjglKeybindingFix; public static boolean enabledFixEntitySetHealth; @@ -117,14 +116,6 @@ public class AsmConfig { enableGtCharcoalPitFix = prop.getBoolean(true); propOrder.add(prop.getName()); - prop = config.get("general", "enableGcFuelChanges", true); - prop.comment = "Enable/Disable changes to Galacticraft Rocket Fuels."; - prop.setLanguageKey("gtpp.enableGcFuelChanges").setRequiresMcRestart(true); - // Disabled because Broken - // enableGcFuelChanges = prop.getBoolean(true); - enableGcFuelChanges = false; - propOrder.add(prop.getName()); - // TC Aspect Safety prop = config.get("general", "enableTcAspectSafety", true); prop.comment = "Fixes small oversights in Thaumcraft 4."; @@ -142,7 +133,6 @@ public class AsmConfig { Preloader_Logger.INFO("Gt Nbt Fix - Enabled: " + enableGtNbtFix); 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("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 55e122587e..d2a03b2522 100644 --- a/src/main/java/gtPlusPlus/preloader/asm/ClassesToTransform.java +++ b/src/main/java/gtPlusPlus/preloader/asm/ClassesToTransform.java @@ -12,12 +12,6 @@ public class ClassesToTransform { public static final String COFH_ORE_DICTIONARY_ARBITER = "cofh.core.util.oredict.OreDictionaryArbiter"; - public static final String TINKERS_FLUID_BLOCK = "tconstruct.smeltery.blocks.TConstructFluid"; - - 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"; - public static final String GALACTICRAFT_ENTITY_AUTO_ROCKET = "micdoodle8.mods.galacticraft.api.prefab.entity.EntityAutoRocket"; - public static final String THAUMCRAFT_ITEM_WISP_ESSENCE = "thaumcraft.common.items.ItemWispEssence"; public static final String THAUMCRAFT_CRAFTING_MANAGER = "thaumcraft.common.lib.crafting.ThaumcraftCraftingManager"; public static final String THAUMCRAFT_TILE_ALCHEMY_FURNACE = "thaumcraft.common.tiles.TileAlchemyFurnace"; diff --git a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_EntityAutoRocket.java b/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_EntityAutoRocket.java deleted file mode 100644 index 1e989fd235..0000000000 --- a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_EntityAutoRocket.java +++ /dev/null @@ -1,798 +0,0 @@ -package gtPlusPlus.preloader.asm.transformers; - -import static org.objectweb.asm.Opcodes.ACC_PUBLIC; -import static org.objectweb.asm.Opcodes.ACONST_NULL; -import static org.objectweb.asm.Opcodes.ALOAD; -import static org.objectweb.asm.Opcodes.ANEWARRAY; -import static org.objectweb.asm.Opcodes.ASM5; -import static org.objectweb.asm.Opcodes.ASTORE; -import static org.objectweb.asm.Opcodes.CHECKCAST; -import static org.objectweb.asm.Opcodes.DDIV; -import static org.objectweb.asm.Opcodes.DUP; -import static org.objectweb.asm.Opcodes.F_APPEND; -import static org.objectweb.asm.Opcodes.F_CHOP; -import static org.objectweb.asm.Opcodes.F_FULL; -import static org.objectweb.asm.Opcodes.F_SAME; -import static org.objectweb.asm.Opcodes.F_SAME1; -import static org.objectweb.asm.Opcodes.GETFIELD; -import static org.objectweb.asm.Opcodes.GOTO; -import static org.objectweb.asm.Opcodes.ICONST_M1; -import static org.objectweb.asm.Opcodes.IFEQ; -import static org.objectweb.asm.Opcodes.IFNONNULL; -import static org.objectweb.asm.Opcodes.IFNULL; -import static org.objectweb.asm.Opcodes.IF_ICMPEQ; -import static org.objectweb.asm.Opcodes.IF_ICMPLE; -import static org.objectweb.asm.Opcodes.IF_ICMPNE; -import static org.objectweb.asm.Opcodes.ILOAD; -import static org.objectweb.asm.Opcodes.INSTANCEOF; -import static org.objectweb.asm.Opcodes.INTEGER; -import static org.objectweb.asm.Opcodes.INVOKESPECIAL; -import static org.objectweb.asm.Opcodes.INVOKESTATIC; -import static org.objectweb.asm.Opcodes.INVOKEVIRTUAL; -import static org.objectweb.asm.Opcodes.ISTORE; -import static org.objectweb.asm.Opcodes.NEW; -import static org.objectweb.asm.Opcodes.PUTFIELD; -import static org.objectweb.asm.Opcodes.RETURN; - -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; - -import cpw.mods.fml.relauncher.FMLRelaunchLog; -import gtPlusPlus.preloader.DevHelper; - -public class ClassTransformer_GC_EntityAutoRocket { - - // The qualified name of the class we plan to transform. - private static final String className = "micdoodle8.mods.galacticraft.api.prefab.entity.EntityAutoRocket"; - // micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket - - private final boolean isValid; - private final ClassReader reader; - private final ClassWriter writer; - private final boolean isObfuscated; - - public ClassTransformer_GC_EntityAutoRocket(byte[] basicClass, boolean obfuscated) { - - ClassReader aTempReader = null; - ClassWriter aTempWriter = null; - - isObfuscated = obfuscated; - - aTempReader = new ClassReader(basicClass); - aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES); - aTempReader.accept(new localClassVisitor(aTempWriter), 0); - - if (aTempReader != null && aTempWriter != null) { - isValid = true; - } else { - isValid = false; - } - reader = aTempReader; - writer = aTempWriter; - - if (reader != null && writer != null) { - injectMethod(); - } else { - FMLRelaunchLog - .log("[GT++ ASM] Galacticraft EntityAutoRocket Patch", Level.INFO, "Failed to Inject new code."); - } - } - - public boolean isValidTransformer() { - return isValid; - } - - public ClassReader getReader() { - return reader; - } - - public ClassWriter getWriter() { - return writer; - } - - public void injectMethod() { - - String aEntityPlayer = isObfuscated ? DevHelper.getObfuscated("net/minecraft/entity/player/EntityPlayer") - : "net/minecraft/entity/player/EntityPlayer"; - String aEntityPlayerMP = isObfuscated ? DevHelper.getObfuscated("net/minecraft/entity/player/EntityPlayerMP") - : "net/minecraft/entity/player/EntityPlayerMP"; - String aWorld = isObfuscated ? DevHelper.getObfuscated("net/minecraft/world/World") - : "net/minecraft/world/World"; - String aItemStack = isObfuscated ? DevHelper.getObfuscated("net/minecraft/item/ItemStack") - : "net/minecraft/item/ItemStack"; - String aEntity = isObfuscated ? DevHelper.getObfuscated("net/minecraft/entity/Entity") - : "net/minecraft/entity/Entity"; - String aWorldClient = isObfuscated ? DevHelper.getObfuscated("net/minecraft/client/multiplayer/WorldClient") - : "net/minecraft/client/multiplayer/WorldClient"; - String aDifficultyEnum = isObfuscated ? DevHelper.getObfuscated("net/minecraft/world/EnumDifficulty") - : "net/minecraft/world/EnumDifficulty"; - String aWorldInfo = isObfuscated ? DevHelper.getObfuscated("net/minecraft/world/storage/WorldInfo") - : "net/minecraft/world/storage/WorldInfo"; - String aItemInWorldManager = isObfuscated - ? DevHelper.getObfuscated("net/minecraft/server/management/ItemInWorldManager") - : "net/minecraft/server/management/ItemInWorldManager"; - String aWorldType = isObfuscated ? DevHelper.getObfuscated("net/minecraft/world/WorldType") - : "net/minecraft/world/WorldType"; - String aGameType = isObfuscated ? DevHelper.getObfuscated("net/minecraft/world/WorldSettings$GameType") - : "net/minecraft/world/WorldSettings$GameType"; - - if (isValidTransformer()) { - FMLRelaunchLog.log( - "[GT++ ASM] Galacticraft EntityAutoRocket Patch", - Level.INFO, - "Injecting decodePacketdata into " + className + "."); - MethodVisitor mv = getWriter() - .visitMethod(ACC_PUBLIC, "decodePacketdata", "(Lio/netty/buffer/ByteBuf;)V", null, null); - - mv.visitCode(); - Label l0 = new Label(); - mv.visitLabel(l0); - mv.visitLineNumber(1027, l0); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn( - INVOKESPECIAL, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntitySpaceshipBase", - "decodePacketdata", - "(Lio/netty/buffer/ByteBuf;)V", - false); - Label l1 = new Label(); - mv.visitLabel(l1); - mv.visitLineNumber(1029, l1); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKESTATIC, - "gtPlusPlus/xmod/galacticraft/util/GalacticUtils", - "getValidFuelForTier", - "(L" + aEntity + ";)Lnet/minecraftforge/fluids/FluidStack;", - false); - mv.visitVarInsn(ASTORE, 2); - Label l2 = new Label(); - mv.visitLabel(l2); - mv.visitLineNumber(1030, l2); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readInt", "()I", false); - mv.visitVarInsn(ISTORE, 3); - Label l3 = new Label(); - mv.visitLabel(l3); - mv.visitLineNumber(1031, l3); - mv.visitVarInsn(ALOAD, 2); - Label l4 = new Label(); - mv.visitJumpInsn(IFNULL, l4); - Label l5 = new Label(); - mv.visitLabel(l5); - mv.visitLineNumber(1032, l5); - mv.visitTypeInsn(NEW, "net/minecraftforge/fluids/FluidStack"); - mv.visitInsn(DUP); - mv.visitVarInsn(ALOAD, 2); - mv.visitVarInsn(ILOAD, 3); - mv.visitMethodInsn( - INVOKESPECIAL, - "net/minecraftforge/fluids/FluidStack", - "", - "(Lnet/minecraftforge/fluids/FluidStack;I)V", - false); - mv.visitVarInsn(ASTORE, 4); - Label l6 = new Label(); - mv.visitLabel(l6); - mv.visitLineNumber(1033, l6); - mv.visitVarInsn(ALOAD, 4); - mv.visitJumpInsn(IFNULL, l4); - Label l7 = new Label(); - mv.visitLabel(l7); - mv.visitLineNumber(1034, l7); - mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn( - GETFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "fuelTank", - "Lnet/minecraftforge/fluids/FluidTank;"); - mv.visitVarInsn(ALOAD, 4); - mv.visitMethodInsn( - INVOKEVIRTUAL, - "net/minecraftforge/fluids/FluidTank", - "setFluid", - "(Lnet/minecraftforge/fluids/FluidStack;)V", - false); - mv.visitLabel(l4); - mv.visitLineNumber(1038, l4); - mv.visitFrame(F_APPEND, 2, new Object[] { "net/minecraftforge/fluids/FluidStack", INTEGER }, 0, null); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readBoolean", "()Z", false); - mv.visitFieldInsn( - PUTFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "landing", - "Z"); - Label l8 = new Label(); - mv.visitLabel(l8); - mv.visitLineNumber(1039, l8); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readInt", "()I", false); - mv.visitFieldInsn( - PUTFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "destinationFrequency", - "I"); - Label l9 = new Label(); - mv.visitLabel(l9); - mv.visitLineNumber(1041, l9); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readBoolean", "()Z", false); - Label l10 = new Label(); - mv.visitJumpInsn(IFEQ, l10); - Label l11 = new Label(); - mv.visitLabel(l11); - mv.visitLineNumber(1043, l11); - mv.visitVarInsn(ALOAD, 0); - mv.visitTypeInsn(NEW, "micdoodle8/mods/galacticraft/api/vector/BlockVec3"); - mv.visitInsn(DUP); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readInt", "()I", false); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readInt", "()I", false); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readInt", "()I", false); - mv.visitMethodInsn( - INVOKESPECIAL, - "micdoodle8/mods/galacticraft/api/vector/BlockVec3", - "", - "(III)V", - false); - mv.visitFieldInsn( - PUTFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "targetVec", - "Lmicdoodle8/mods/galacticraft/api/vector/BlockVec3;"); - mv.visitLabel(l10); - mv.visitLineNumber(1046, l10); - mv.visitFrame(F_SAME, 0, null, 0, null); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readDouble", "()D", false); - mv.visitLdcInsn(new Double("8000.0")); - mv.visitInsn(DDIV); - mv.visitFieldInsn( - PUTFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "motionX", - "D"); - Label l12 = new Label(); - mv.visitLabel(l12); - mv.visitLineNumber(1047, l12); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readDouble", "()D", false); - mv.visitLdcInsn(new Double("8000.0")); - mv.visitInsn(DDIV); - mv.visitFieldInsn( - PUTFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "motionY", - "D"); - Label l13 = new Label(); - mv.visitLabel(l13); - mv.visitLineNumber(1048, l13); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readDouble", "()D", false); - mv.visitLdcInsn(new Double("8000.0")); - mv.visitInsn(DDIV); - mv.visitFieldInsn( - PUTFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "motionZ", - "D"); - Label l14 = new Label(); - mv.visitLabel(l14); - mv.visitLineNumber(1049, l14); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readDouble", "()D", false); - mv.visitLdcInsn(new Double("8000.0")); - mv.visitInsn(DDIV); - mv.visitFieldInsn( - PUTFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "lastMotionY", - "D"); - Label l15 = new Label(); - mv.visitLabel(l15); - mv.visitLineNumber(1050, l15); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readDouble", "()D", false); - mv.visitLdcInsn(new Double("8000.0")); - mv.visitInsn(DDIV); - mv.visitFieldInsn( - PUTFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "lastLastMotionY", - "D"); - Label l16 = new Label(); - mv.visitLabel(l16); - mv.visitLineNumber(1052, l16); - mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn( - GETFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "cargoItems", - "[L" + aItemStack + ";"); - Label l17 = new Label(); - mv.visitJumpInsn(IFNONNULL, l17); - Label l18 = new Label(); - mv.visitLabel(l18); - mv.visitLineNumber(1054, l18); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKEVIRTUAL, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "getSizeInventory", - "()I", - false); - mv.visitTypeInsn(ANEWARRAY, aItemStack); - mv.visitFieldInsn( - PUTFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "cargoItems", - "[L" + aItemStack + ";"); - mv.visitLabel(l17); - mv.visitLineNumber(1057, l17); - mv.visitFrame(F_SAME, 0, null, 0, null); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readBoolean", "()Z", false); - mv.visitMethodInsn( - INVOKEVIRTUAL, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "setWaitForPlayer", - "(Z)V", - false); - Label l19 = new Label(); - mv.visitLabel(l19); - mv.visitLineNumber(1059, l19); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn( - INVOKESTATIC, - "cpw/mods/fml/common/network/ByteBufUtils", - "readUTF8String", - "(Lio/netty/buffer/ByteBuf;)Ljava/lang/String;", - false); - mv.visitFieldInsn( - PUTFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "statusMessage", - "Ljava/lang/String;"); - Label l20 = new Label(); - mv.visitLabel(l20); - mv.visitLineNumber(1060, l20); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn( - GETFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "statusMessage", - "Ljava/lang/String;"); - mv.visitLdcInsn(""); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false); - Label l21 = new Label(); - mv.visitJumpInsn(IFEQ, l21); - mv.visitInsn(ACONST_NULL); - Label l22 = new Label(); - mv.visitJumpInsn(GOTO, l22); - mv.visitLabel(l21); - mv.visitFrame( - F_SAME1, - 0, - null, - 1, - new Object[] { "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket" }); - mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn( - GETFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "statusMessage", - "Ljava/lang/String;"); - mv.visitLabel(l22); - mv.visitFrame( - F_FULL, - 4, - new Object[] { "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "io/netty/buffer/ByteBuf", "net/minecraftforge/fluids/FluidStack", INTEGER }, - 2, - new Object[] { "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "java/lang/String" }); - mv.visitFieldInsn( - PUTFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "statusMessage", - "Ljava/lang/String;"); - Label l23 = new Label(); - mv.visitLabel(l23); - mv.visitLineNumber(1061, l23); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readInt", "()I", false); - mv.visitFieldInsn( - PUTFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "statusMessageCooldown", - "I"); - Label l24 = new Label(); - mv.visitLabel(l24); - mv.visitLineNumber(1062, l24); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readInt", "()I", false); - mv.visitFieldInsn( - PUTFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "lastStatusMessageCooldown", - "I"); - Label l25 = new Label(); - mv.visitLabel(l25); - mv.visitLineNumber(1063, l25); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readBoolean", "()Z", false); - mv.visitFieldInsn( - PUTFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "statusValid", - "Z"); - Label l26 = new Label(); - mv.visitLabel(l26); - mv.visitLineNumber(1066, l26); - mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn( - GETFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "worldObj", - "L" + aWorld + ";"); - mv.visitFieldInsn(GETFIELD, aWorld, "isRemote", "Z"); - Label l27 = new Label(); - mv.visitJumpInsn(IFEQ, l27); - Label l28 = new Label(); - mv.visitLabel(l28); - mv.visitLineNumber(1068, l28); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn(INVOKEVIRTUAL, "io/netty/buffer/ByteBuf", "readInt", "()I", false); - mv.visitVarInsn(ISTORE, 4); - Label l29 = new Label(); - mv.visitLabel(l29); - mv.visitLineNumber(1069, l29); - mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn( - GETFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "riddenByEntity", - "L" + aEntity + ";"); - Label l30 = new Label(); - mv.visitJumpInsn(IFNONNULL, l30); - Label l31 = new Label(); - mv.visitLabel(l31); - mv.visitLineNumber(1071, l31); - mv.visitVarInsn(ILOAD, 4); - mv.visitInsn(ICONST_M1); - mv.visitJumpInsn(IF_ICMPLE, l27); - Label l32 = new Label(); - mv.visitLabel(l32); - mv.visitLineNumber(1073, l32); - mv.visitMethodInsn( - INVOKESTATIC, - "cpw/mods/fml/client/FMLClientHandler", - "instance", - "()Lcpw/mods/fml/client/FMLClientHandler;", - false); - mv.visitMethodInsn( - INVOKEVIRTUAL, - "cpw/mods/fml/client/FMLClientHandler", - "getWorldClient", - "()L" + aWorldClient + ";", - false); - mv.visitVarInsn(ILOAD, 4); - mv.visitMethodInsn(INVOKEVIRTUAL, "" + aWorldClient + "", "getEntityByID", "(I)L" + aEntity + ";", false); - mv.visitVarInsn(ASTORE, 5); - Label l33 = new Label(); - mv.visitLabel(l33); - mv.visitLineNumber(1074, l33); - mv.visitVarInsn(ALOAD, 5); - mv.visitJumpInsn(IFNULL, l27); - Label l34 = new Label(); - mv.visitLabel(l34); - mv.visitLineNumber(1076, l34); - mv.visitVarInsn(ALOAD, 5); - mv.visitFieldInsn(GETFIELD, "" + aEntity + "", "dimension", "I"); - mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn( - GETFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "dimension", - "I"); - Label l35 = new Label(); - mv.visitJumpInsn(IF_ICMPEQ, l35); - Label l36 = new Label(); - mv.visitLabel(l36); - mv.visitLineNumber(1078, l36); - mv.visitVarInsn(ALOAD, 5); - mv.visitTypeInsn(INSTANCEOF, "" + aEntityPlayer + ""); - mv.visitJumpInsn(IFEQ, l27); - Label l37 = new Label(); - mv.visitLabel(l37); - mv.visitLineNumber(1080, l37); - mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn( - GETFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "dimension", - "I"); - mv.visitVarInsn(ALOAD, 5); - mv.visitFieldInsn(GETFIELD, "" + aEntity + "", "worldObj", "L" + aWorld + ";"); - mv.visitFieldInsn(GETFIELD, aWorld, "difficultySetting", "L" + aDifficultyEnum + ";"); - mv.visitMethodInsn(INVOKEVIRTUAL, "" + aDifficultyEnum + "", "getDifficultyId", "()I", false); - mv.visitVarInsn(ALOAD, 5); - mv.visitFieldInsn(GETFIELD, "" + aEntity + "", "worldObj", "L" + aWorld + ";"); - mv.visitMethodInsn(INVOKEVIRTUAL, aWorld, "getWorldInfo", "()L" + aWorldInfo + ";", false); - mv.visitMethodInsn(INVOKEVIRTUAL, "" + aWorldInfo + "", "getTerrainType", "()L" + aWorldType + ";", false); - mv.visitMethodInsn(INVOKEVIRTUAL, aWorldType, "getWorldTypeName", "()Ljava/lang/String;", false); - mv.visitVarInsn(ALOAD, 5); - mv.visitTypeInsn(CHECKCAST, "" + aEntityPlayerMP + ""); - mv.visitFieldInsn( - GETFIELD, - "" + aEntityPlayerMP + "", - "theItemInWorldManager", - "L" + aItemInWorldManager + ";"); - mv.visitMethodInsn( - INVOKEVIRTUAL, - "" + aItemInWorldManager + "", - "getGameType", - "()L" + aGameType + ";", - false); - mv.visitMethodInsn(INVOKEVIRTUAL, "" + aGameType + "", "getID", "()I", false); - mv.visitMethodInsn( - INVOKESTATIC, - "micdoodle8/mods/galacticraft/core/util/WorldUtil", - "forceRespawnClient", - "(IILjava/lang/String;I)L" + aEntityPlayer + ";", - false); - mv.visitVarInsn(ASTORE, 5); - Label l38 = new Label(); - mv.visitLabel(l38); - mv.visitLineNumber(1081, l38); - mv.visitVarInsn(ALOAD, 5); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn(INVOKEVIRTUAL, "" + aEntity + "", "mountEntity", "(L" + aEntity + ";)V", false); - Label l39 = new Label(); - mv.visitLabel(l39); - mv.visitLineNumber(1083, l39); - mv.visitJumpInsn(GOTO, l27); - mv.visitLabel(l35); - mv.visitLineNumber(1085, l35); - mv.visitFrame(F_APPEND, 2, new Object[] { INTEGER, "" + aEntity + "" }, 0, null); - mv.visitVarInsn(ALOAD, 5); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn(INVOKEVIRTUAL, "" + aEntity + "", "mountEntity", "(L" + aEntity + ";)V", false); - Label l40 = new Label(); - mv.visitLabel(l40); - mv.visitLineNumber(1088, l40); - mv.visitJumpInsn(GOTO, l27); - mv.visitLabel(l30); - mv.visitLineNumber(1089, l30); - mv.visitFrame(F_CHOP, 1, null, 0, null); - mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn( - GETFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "riddenByEntity", - "L" + aEntity + ";"); - mv.visitMethodInsn(INVOKEVIRTUAL, "" + aEntity + "", "getEntityId", "()I", false); - mv.visitVarInsn(ILOAD, 4); - mv.visitJumpInsn(IF_ICMPEQ, l27); - Label l41 = new Label(); - mv.visitLabel(l41); - mv.visitLineNumber(1091, l41); - mv.visitVarInsn(ILOAD, 4); - mv.visitInsn(ICONST_M1); - Label l42 = new Label(); - mv.visitJumpInsn(IF_ICMPNE, l42); - Label l43 = new Label(); - mv.visitLabel(l43); - mv.visitLineNumber(1093, l43); - mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn( - GETFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "riddenByEntity", - "L" + aEntity + ";"); - mv.visitInsn(ACONST_NULL); - mv.visitMethodInsn(INVOKEVIRTUAL, "" + aEntity + "", "mountEntity", "(L" + aEntity + ";)V", false); - Label l44 = new Label(); - mv.visitLabel(l44); - mv.visitLineNumber(1094, l44); - mv.visitJumpInsn(GOTO, l27); - mv.visitLabel(l42); - mv.visitLineNumber(1097, l42); - mv.visitFrame(F_SAME, 0, null, 0, null); - mv.visitMethodInsn( - INVOKESTATIC, - "cpw/mods/fml/client/FMLClientHandler", - "instance", - "()Lcpw/mods/fml/client/FMLClientHandler;", - false); - mv.visitMethodInsn( - INVOKEVIRTUAL, - "cpw/mods/fml/client/FMLClientHandler", - "getWorldClient", - "()L" + aWorldClient + ";", - false); - mv.visitVarInsn(ILOAD, 4); - mv.visitMethodInsn(INVOKEVIRTUAL, "" + aWorldClient + "", "getEntityByID", "(I)L" + aEntity + ";", false); - mv.visitVarInsn(ASTORE, 5); - Label l45 = new Label(); - mv.visitLabel(l45); - mv.visitLineNumber(1098, l45); - mv.visitVarInsn(ALOAD, 5); - mv.visitJumpInsn(IFNULL, l27); - Label l46 = new Label(); - mv.visitLabel(l46); - mv.visitLineNumber(1100, l46); - mv.visitVarInsn(ALOAD, 5); - mv.visitFieldInsn(GETFIELD, "" + aEntity + "", "dimension", "I"); - mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn( - GETFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "dimension", - "I"); - Label l47 = new Label(); - mv.visitJumpInsn(IF_ICMPEQ, l47); - Label l48 = new Label(); - mv.visitLabel(l48); - mv.visitLineNumber(1102, l48); - mv.visitVarInsn(ALOAD, 5); - mv.visitTypeInsn(INSTANCEOF, "" + aEntityPlayer + ""); - mv.visitJumpInsn(IFEQ, l27); - Label l49 = new Label(); - mv.visitLabel(l49); - mv.visitLineNumber(1104, l49); - mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn( - GETFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "dimension", - "I"); - mv.visitVarInsn(ALOAD, 5); - mv.visitFieldInsn(GETFIELD, "" + aEntity + "", "worldObj", "L" + aWorld + ";"); - mv.visitFieldInsn(GETFIELD, aWorld, "difficultySetting", "L" + aDifficultyEnum + ";"); - mv.visitMethodInsn(INVOKEVIRTUAL, "" + aDifficultyEnum + "", "getDifficultyId", "()I", false); - mv.visitVarInsn(ALOAD, 5); - mv.visitFieldInsn(GETFIELD, "" + aEntity + "", "worldObj", "L" + aWorld + ";"); - mv.visitMethodInsn(INVOKEVIRTUAL, aWorld, "getWorldInfo", "()L" + aWorldInfo + ";", false); - mv.visitMethodInsn(INVOKEVIRTUAL, "" + aWorldInfo + "", "getTerrainType", "()L" + aWorldType + ";", false); - mv.visitMethodInsn(INVOKEVIRTUAL, aWorldType, "getWorldTypeName", "()Ljava/lang/String;", false); - mv.visitVarInsn(ALOAD, 5); - mv.visitTypeInsn(CHECKCAST, "" + aEntityPlayerMP + ""); - mv.visitFieldInsn( - GETFIELD, - "" + aEntityPlayerMP + "", - "theItemInWorldManager", - "L" + aItemInWorldManager + ";"); - mv.visitMethodInsn( - INVOKEVIRTUAL, - "" + aItemInWorldManager + "", - "getGameType", - "()L" + aGameType + ";", - false); - mv.visitMethodInsn(INVOKEVIRTUAL, "" + aGameType + "", "getID", "()I", false); - mv.visitMethodInsn( - INVOKESTATIC, - "micdoodle8/mods/galacticraft/core/util/WorldUtil", - "forceRespawnClient", - "(IILjava/lang/String;I)L" + aEntityPlayer + ";", - false); - mv.visitVarInsn(ASTORE, 5); - Label l50 = new Label(); - mv.visitLabel(l50); - mv.visitLineNumber(1105, l50); - mv.visitVarInsn(ALOAD, 5); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn(INVOKEVIRTUAL, "" + aEntity + "", "mountEntity", "(L" + aEntity + ";)V", false); - Label l51 = new Label(); - mv.visitLabel(l51); - mv.visitLineNumber(1107, l51); - mv.visitJumpInsn(GOTO, l27); - mv.visitLabel(l47); - mv.visitLineNumber(1109, l47); - mv.visitFrame(F_APPEND, 1, new Object[] { "" + aEntity + "" }, 0, null); - mv.visitVarInsn(ALOAD, 5); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn(INVOKEVIRTUAL, "" + aEntity + "", "mountEntity", "(L" + aEntity + ";)V", false); - mv.visitLabel(l27); - mv.visitLineNumber(1114, l27); - mv.visitFrame(F_CHOP, 2, null, 0, null); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn( - INVOKESTATIC, - "cpw/mods/fml/common/network/ByteBufUtils", - "readUTF8String", - "(Lio/netty/buffer/ByteBuf;)Ljava/lang/String;", - false); - mv.visitFieldInsn( - PUTFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "statusColour", - "Ljava/lang/String;"); - Label l52 = new Label(); - mv.visitLabel(l52); - mv.visitLineNumber(1115, l52); - mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn( - GETFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "statusColour", - "Ljava/lang/String;"); - mv.visitLdcInsn(""); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false); - Label l53 = new Label(); - mv.visitJumpInsn(IFEQ, l53); - mv.visitVarInsn(ALOAD, 0); - mv.visitInsn(ACONST_NULL); - mv.visitFieldInsn( - PUTFIELD, - "micdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket", - "statusColour", - "Ljava/lang/String;"); - mv.visitLabel(l53); - mv.visitLineNumber(1116, l53); - mv.visitFrame(F_SAME, 0, null, 0, null); - mv.visitInsn(RETURN); - Label l54 = new Label(); - mv.visitLabel(l54); - mv.visitLocalVariable( - "this", - "Lmicdoodle8/mods/galacticraft/api/prefab/entity/EntityAutoRocket;", - null, - l0, - l54, - 0); - mv.visitLocalVariable("buffer", "Lio/netty/buffer/ByteBuf;", null, l0, l54, 1); - mv.visitLocalVariable("g", "Lnet/minecraftforge/fluids/FluidStack;", null, l2, l54, 2); - mv.visitLocalVariable("aBufferData", "I", null, l3, l54, 3); - mv.visitLocalVariable("s", "Lnet/minecraftforge/fluids/FluidStack;", null, l6, l4, 4); - mv.visitLocalVariable("shouldBeMountedId", "I", null, l29, l27, 4); - mv.visitLocalVariable("e", "L" + aEntity + ";", null, l33, l40, 5); - mv.visitLocalVariable("e", "L" + aEntity + ";", null, l45, l27, 5); - mv.visitMaxs(6, 6); - mv.visitEnd(); - } - } - - public static final class localClassVisitor extends ClassVisitor { - - public localClassVisitor(ClassVisitor cv) { - super(ASM5, cv); - FMLRelaunchLog - .log("[GT++ ASM] Galacticraft EntityAutoRocket Patch", Level.INFO, "Inspecting Class " + className); - } - - @Override - public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - if (name.equals("decodePacketdata")) { - FMLRelaunchLog - .log("[GT++ ASM] Galacticraft EntityAutoRocket Patch", Level.INFO, "Removing method " + name); - return null; - } - MethodVisitor methodVisitor = super.visitMethod(access, name, desc, signature, exceptions); - return methodVisitor; - } - } -} diff --git a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FluidUtil.java b/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FluidUtil.java deleted file mode 100644 index d449e1d4de..0000000000 --- a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FluidUtil.java +++ /dev/null @@ -1,337 +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.ASM5; -import static org.objectweb.asm.Opcodes.ASTORE; -import static org.objectweb.asm.Opcodes.CHECKCAST; -import static org.objectweb.asm.Opcodes.DUP; -import static org.objectweb.asm.Opcodes.F_CHOP; -import static org.objectweb.asm.Opcodes.F_FULL; -import static org.objectweb.asm.Opcodes.F_SAME; -import static org.objectweb.asm.Opcodes.GETFIELD; -import static org.objectweb.asm.Opcodes.GETSTATIC; -import static org.objectweb.asm.Opcodes.GOTO; -import static org.objectweb.asm.Opcodes.ICONST_0; -import static org.objectweb.asm.Opcodes.ICONST_1; -import static org.objectweb.asm.Opcodes.IFEQ; -import static org.objectweb.asm.Opcodes.IFNE; -import static org.objectweb.asm.Opcodes.IFNONNULL; -import static org.objectweb.asm.Opcodes.IFNULL; -import static org.objectweb.asm.Opcodes.IF_ACMPNE; -import static org.objectweb.asm.Opcodes.IF_ICMPGE; -import static org.objectweb.asm.Opcodes.ILOAD; -import static org.objectweb.asm.Opcodes.INTEGER; -import static org.objectweb.asm.Opcodes.INVOKEINTERFACE; -import static org.objectweb.asm.Opcodes.INVOKESPECIAL; -import static org.objectweb.asm.Opcodes.INVOKESTATIC; -import static org.objectweb.asm.Opcodes.INVOKEVIRTUAL; -import static org.objectweb.asm.Opcodes.IRETURN; -import static org.objectweb.asm.Opcodes.NEW; -import static org.objectweb.asm.Opcodes.TOP; - -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; - -import cpw.mods.fml.relauncher.FMLRelaunchLog; - -public class ClassTransformer_GC_FluidUtil { - - // The qualified name of the class we plan to transform. - private static final String className = "micdoodle8.mods.galacticraft.core.util.FluidUtil"; - // "micdoodle8/mods/galacticraft/core/util/FluidUtil - - private final boolean isValid; - private final ClassReader reader; - private final ClassWriter writer; - - public ClassTransformer_GC_FluidUtil(byte[] basicClass, boolean obfuscated) { - - ClassReader aTempReader = null; - ClassWriter aTempWriter = null; - - aTempReader = new ClassReader(basicClass); - aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES); - aTempReader.accept(new localClassVisitor(aTempWriter), 0); - - if (aTempReader != null && aTempWriter != null) { - isValid = true; - } else { - isValid = false; - } - reader = aTempReader; - writer = aTempWriter; - - if (reader != null && writer != null) { - injectMethod("testFuel"); - injectMethod("fillWithGCFuel"); - } - } - - public boolean isValidTransformer() { - return isValid; - } - - public ClassReader getReader() { - return reader; - } - - public ClassWriter getWriter() { - return writer; - } - - public void injectMethod(String aMethodName) { - MethodVisitor mv; - if (aMethodName.equals("testFuel")) { - FMLRelaunchLog.log( - "[GT++ ASM] Galacticraft FluidUtils Patch", - Level.INFO, - "Injecting " + aMethodName + " into " + className + "."); - mv = getWriter().visitMethod(ACC_PUBLIC + ACC_STATIC, "testFuel", "(Ljava/lang/String;)Z", null, null); - mv.visitCode(); - Label l0 = new Label(); - mv.visitLabel(l0); - mv.visitLineNumber(37, l0); - mv.visitFieldInsn( - GETSTATIC, - "gtPlusPlus/core/item/chemistry/RocketFuels", - "mValidRocketFuelNames", - "Ljava/util/HashSet;"); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/HashSet", "iterator", "()Ljava/util/Iterator;", false); - mv.visitVarInsn(ASTORE, 2); - Label l1 = new Label(); - mv.visitJumpInsn(GOTO, l1); - Label l2 = new Label(); - mv.visitLabel(l2); - mv.visitFrame( - F_FULL, - 3, - new Object[] { "java/lang/String", TOP, "java/util/Iterator" }, - 0, - new Object[] {}); - mv.visitVarInsn(ALOAD, 2); - mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;", true); - mv.visitTypeInsn(CHECKCAST, "java/lang/String"); - mv.visitVarInsn(ASTORE, 1); - Label l3 = new Label(); - mv.visitLabel(l3); - mv.visitLineNumber(38, l3); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false); - mv.visitJumpInsn(IFEQ, l1); - Label l4 = new Label(); - mv.visitLabel(l4); - mv.visitLineNumber(39, l4); - mv.visitInsn(ICONST_1); - mv.visitInsn(IRETURN); - mv.visitLabel(l1); - mv.visitLineNumber(37, l1); - mv.visitFrame(F_SAME, 0, null, 0, null); - mv.visitVarInsn(ALOAD, 2); - mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "hasNext", "()Z", true); - mv.visitJumpInsn(IFNE, l2); - Label l5 = new Label(); - mv.visitLabel(l5); - mv.visitLineNumber(42, l5); - mv.visitInsn(ICONST_0); - mv.visitInsn(IRETURN); - Label l6 = new Label(); - mv.visitLabel(l6); - mv.visitLocalVariable("name", "Ljava/lang/String;", null, l0, l6, 0); - mv.visitLocalVariable("aFuelname", "Ljava/lang/String;", null, l3, l1, 1); - mv.visitMaxs(2, 3); - mv.visitEnd(); - } else if (aMethodName.equals("fillWithGCFuel")) { - mv = getWriter().visitMethod( - ACC_PUBLIC + ACC_STATIC, - "fillWithGCFuel", - "(Lnet/minecraftforge/fluids/FluidTank;Lnet/minecraftforge/fluids/FluidStack;Z)I", - null, - null); - mv.visitCode(); - Label l0 = new Label(); - mv.visitLabel(l0); - mv.visitLineNumber(46, l0); - mv.visitVarInsn(ALOAD, 1); - Label l1 = new Label(); - mv.visitJumpInsn(IFNULL, l1); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn( - INVOKESTATIC, - "net/minecraftforge/fluids/FluidRegistry", - "getFluidName", - "(Lnet/minecraftforge/fluids/FluidStack;)Ljava/lang/String;", - false); - mv.visitMethodInsn( - INVOKESTATIC, - "micdoodle8/mods/galacticraft/core/util/FluidUtil", - "testFuel", - "(Ljava/lang/String;)Z", - false); - mv.visitJumpInsn(IFEQ, l1); - Label l2 = new Label(); - mv.visitLabel(l2); - mv.visitLineNumber(47, l2); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKEVIRTUAL, - "net/minecraftforge/fluids/FluidTank", - "getFluid", - "()Lnet/minecraftforge/fluids/FluidStack;", - false); - mv.visitVarInsn(ASTORE, 3); - Label l3 = new Label(); - mv.visitLabel(l3); - mv.visitLineNumber(48, l3); - mv.visitVarInsn(ALOAD, 3); - Label l4 = new Label(); - mv.visitJumpInsn(IFNONNULL, l4); - Label l5 = new Label(); - mv.visitLabel(l5); - mv.visitLineNumber(49, l5); - mv.visitFieldInsn( - GETSTATIC, - "gtPlusPlus/core/item/chemistry/RocketFuels", - "mValidRocketFuels", - "Ljava/util/HashMap;"); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/HashMap", "values", "()Ljava/util/Collection;", false); - mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Collection", "iterator", "()Ljava/util/Iterator;", true); - mv.visitVarInsn(ASTORE, 5); - Label l6 = new Label(); - mv.visitJumpInsn(GOTO, l6); - Label l7 = new Label(); - mv.visitLabel(l7); - mv.visitFrame( - F_FULL, - 6, - new Object[] { "net/minecraftforge/fluids/FluidTank", "net/minecraftforge/fluids/FluidStack", - INTEGER, "net/minecraftforge/fluids/FluidStack", TOP, "java/util/Iterator" }, - 0, - new Object[] {}); - mv.visitVarInsn(ALOAD, 5); - mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;", true); - mv.visitTypeInsn(CHECKCAST, "net/minecraftforge/fluids/Fluid"); - mv.visitVarInsn(ASTORE, 4); - Label l8 = new Label(); - mv.visitLabel(l8); - mv.visitLineNumber(50, l8); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn( - INVOKEVIRTUAL, - "net/minecraftforge/fluids/FluidStack", - "getFluid", - "()Lnet/minecraftforge/fluids/Fluid;", - false); - mv.visitVarInsn(ALOAD, 4); - mv.visitJumpInsn(IF_ACMPNE, l6); - Label l9 = new Label(); - mv.visitLabel(l9); - mv.visitLineNumber(51, l9); - mv.visitVarInsn(ALOAD, 0); - mv.visitTypeInsn(NEW, "net/minecraftforge/fluids/FluidStack"); - mv.visitInsn(DUP); - mv.visitVarInsn(ALOAD, 4); - mv.visitVarInsn(ALOAD, 1); - mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I"); - mv.visitMethodInsn( - INVOKESPECIAL, - "net/minecraftforge/fluids/FluidStack", - "", - "(Lnet/minecraftforge/fluids/Fluid;I)V", - false); - mv.visitVarInsn(ILOAD, 2); - mv.visitMethodInsn( - INVOKEVIRTUAL, - "net/minecraftforge/fluids/FluidTank", - "fill", - "(Lnet/minecraftforge/fluids/FluidStack;Z)I", - false); - mv.visitInsn(IRETURN); - mv.visitLabel(l6); - mv.visitLineNumber(49, l6); - mv.visitFrame(F_SAME, 0, null, 0, null); - mv.visitVarInsn(ALOAD, 5); - mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "hasNext", "()Z", true); - mv.visitJumpInsn(IFNE, l7); - mv.visitLabel(l4); - mv.visitLineNumber(55, l4); - mv.visitFrame( - F_FULL, - 4, - new Object[] { "net/minecraftforge/fluids/FluidTank", "net/minecraftforge/fluids/FluidStack", - INTEGER, "net/minecraftforge/fluids/FluidStack" }, - 0, - new Object[] {}); - mv.visitVarInsn(ALOAD, 3); - mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I"); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraftforge/fluids/FluidTank", "getCapacity", "()I", false); - mv.visitJumpInsn(IF_ICMPGE, l1); - Label l10 = new Label(); - mv.visitLabel(l10); - mv.visitLineNumber(56, l10); - mv.visitVarInsn(ALOAD, 0); - mv.visitTypeInsn(NEW, "net/minecraftforge/fluids/FluidStack"); - mv.visitInsn(DUP); - mv.visitVarInsn(ALOAD, 3); - mv.visitVarInsn(ALOAD, 1); - mv.visitFieldInsn(GETFIELD, "net/minecraftforge/fluids/FluidStack", "amount", "I"); - mv.visitMethodInsn( - INVOKESPECIAL, - "net/minecraftforge/fluids/FluidStack", - "", - "(Lnet/minecraftforge/fluids/FluidStack;I)V", - false); - mv.visitVarInsn(ILOAD, 2); - mv.visitMethodInsn( - INVOKEVIRTUAL, - "net/minecraftforge/fluids/FluidTank", - "fill", - "(Lnet/minecraftforge/fluids/FluidStack;Z)I", - false); - mv.visitInsn(IRETURN); - mv.visitLabel(l1); - mv.visitLineNumber(59, l1); - mv.visitFrame(F_CHOP, 1, null, 0, null); - mv.visitInsn(ICONST_0); - mv.visitInsn(IRETURN); - Label l11 = new Label(); - mv.visitLabel(l11); - mv.visitLocalVariable("tank", "Lnet/minecraftforge/fluids/FluidTank;", null, l0, l11, 0); - mv.visitLocalVariable("liquid", "Lnet/minecraftforge/fluids/FluidStack;", null, l0, l11, 1); - mv.visitLocalVariable("doFill", "Z", null, l0, l11, 2); - mv.visitLocalVariable("liquidInTank", "Lnet/minecraftforge/fluids/FluidStack;", null, l3, l1, 3); - mv.visitLocalVariable("aFuelType", "Lnet/minecraftforge/fluids/Fluid;", null, l8, l6, 4); - mv.visitMaxs(5, 6); - mv.visitEnd(); - } - FMLRelaunchLog.log("[GT++ ASM] Galacticraft FluidUtils Patch", Level.INFO, "Method injection complete."); - } - - public static final class localClassVisitor extends ClassVisitor { - - public localClassVisitor(ClassVisitor cv) { - super(ASM5, cv); - } - - @Override - public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - if (name.equals("testFuel")) { - FMLRelaunchLog.log("[GT++ ASM] Galacticraft FluidUtils Patch", Level.INFO, "Removing method " + name); - return null; - } - if (name.equals("fillWithGCFuel")) { - FMLRelaunchLog.log("[GT++ ASM] Galacticraft FluidUtils Patch", Level.INFO, "Removing method " + name); - return null; - } - MethodVisitor methodVisitor = super.visitMethod(access, name, desc, signature, exceptions); - return methodVisitor; - } - } -} diff --git a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FuelLoader.java b/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FuelLoader.java deleted file mode 100644 index e194c6d466..0000000000 --- a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FuelLoader.java +++ /dev/null @@ -1,1025 +0,0 @@ -package gtPlusPlus.preloader.asm.transformers; - -import static org.objectweb.asm.Opcodes.AALOAD; -import static org.objectweb.asm.Opcodes.AASTORE; -import static org.objectweb.asm.Opcodes.ACC_PUBLIC; -import static org.objectweb.asm.Opcodes.ACONST_NULL; -import static org.objectweb.asm.Opcodes.ALOAD; -import static org.objectweb.asm.Opcodes.ARRAYLENGTH; -import static org.objectweb.asm.Opcodes.ASM5; -import static org.objectweb.asm.Opcodes.ASTORE; -import static org.objectweb.asm.Opcodes.BIPUSH; -import static org.objectweb.asm.Opcodes.CHECKCAST; -import static org.objectweb.asm.Opcodes.DUP; -import static org.objectweb.asm.Opcodes.F_APPEND; -import static org.objectweb.asm.Opcodes.F_CHOP; -import static org.objectweb.asm.Opcodes.F_FULL; -import static org.objectweb.asm.Opcodes.F_SAME; -import static org.objectweb.asm.Opcodes.F_SAME1; -import static org.objectweb.asm.Opcodes.GETFIELD; -import static org.objectweb.asm.Opcodes.GETSTATIC; -import static org.objectweb.asm.Opcodes.GOTO; -import static org.objectweb.asm.Opcodes.IADD; -import static org.objectweb.asm.Opcodes.ICONST_0; -import static org.objectweb.asm.Opcodes.ICONST_1; -import static org.objectweb.asm.Opcodes.ICONST_2; -import static org.objectweb.asm.Opcodes.IFEQ; -import static org.objectweb.asm.Opcodes.IFLE; -import static org.objectweb.asm.Opcodes.IFNE; -import static org.objectweb.asm.Opcodes.IFNONNULL; -import static org.objectweb.asm.Opcodes.IFNULL; -import static org.objectweb.asm.Opcodes.IF_ACMPNE; -import static org.objectweb.asm.Opcodes.IF_ICMPGE; -import static org.objectweb.asm.Opcodes.IF_ICMPGT; -import static org.objectweb.asm.Opcodes.IF_ICMPLT; -import static org.objectweb.asm.Opcodes.ILOAD; -import static org.objectweb.asm.Opcodes.INSTANCEOF; -import static org.objectweb.asm.Opcodes.INTEGER; -import static org.objectweb.asm.Opcodes.INVOKEINTERFACE; -import static org.objectweb.asm.Opcodes.INVOKESPECIAL; -import static org.objectweb.asm.Opcodes.INVOKESTATIC; -import static org.objectweb.asm.Opcodes.INVOKEVIRTUAL; -import static org.objectweb.asm.Opcodes.IREM; -import static org.objectweb.asm.Opcodes.ISTORE; -import static org.objectweb.asm.Opcodes.ISUB; -import static org.objectweb.asm.Opcodes.NEW; -import static org.objectweb.asm.Opcodes.POP; -import static org.objectweb.asm.Opcodes.PUTFIELD; -import static org.objectweb.asm.Opcodes.RETURN; -import static org.objectweb.asm.Opcodes.TOP; - -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; - -import cpw.mods.fml.relauncher.FMLRelaunchLog; -import gtPlusPlus.preloader.DevHelper; - -public class ClassTransformer_GC_FuelLoader { - - // The qualified name of the class we plan to transform. - private static final String className = "micdoodle8.mods.galacticraft.core.tile.TileEntityFuelLoader"; - // micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader - - private final boolean isValid; - private final ClassReader reader; - private final ClassWriter writer; - private final boolean isObfuscated; - - public ClassTransformer_GC_FuelLoader(byte[] basicClass, boolean obfuscated) { - - ClassReader aTempReader = null; - ClassWriter aTempWriter = null; - - isObfuscated = obfuscated; - - aTempReader = new ClassReader(basicClass); - aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES); - aTempReader.accept(new localClassVisitor(aTempWriter), 0); - - if (aTempReader != null && aTempWriter != null) { - isValid = true; - } else { - isValid = false; - } - reader = aTempReader; - writer = aTempWriter; - - if (reader != null && writer != null) { - injectMethod(); - } else { - FMLRelaunchLog.log("[GT++ ASM] Galacticraft Fuel_Loader Patch", Level.INFO, "Failed to Inject new code."); - } - } - - public boolean isValidTransformer() { - return isValid; - } - - public ClassReader getReader() { - return reader; - } - - public ClassWriter getWriter() { - return writer; - } - - public void injectMethod() { - String aWorld = isObfuscated ? DevHelper.getObfuscated("net/minecraft/world/World") - : "net/minecraft/world/World"; - String aItemStack = isObfuscated ? DevHelper.getObfuscated("net/minecraft/item/ItemStack") - : "net/minecraft/item/ItemStack"; - String aTileEntity = isObfuscated ? DevHelper.getObfuscated("net/minecraft/tileentity/TileEntity") - : "net/minecraft/tileentity/TileEntity"; - - if (isValidTransformer()) { - FMLRelaunchLog.log( - "[GT++ ASM] Galacticraft Fuel_Loader Patch", - Level.INFO, - "Injecting updateEntity into " + className + "."); - MethodVisitor mv = getWriter().visitMethod(ACC_PUBLIC, "updateEntity", "()V", null, null); - mv.visitCode(); - Label l0 = new Label(); - mv.visitLabel(l0); - mv.visitLineNumber(60, l0); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKESPECIAL, - "micdoodle8/mods/galacticraft/core/energy/tile/TileBaseElectricBlockWithInventory", - "updateEntity", - "()V", - false); - Label l1 = new Label(); - mv.visitLabel(l1); - mv.visitLineNumber(61, l1); - mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn( - GETFIELD, - "micdoodle8/mods/galacticraft/core/tile/TileEntityFuelLoader", - "worldObj", - "L" + aWorld + ";"); - mv.visitFieldInsn(GETFIELD, "" + aWorld + "", "isRemote", "Z"); - Label l2 = new Label(); - mv.visitJumpInsn(IFNE, l2); - Label l3 = new