aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorGlease <4586901+Glease@users.noreply.github.com>2022-09-04 00:14:55 +0800
committerGitHub <noreply@github.com>2022-09-03 18:14:55 +0200
commit908d0ccaf9ecb15d97c60b6c8088740c3f53316d (patch)
tree5e70d92dab8e45d7dae51608aa76aca805a23c02 /src/main
parent5c58462ba6fd5b5a31b000f05599c7e722091d1e (diff)
downloadGT5-Unofficial-908d0ccaf9ecb15d97c60b6c8088740c3f53316d.tar.gz
GT5-Unofficial-908d0ccaf9ecb15d97c60b6c8088740c3f53316d.tar.bz2
GT5-Unofficial-908d0ccaf9ecb15d97c60b6c8088740c3f53316d.zip
Remove GT asm (#333)
* remove GT asm * Spotless apply for branch no-gt-asm for #333 (#334) Co-authored-by: Glease <4586901+Glease@users.noreply.github.com> Co-authored-by: GitHub GTNH Actions <> * Update dependencies.gradle * Update dependencies.gradle * Update dependencies.gradle Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Martin Robertz <dream-master@gmx.net>
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/gtPlusPlus/GTplusplus.java5
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/helpers/MethodHelper_CC.java28
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/helpers/MethodHelper_GT.java24
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_CC_GuiContainerManager.java122
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_EntityLivingBase_SetHealth.java109
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements.java2452
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements_CrashFix.java244
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BaseMetaTileEntity.java179
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BlockMachines_MetaPipeEntity.java312
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BlockMachines_NBT.java218
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_CharcoalPit.java201
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Client.java417
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_ItemMachines_Tooltip.java153
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_MetaGenerated_Tool.java124
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Packet_TileEntity.java373
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Utility.java337
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_Hazmat.java147
-rw-r--r--src/main/java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java122
18 files changed, 5 insertions, 5562 deletions
diff --git a/src/main/java/gtPlusPlus/GTplusplus.java b/src/main/java/gtPlusPlus/GTplusplus.java
index e3272e21ea..caeafa99bf 100644
--- a/src/main/java/gtPlusPlus/GTplusplus.java
+++ b/src/main/java/gtPlusPlus/GTplusplus.java
@@ -11,6 +11,7 @@ import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.IFMLLoadingPlugin.MCVersion;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
+import gregtech.api.GregTech_API;
import gregtech.api.enums.Materials;
import gregtech.api.enums.Textures;
import gregtech.api.enums.Textures.BlockIcons;
@@ -135,6 +136,10 @@ public class GTplusplus implements ActionListener {
public GTplusplus() {
super();
INIT_PHASE.SUPER.setPhaseActive(true);
+
+ for (int i = 12; i < 16; i++) {
+ GregTech_API.registerTileEntityConstructor(i, Meta_GT_Proxy::constructCustomGregtechMetaTileEntityByMeta);
+ }
}
// Pre-Init
diff --git a/src/main/java/gtPlusPlus/preloader/asm/helpers/MethodHelper_CC.java b/src/main/java/gtPlusPlus/preloader/asm/helpers/MethodHelper_CC.java
deleted file mode 100644
index baffcd5e78..0000000000
--- a/src/main/java/gtPlusPlus/preloader/asm/helpers/MethodHelper_CC.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package gtPlusPlus.preloader.asm.helpers;
-
-import codechicken.nei.guihook.GuiContainerManager;
-import codechicken.nei.guihook.IContainerInputHandler;
-import net.minecraft.client.gui.inventory.GuiContainer;
-
-public class MethodHelper_CC {
-
- public void mouseUp2(int mousex, int mousey, int button) {
- MethodHelper_CC.mouseUp(mousex, mousey, button);
- }
-
- public static void mouseUp(int mousex, int mousey, int button) {
- GuiContainerManager aManager = codechicken.nei.guihook.GuiContainerManager.getManager();
- if (aManager != null) {
- GuiContainer aWindow = aManager.window;
- for (IContainerInputHandler inputhander : GuiContainerManager.inputHandlers) {
- // Preloader_Logger.INFO("Found Handler: "+aWindow.getClass().getName() + " |
- // "+inputhander.getClass().getName());
- }
- for (IContainerInputHandler inputhander : GuiContainerManager.inputHandlers) {
- // Preloader_Logger.INFO("Trying to handle events for "+aWindow.getClass().getName() + " |
- // "+inputhander.getClass().getName());
- inputhander.onMouseUp(aWindow, mousex, mousey, button);
- }
- }
- }
-}
diff --git a/src/main/java/gtPlusPlus/preloader/asm/helpers/MethodHelper_GT.java b/src/main/java/gtPlusPlus/preloader/asm/helpers/MethodHelper_GT.java
deleted file mode 100644
index ab53e93ae7..0000000000
--- a/src/main/java/gtPlusPlus/preloader/asm/helpers/MethodHelper_GT.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package gtPlusPlus.preloader.asm.helpers;
-
-import gregtech.api.enums.Materials;
-import gregtech.api.items.GT_MetaGenerated_Tool;
-import java.util.List;
-import net.minecraft.creativetab.CreativeTabs;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-
-public class MethodHelper_GT {
-
- public static final void getSubItems(
- GT_MetaGenerated_Tool aTool, Item var1, CreativeTabs aCreativeTab, List aList) {
- for (int i = 0; i < 32766; i += 2) {
- if (aTool.getToolStats(new ItemStack(aTool, 1, i)) != null) {
- ItemStack tStack = new ItemStack(aTool, 1, i);
- aTool.isItemStackUsable(tStack);
- aList.add(tStack);
- aList.add(aTool.getToolWithStats(i, 1, Materials.TungstenSteel, Materials.TungstenSteel, null));
- aList.add(aTool.getToolWithStats(i, 1, Materials.Neutronium, Materials.Neutronium, null));
- }
- }
- }
-}
diff --git a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_CC_GuiContainerManager.java b/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_CC_GuiContainerManager.java
deleted file mode 100644
index ee463d6cca..0000000000
--- a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_CC_GuiContainerManager.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-
-import gtPlusPlus.preloader.Preloader_Logger;
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.*;
-
-public class ClassTransformer_CC_GuiContainerManager {
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
-
- public ClassTransformer_CC_GuiContainerManager(byte[] basicClass) {
-
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
- localClassVisitor aTempMethodRemover = new localClassVisitor(aTempWriter);
- aTempReader.accept(aTempMethodRemover, 0);
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- } else {
- isValid = false;
- }
-
- Preloader_Logger.LOG("CodeChicken GuiContainerManager Patch", Level.INFO, "Valid patch? " + isValid + ".");
- reader = aTempReader;
- writer = aTempWriter;
-
- if (reader != null && writer != null) {
- Preloader_Logger.LOG("CodeChicken GuiContainerManager Patch", Level.INFO, "Attempting Method Injection.");
- injectMethod("mouseUp");
- }
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- public boolean injectMethod(String aMethodName) {
- MethodVisitor mv;
- boolean didInject = false;
- String aClassName = "codechicken/nei/guihook/GuiContainerManager";
- ClassWriter cw = getWriter();
- if (aMethodName.equals("mouseUp")) {
- Preloader_Logger.LOG(
- "CodeChicken GuiContainerManager Patch",
- Level.INFO,
- "Injecting " + aMethodName + ", static replacement call to " + aClassName + ".");
- mv = cw.visitMethod(ACC_PUBLIC, "mouseUp", "(III)V", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(12, l0);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitMethodInsn(
- INVOKESTATIC, "gtPlusPlus/preloader/asm/helpers/MethodHelper_CC", "mouseUp", "(III)V", false);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(13, l1);
- mv.visitInsn(RETURN);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLocalVariable("this", "L+aClassName+;", null, l0, l2, 0);
- mv.visitLocalVariable("mousex", "I", null, l0, l2, 1);
- mv.visitLocalVariable("mousey", "I", null, l0, l2, 2);
- mv.visitLocalVariable("button", "I", null, l0, l2, 3);
- mv.visitMaxs(3, 4);
- mv.visitEnd();
- didInject = true;
- }
-
- Preloader_Logger.LOG("CodeChicken GuiContainerManager Patch", Level.INFO, "Method injection complete.");
- return didInject;
- }
-
- public final class localClassVisitor extends ClassVisitor {
-
- boolean obfuscated = false;
-
- public localClassVisitor(ClassVisitor cv) {
- super(ASM5, cv);
- }
-
- public boolean getObfuscatedRemoval() {
- return obfuscated;
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- MethodVisitor methodVisitor;
-
- if (name.equals("mouseUp")) {
- methodVisitor = null;
- } else {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- }
-
- if (methodVisitor == null) {
- Preloader_Logger.LOG(
- "CodeChicken GuiContainerManager Patch", Level.INFO, "Found method " + name + ", removing.");
- Preloader_Logger.LOG("CodeChicken GuiContainerManager Patch", Level.INFO, "Descriptor: " + desc);
- }
- return methodVisitor;
- }
- }
-}
diff --git a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_EntityLivingBase_SetHealth.java b/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_EntityLivingBase_SetHealth.java
deleted file mode 100644
index e3821e8865..0000000000
--- a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_EntityLivingBase_SetHealth.java
+++ /dev/null
@@ -1,109 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import cpw.mods.fml.relauncher.FMLRelaunchLog;
-import net.minecraft.entity.EntityLivingBase;
-import net.minecraft.util.DamageSource;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
-
-public class ClassTransformer_Forge_EntityLivingBase_SetHealth {
-
- private boolean isValid = false;
- private ClassReader mReader = null;
- private ClassWriter mWriter = null;
- private boolean didPatch = false;
-
- public ClassTransformer_Forge_EntityLivingBase_SetHealth(String aClassName, byte[] basicClass) {
- if (basicClass == null) {
- return;
- }
-
- ClassReader reader = new ClassReader(basicClass);
- ClassWriter writer = new ClassWriter(reader, ClassWriter.COMPUTE_MAXS);
- ClassVisitor visitor = writer;
- SetHealthVisitor aVisitor = new SetHealthVisitor(visitor);
- visitor = aVisitor;
- reader.accept(visitor, 0);
- if (reader != null && writer != null) {
- isValid = true;
- } else {
- isValid = false;
- }
- mReader = reader;
- mWriter = writer;
- didPatch = aVisitor.didPatchInternal;
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return mReader;
- }
-
- public ClassWriter getWriter() {
- return mWriter;
- }
-
- public static class SetHealthVisitor extends ClassVisitor {
- private String clsName = null;
- private boolean didPatchInternal = false;
- private static final String callbackOwner = org.objectweb.asm.Type.getInternalName(SetHealthVisitor.class);
-
- private SetHealthVisitor(ClassVisitor cv) {
- super(Opcodes.ASM5, cv);
- }
-
- @Override
- public void visit(
- int version, int access, String name, String signature, String superName, String[] interfaces) {
- super.visit(version, access, name, signature, superName, interfaces);
- this.clsName = name;
- }
-
- @Override
- public MethodVisitor visitMethod(
- int mAccess, final String mName, final String mDesc, String mSignature, String[] mExceptions) {
- final boolean warn = !(clsName.equals("net/minecraft/entity/EntityLivingBase"));
-
- return new MethodVisitor(Opcodes.ASM5, super.visitMethod(mAccess, mName, mDesc, mSignature, mExceptions)) {
- @Override
- public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean isIntf) {
- if (owner.equals("net/minecraft/entity/EntityLivingBase")
- && name.equals("setHealth")
- && desc.equals("(F)V")) {
- if (warn) {
- FMLRelaunchLog.warning("=============================================================");
- FMLRelaunchLog.warning("MOD HAS DIRECT REFERENCE Entity.setHealth() THIS IS NOT ALLOWED!");
- FMLRelaunchLog.warning("Offendor: %s.%s%s", SetHealthVisitor.this.clsName, mName, mDesc);
- FMLRelaunchLog.warning(
- "Use EntityLiving.attackEntityFrom(DamageSource, damageDealt) instead");
- FMLRelaunchLog.warning("=============================================================");
- }
- didPatchInternal = true;
- // opcode = Opcodes.INVOKESTATIC; // Set it static
- // owner = SetHealthVisitor.callbackOwner;
- // name = "setHealthGeneric"; // Replace the method name
- // desc = "(Lnet/minecraft/entity/EntityLivingBase;F)V"; // Replace the method desc
-
- }
- super.visitMethodInsn(opcode, owner, name, desc, isIntf);
- }
- };
- }
-
- private static final DamageSource mGenericDamageSource = new DamageSource("gtpp.generic");
-
- public static void setHealthGeneric(EntityLivingBase aEntity, float aValue) {
- aEntity.attackEntityFrom(mGenericDamageSource, aValue);
- }
- }
-
- public boolean didPatchClass() {
- return didPatch;
- }
-}
diff --git a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements.java b/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements.java
deleted file mode 100644
index 0ee90e43a7..0000000000
--- a/src/main/java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements.java
+++ /dev/null
@@ -1,2452 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-
-import cpw.mods.fml.relauncher.FMLRelaunchLog;
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.AnnotationVisitor;
-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_GT_Achievements {
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
- private static boolean mDidRemoveAssLineRecipeAdder = false;
-
- public ClassTransformer_GT_Achievements(byte[] basicClass) {
-
- ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- aTempReader = new ClassReader(basicClass);
- aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
-
- aTempReader.accept(new MethodAdaptor(aTempWriter), 0);
-
- if (mDidRemoveAssLineRecipeAdder) {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements Patch", Level.INFO, "Patching GT .09");
- injectMethod(aTempWriter);
- patchOnItemPickup09(aTempWriter);
- } else {
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements Patch", Level.INFO, "Patching GT .08");
- patchOnItemPickup08(aTempWriter);
- }
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- } else {
- isValid = false;
- }
-
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements 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 injectMethod(ClassWriter cw) {
- MethodVisitor mv;
- boolean didInject = false;
- FMLRelaunchLog.log(
- "[GT++ ASM] Gregtech Achievements Patch", Level.INFO, "Injecting " + "registerAssAchievement" + ".");
-
- /**
- * Inject new, safer code
- */
-
- /*mv = cw.visitMethod(ACC_PUBLIC, "registerAssAchievement", "(Lgregtech/api/util/GT_Recipe;)Lnet/minecraft/stats/Achievement;", null, null);
- mv.visitCode();
- Label l0 = new Label();
- Label l1 = new Label();
- Label l2 = new Label();
- mv.visitTryCatchBlock(l0, l1, l2, "java/lang/Throwable");
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(291, l3);
- mv.visitVarInsn(ALOAD, 1);
- Label l4 = new Label();
- mv.visitJumpInsn(IFNONNULL, l4);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(292, l5);
- mv.visitLdcInsn("Someone tried to register an achievement for an invalid recipe. Please report this to Alkalus.");
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/api/objects/Logger", "INFO", "(Ljava/lang/String;)V", false);
- Label l6 = new Label();
- mv.visitLabel(l6);
- mv.visitLineNumber(293, l6);
- mv.visitInsn(ACONST_NULL);
- mv.visitInsn(ARETURN);
- mv.visitLabel(l4);
- mv.visitLineNumber(295, l4);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/util/GT_Recipe", "getOutput", "(I)Lnet/minecraft/item/ItemStack;", false);
- Label l7 = new Label();
- mv.visitJumpInsn(IFNONNULL, l7);
- Label l8 = new Label();
- mv.visitLabel(l8);
- mv.visitLineNumber(296, l8);
- mv.visitLdcInsn("Someone tried to register an achievement for a recipe with null output. Please report this to Alkalus.");
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/api/objects/Logger", "INFO", "(Ljava/lang/String;)V", false);
- Label l9 = new Label();
- mv.visitLabel(l9);
- mv.visitLineNumber(297, l9);
- mv.visitInsn(ACONST_NULL);
- mv.visitInsn(ARETURN);
- mv.visitLabel(l7);
- mv.visitLineNumber(299, l7);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/util/GT_Recipe", "getOutput", "(I)Lnet/minecraft/item/ItemStack;", false);
- mv.visitVarInsn(ASTORE, 3);
- mv.visitLabel(l0);
- mv.visitLineNumber(301, l0);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
- mv.visitVarInsn(ASTORE, 2);
- mv.visitLabel(l1);
- mv.visitLineNumber(302, l1);
- Label l10 = new Label();
- mv.visitJumpInsn(GOTO, l10);
- mv.visitLabel(l2);
- mv.visitLineNumber(303, l2);
- mv.visitFrame(F_FULL, 4, new Object[] {"gregtech/loaders/misc/GT_Achievements", "gregtech/api/util/GT_Recipe", TOP, "net/minecraft/item/ItemStack"}, 1, new Object[] {"java/lang/Throwable"});
- mv.visitVarInsn(ASTORE, 4);
- Label l11 = new Label();
- mv.visitLabel(l11);
- mv.visitLineNumber(304, l11);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/ItemUtils", "getUnlocalizedItemName", "(Lnet/minecraft/item/ItemStack;)Ljava/lang/String;", false);
- mv.visitVarInsn(ASTORE, 2);
- mv.visitLabel(l10);
- mv.visitLineNumber(306, l10);
- mv.visitFrame(F_FULL, 4, new Object[] {"gregtech/loaders/misc/GT_Achievements", "gregtech/api/util/GT_Recipe", "java/lang/String", "net/minecraft/item/ItemStack"}, 0, new Object[] {});
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "gregtech/loaders/misc/GT_Achievements", "achievementList", "Ljava/util/concurrent/ConcurrentHashMap;");
- mv.visitVarInsn(ALOAD, 2);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/concurrent/ConcurrentHashMap", "get", "(Ljava/lang/Object;)Ljava/lang/Object;", false);
- Label l12 = new Label();
- mv.visitJumpInsn(IFNONNULL, l12);
- Label l13 = new Label();
- mv.visitLabel(l13);
- mv.visitLineNumber(307, l13);
- mv.visitFieldInsn(GETSTATIC, "gregtech/loaders/misc/GT_Achievements", "assReg", "I");
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IADD);
- mv.visitFieldInsn(PUTSTATIC, "gregtech/loaders/misc/GT_Achievements", "assReg", "I");
- Label l14 = new Label();
- mv.visitLabel(l14);
- mv.visitLineNumber(308, l14);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitIntInsn(BIPUSH, 11);
- mv.visitFieldInsn(GETSTATIC, "gregtech/loaders/misc/GT_Achievements", "assReg", "I");
- mv.visitInsn(ICONST_5);
- mv.visitInsn(IREM);
- mv.visitInsn(IADD);
- mv.visitInsn(INEG);
- mv.visitFieldInsn(GETSTATIC, "gregtech/loaders/misc/GT_Achievements", "assReg", "I");
- mv.visitInsn(ICONST_5);
- mv.visitInsn(IDIV);
- mv.visitIntInsn(BIPUSH, 8);
- mv.visitInsn(ISUB);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/util/GT_Recipe", "getOutput", "(I)Lnet/minecraft/item/ItemStack;", false);
- mv.visitFieldInsn(GETSTATIC, "net/minecraft/stats/AchievementList", "openInventory", "Lnet/minecraft/stats/Achievement;");
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "registerAchievement", "(Ljava/lang/String;IILnet/minecraft/item/ItemStack;Lnet/minecraft/stats/Achievement;Z)Lnet/minecraft/stats/Achievement;", false);
- mv.visitInsn(ARETURN);
- mv.visitLabel(l12);
- mv.visitLineNumber(310, l12);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitInsn(ACONST_NULL);
- mv.visitInsn(ARETURN);
- Label l15 = new Label();
- mv.visitLabel(l15);
- mv.visitLocalVariable("this", "Lgregtech/loaders/misc/GT_Achievements;", null, l3, l15, 0);
- mv.visitLocalVariable("recipe", "Lgregtech/api/util/GT_Recipe;", null, l3, l15, 1);
- mv.visitLocalVariable("aSafeUnlocalName", "Ljava/lang/String;", null, l1, l2, 2);
- mv.visitLocalVariable("aSafeUnlocalName", "Ljava/lang/String;", null, l10, l15, 2);
- mv.visitLocalVariable("aStack", "Lnet/minecraft/item/ItemStack;", null, l0, l15, 3);
- mv.visitLocalVariable("t", "Ljava/lang/Throwable;", null, l11, l10, 4);
- mv.visitMaxs(7, 5);
- mv.visitEnd();*/
-
- // Lets just static call my replacement function
- mv = cw.visitMethod(
- ACC_PUBLIC,
- "registerAssAchievement",
- "(Lgregtech/api/util/GT_Recipe;)Lnet/minecraft/stats/Achievement;",
- null,
- null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(291, l0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "gtPlusPlus/xmod/gregtech/loaders/misc/AssLineAchievements",
- "registerAssAchievement",
- "(Lgregtech/api/util/GT_Recipe;)Lnet/minecraft/stats/Achievement;",
- false);
- mv.visitInsn(ARETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("this", "Lgregtech/loaders/misc/GT_Achievements;", null, l0, l1, 0);
- mv.visitLocalVariable("recipe", "Lgregtech/api/util/GT_Recipe;", null, l0, l1, 1);
- mv.visitMaxs(1, 2);
- mv.visitEnd();
-
- didInject = true;
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements Patch", Level.INFO, "Method injection complete.");
- return didInject;
- }
-
- public boolean patchOnItemPickup08(ClassWriter cw) {
- MethodVisitor mv;
- boolean didInject = false;
- FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements Patch", Level.INFO, "Injecting " + "onItemPickup" + ".");
-
- AnnotationVisitor av0;
- mv = cw.visitMethod(
- ACC_PUBLIC,
- "onItemPickup",
- "(Lnet/minecraftforge/event/entity/player/EntityItemPickupEvent;)V",
- null,
- null);
- av0 = mv.visitAnnotation("Lcpw/mods/fml/common/eventhandler/SubscribeEvent;", true);
- av0.visitEnd();
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(418, l0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitFieldInsn(
- GETFIELD,
- "net/minecraftforge/event/entity/player/EntityItemPickupEvent",
- "entityPlayer",
- "Lnet/minecraft/entity/player/EntityPlayer;");
- mv.visitVarInsn(ASTORE, 2);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(419, l1);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitFieldInsn(
- GETFIELD,
- "net/minecraftforge/event/entity/player/EntityItemPickupEvent",
- "item",
- "Lnet/minecraft/entity/item/EntityItem;");
- mv.visitMethodInsn(
- INVOKEVIRTUAL,
- "net/minecraft/entity/item/EntityItem",
- "getEntityItem",
- "()Lnet/minecraft/item/ItemStack;",
- false);
- mv.visitVarInsn(ASTORE, 3);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(420, l2);
- mv.visitVarInsn(ALOAD, 2);
- Label l3 = new Label();
- mv.visitJumpInsn(IFNULL, l3);
- mv.visitVarInsn(ALOAD, 3);
- Label l4 = new Label();
- mv.visitJumpInsn(IFNONNULL, l4);
- mv.visitLabel(l3);
- mv.visitLineNumber(421, l3);
- mv.visitFrame(
- F_APPEND,
- 2,
- new Object[] {"net/minecraft/entity/player/EntityPlayer", "net/minecraft/item/ItemStack"},
- 0,
- null);
- mv.visitInsn(RETURN);
- mv.visitLabel(l4);
- mv.visitLineNumber(424, l4);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(
- INVOKESTATIC,
- "gregtech/api/util/GT_OreDictUnificator",
- "getItemData",
- "(Lnet/minecraft/item/ItemStack;)Lgregtech/api/objects/ItemData;",
- false);
- mv.visitVarInsn(ASTORE, 4);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(425, l5);
- mv.visitVarInsn(ALOAD, 4);
- Label l6 = new Label();
- mv.visitJumpInsn(IFNULL, l6);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLineNumber(426, l7);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/OrePrefixes", "dust", "Lgregtech/api/enums/OrePrefixes;");
- Label l8 = new Label();
- mv.visitJumpInsn(IF_ACMPNE, l8);
- Label l9 = new Label();
- mv.visitLabel(l9);
- mv.visitLineNumber(427, l9);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(
- GETFIELD, "gregtech/api/objects/ItemData", "mMaterial", "Lgregtech/api/objects/MaterialStack;");
- mv.visitFieldInsn(
- GETFIELD, "gregtech/api/objects/MaterialStack", "mMaterial", "Lgregtech/api/enums/Materials;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/Materials", "Lutetium", "Lgregtech/api/enums/Materials;");
- Label l10 = new Label();
- mv.visitJumpInsn(IF_ACMPNE, l10);
- Label l11 = new Label();
- mv.visitLabel(l11);
- mv.visitLineNumber(428, l11);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("newmetal");
- mv.visitMethodInsn(
- INVOKEVIRTUAL,
- "gregtech/loaders/misc/GT_Achievements",
- "issueAchievement",
- "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V",
- false);
- mv.visitLabel(l10);
- mv.visitLineNumber(430, l10);
- mv.visitFrame(F_APPEND, 1, new Object[] {"gregtech/api/objects/ItemData"}, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitLdcInsn("cleandust");
- mv.visitMethodInsn(
- INVOKEVIRTUAL,
- "gregtech/loaders/misc/GT_Achievements",
- "issueAchievement",
- "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V",
- false);
- Label l12 = new Label();
- mv.visitLabel(l12);
- mv.visitLineNumber(431, l12);
- mv.visitJumpInsn(GOTO, l6);
- mv.visitLabel(l8);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/OrePrefixes", "ore", "Lgregtech/api/enums/OrePrefixes;");
- Label l13 = new Label();
- mv.visitJumpInsn(IF_ACMPEQ, l13);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(
- GETSTATIC, "gregtech/api/enums/OrePrefixes", "oreBlackgranite", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitJumpInsn(IF_ACMPEQ, l13);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(
- GETSTATIC, "gregtech/api/enums/OrePrefixes", "oreEndstone", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitJumpInsn(IF_ACMPEQ, l13);
- Label l14 = new Label();
- mv.visitLabel(l14);
- mv.visitLineNumber(432, l14);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(
- GETSTATIC, "gregtech/api/enums/OrePrefixes", "oreNetherrack", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitJumpInsn(IF_ACMPEQ, l13);
- mv.visitVarInsn(ALOAD, 4);
- mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
- mv.visitFieldInsn(
- GETSTATIC, "gregtech/api/enums/OrePrefixes", "oreRedgranite", "Lgregtech/api/enums/OrePrefixes;");
- Label l15 = new Label();
- mv.visitJumpInsn(IF_ACMPNE, l15);
- mv.visitLabel(l13);
- mv.visitLineNumber(433, l13);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitInsn(ICONST_0);
- mv.visitVarInsn(ISTORE, 5);
- Label l16 = new Label();
- mv.visitLabel(l16);
- Label l17 = new Label();
- mv.visitJumpInsn(GOTO, l17);
- Label l18 = new Label();
- mv.visitLabel(l18);
- mv.visitLineNumber(434, l18);
- mv.visitFrame(F_APPEND, 1, new Object[] {INTEGER}, 0, null);
- mv.visitVarIns