aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/preloader/asm
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/gtPlusPlus/preloader/asm')
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/AsmConfig.java10
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter.java28
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements.java1896
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements_CrashFix.java218
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BaseMetaTileEntity.java158
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BlockMachines_MetaPipeEntity.java41
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Client.java581
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Packet_TileEntity.java319
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_GetHarvestTool.java38
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_FluidHelper.java314
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_ItemWispEssence.java277
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java6
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java67
13 files changed, 3888 insertions, 65 deletions
diff --git a/src/Java/gtPlusPlus/preloader/asm/AsmConfig.java b/src/Java/gtPlusPlus/preloader/asm/AsmConfig.java
index 01efcfb412..c29d8423d8 100644
--- a/src/Java/gtPlusPlus/preloader/asm/AsmConfig.java
+++ b/src/Java/gtPlusPlus/preloader/asm/AsmConfig.java
@@ -19,6 +19,7 @@ public class AsmConfig {
public static boolean enableCofhPatch;
public static boolean enableGcFuelChanges;
public static boolean enableRcFlowFix;
+ public static boolean enableTcAspectSafety;
public AsmConfig(File file) {
if (!loaded) {
@@ -91,6 +92,13 @@ public class AsmConfig {
propOrder.add(prop.getName());
+ //TC Aspect Safety
+ prop = config.get("general", "enableTcAspectSafety", true);
+ prop.comment = "Fixes small oversights in Thaumcraft 4.";
+ prop.setLanguageKey("gtpp.enableTcAspectSafety").setRequiresMcRestart(true);
+ enableTcAspectSafety = prop.getBoolean(true);
+ propOrder.add(prop.getName());
+
config.setCategoryPropertyOrder("general", propOrder);
config.setCategoryPropertyOrder("debug", propOrderDebug);
@@ -104,6 +112,8 @@ public class AsmConfig {
FMLLog.log(Level.INFO, "[GT++ ASM] Gt Tooltip Fix - Enabled: "+enableGtTooltipFix, new Object[0]);
FMLLog.log(Level.INFO, "[GT++ ASM] COFH Patch - Enabled: "+enableCofhPatch, new Object[0]);
FMLLog.log(Level.INFO, "[GT++ ASM] Gc Fuel Changes Patch - Enabled: "+enableGcFuelChanges, new Object[0]);
+ FMLLog.log(Level.INFO, "[GT++ ASM] Railcraft Fluid Flow Patch - Enabled: "+enableRcFlowFix, new Object[0]);
+ FMLLog.log(Level.INFO, "[GT++ ASM] Thaumcraft Aspect Safety Patch - Enabled: "+enableTcAspectSafety, new Object[0]);
} catch (Exception var3) {
FMLLog.log(Level.ERROR, var3, "GT++ ASM had a problem loading it's config", new Object[0]);
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter.java
index 50ba79bfe0..6f08dc4ff5 100644
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter.java
+++ b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter.java
@@ -1,8 +1,12 @@
package gtPlusPlus.preloader.asm.transformers;
-import static org.objectweb.asm.Opcodes.*;
+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.INVOKESTATIC;
+import static org.objectweb.asm.Opcodes.RETURN;
-import java.io.IOException;
import java.util.ArrayList;
import org.apache.logging.log4j.Level;
@@ -34,16 +38,11 @@ public class ClassTransformer_COFH_OreDictionaryArbiter {
private final boolean isValid;
private final ClassReader reader;
- private final ClassWriter writer;
- private final boolean isObfuscated;
+ private final ClassWriter writer;
- public ClassTransformer_COFH_OreDictionaryArbiter(byte[] basicClass, boolean obfuscated) {
-
+ public ClassTransformer_COFH_OreDictionaryArbiter(byte[] basicClass) {
ClassReader aTempReader = null;
- ClassWriter aTempWriter = null;
-
- isObfuscated = obfuscated;
-
+ ClassWriter aTempWriter = null;
aTempReader = new ClassReader(basicClass);
aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES);
aTempReader.accept(new localClassVisitor(aTempWriter), 0);
@@ -75,7 +74,14 @@ public class ClassTransformer_COFH_OreDictionaryArbiter {
return writer;
}
- public void injectMethod(String aMethodName) {
+ public void injectMethod(String aMethodName) {
+
+ boolean isObfuscated;
+ try {
+ isObfuscated = Class.forName("net.minecraft.item.ItemStack") != null ? false : true;
+ } catch (ClassNotFoundException e) {
+ isObfuscated = true;
+ }
String aItemStack = isObfuscated ? DevHelper.getObfuscated("net/minecraft/item/ItemStack") : "net/minecraft/item/ItemStack";
MethodVisitor mv;
if (aMethodName.equals("registerOreDictionaryEntry")) {
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements.java
new file mode 100644
index 0000000000..2b9729a8a3
--- /dev/null
+++ b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements.java
@@ -0,0 +1,1896 @@
+package gtPlusPlus.preloader.asm.transformers;
+
+import static org.objectweb.asm.Opcodes.*;
+
+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;
+
+import cpw.mods.fml.common.FMLCommonHandler;
+import cpw.mods.fml.relauncher.FMLRelaunchLog;
+import net.minecraftforge.common.MinecraftForge;
+
+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.visitVarInsn(ALOAD, 0);
+ mv.visitVarInsn(ALOAD, 2);
+ mv.visitVarInsn(ALOAD, 4);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/objects/ItemData", "getAllMaterialStacks", "()Ljava/util/ArrayList;", false);
+ mv.visitVarInsn(ILOAD, 5);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/ArrayList", "get", "(I)Ljava/lang/Object;", false);
+ mv.visitTypeInsn(CHECKCAST, "gregtech/api/objects/MaterialStack");
+ mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/MaterialStack", "mMaterial", "Lgregtech/api/enums/Materials;");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/enums/Materials", "name", "()Ljava/lang/String;", false);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
+ Label l19 = new Label();
+ mv.visitLabel(l19);
+ mv.visitLineNumber(435, l19);
+ mv.visitVarInsn(ALOAD, 4);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/objects/ItemData", "getAllMaterialStacks", "()Ljava/util/ArrayList;", false);
+ mv.visitVarInsn(ILOAD, 5);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/ArrayList", "get", "(I)Ljava/lang/Object;", false);
+ mv.visitTypeInsn(CHECKCAST, "gregtech/api/objects/MaterialStack");
+ mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/MaterialStack", "mMaterial", "Lgregtech/api/enums/Materials;");
+ mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/Materials", "AnyIron", "Lgregtech/api/enums/Materials;");
+ Label l20 = new Label();
+ mv.visitJumpInsn(IF_ACMPNE, l20);
+ Label l21 = new Label();
+ mv.visitLabel(l21);
+ mv.visitLineNumber(436, l21);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitVarInsn(ALOAD, 2);
+ mv.visitLdcInsn("iron");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
+ mv.visitLabel(l20);
+ mv.visitLineNumber(433, l20);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitIincInsn(5, 1);
+ mv.visitLabel(l17);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitVarInsn(ILOAD, 5);
+ mv.visitVarInsn(ALOAD, 4);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/objects/ItemData", "getAllMaterialStacks", "()Ljava/util/ArrayList;", false);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/ArrayList", "size", "()I", false);
+ mv.visitJumpInsn(IF_ICMPLT, l18);
+ Label l22 = new Label();
+ mv.visitLabel(l22);
+ mv.visitLineNumber(439, l22);
+ mv.visitJumpInsn(GOTO, l6);
+ mv.visitLabel(l15);
+ mv.visitFrame(F_CHOP,1, 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", "crushed", "Lgregtech/api/enums/OrePrefixes;");
+ Label l23 = new Label();
+ mv.visitJumpInsn(IF_ACMPNE, l23);
+ Label l24 = new Label();
+ mv.visitLabel(l24);
+ mv.visitLineNumber(440, l24);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitVarInsn(ALOAD, 2);
+ mv.visitLdcInsn("crushed");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
+ Label l25 = new Label();
+ mv.visitLabel(l25);
+ mv.visitLineNumber(441, l25);
+ mv.visitJumpInsn(GOTO, l6);
+ mv.visitLabel(l23);
+ 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", "crushedPurified", "Lgregtech/api/enums/OrePrefixes;");
+ Label l26 = new Label();
+ mv.visitJumpInsn(IF_ACMPNE, l26);
+ Label l27 = new Label();
+ mv.visitLabel(l27);
+ mv.visitLineNumber(442, l27);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitVarInsn(ALOAD, 2);
+ mv.visitLdcInsn("washing");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
+ Label l28 = new Label();
+ mv.visitLabel(l28);
+ mv.visitLineNumber(443, l28);
+ mv.visitJumpInsn(GOTO, l6);
+ mv.visitLabel(l26);
+ 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", "crushedCentrifuged", "Lgregtech/api/enums/OrePrefixes;");
+ Label l29 = new Label();
+ mv.visitJumpInsn(IF_ACMPNE, l29);
+ Label l30 = new Label();
+ mv.visitLabel(l30);
+ mv.visitLineNumber(444, l30);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitVarInsn(ALOAD, 2);
+ mv.visitLdcInsn("spinit");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
+ Label l31 = new Label();
+ mv.visitLabel(l31);
+ mv.visitLineNumber(445, l31);
+ mv.visitJumpInsn(GOTO, l6);
+ mv.visitLabel(l29);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ 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", "Steel", "Lgregtech/api/enums/Materials;");
+ Label l32 = new Label();
+ mv.visitJumpInsn(IF_ACMPNE, l32);
+ Label l33 = new Label();
+ mv.visitLabel(l33);
+ mv.visitLineNumber(446, l33);
+ mv.visitVarInsn(ALOAD, 4);
+ mv.visitFieldInsn(GETFIELD, "gregtech/api/objects/ItemData", "mPrefix", "Lgregtech/api/enums/OrePrefixes;");
+ mv.visitFieldInsn(GETSTATIC, "gregtech/api/enums/OrePrefixes", "ingot", "Lgregtech/api/enums/OrePrefixes;");
+ Label l34 = new Label();
+ mv.visitJumpInsn(IF_ACMPNE, l34);
+ mv.visitVarInsn(ALOAD, 3);
+ mv.visitFieldInsn(GETFIELD, "net/minecraft/item/ItemStack", "stackSize", "I");
+ mv.visitVarInsn(ALOAD, 3);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getMaxStackSize", "()I", false);
+ mv.visitJumpInsn(IF_ICMPNE, l34);
+ Label l35 = new Label();
+ mv.visitLabel(l35);
+ mv.visitLineNumber(447, l35);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitVarInsn(ALOAD, 2);
+ mv.visitLdcInsn("steel");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
+ Label l36 = new Label();
+ mv.visitLabel(l36);
+ mv.visitLineNumber(448, l36);
+ mv.visitJumpInsn(GOTO, l6);
+ mv.visitLabel(l34);
+ 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", "nugget", "Lgregtech/api/enums/OrePrefixes;");
+ mv.visitJumpInsn(IF_ACMPNE, l6);
+ mv.visitLdcInsn("Thaumcraft");
+ mv.visitMethodInsn(INVOKESTATIC, "cpw/mods/fml/common/Loader", "isModLoaded", "(Ljava/lang/String;)Z", false);
+ mv.visitJumpInsn(IFEQ, l6);
+ Label l37 = new Label();
+ mv.visitLabel(l37);
+ mv.visitLineNumber(449, l37);
+ mv.visitVarInsn(ALOAD, 2);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/player/EntityPlayer", "getDisplayName", "()Ljava/lang/String;", false);
+ mv.visitLdcInsn("GT_IRON_TO_STEEL");
+ mv.visitMethodInsn(INVOKESTATIC, "thaumcraft/api/ThaumcraftApiHelper", "isResearchComplete", "(Ljava/lang/String;Ljava/lang/String;)Z", false);
+ mv.visitJumpInsn(IFEQ, l6);
+ Label l38 = new Label();
+ mv.visitLabel(l38);
+ mv.visitLineNumber(450, l38);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitVarInsn(ALOAD, 2);
+ mv.visitLdcInsn("steel");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
+ Label l39 = new Label();
+ mv.visitLabel(l39);
+ mv.visitLineNumber(453, l39);
+ mv.visitJumpInsn(GOTO, l6);
+ mv.visitLabel(l32);
+ 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", "circuit", "Lgregtech/api/enums/OrePrefixes;");
+ mv.visitJumpInsn(IF_ACMPNE, l6);
+ 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", "Advanced", "Lgregtech/api/enums/Materials;");
+ mv.visitJumpInsn(IF_ACMPNE, l6);
+ Label l40 = new Label();
+ mv.visitLabel(l40);
+ mv.visitLineNumber(454, l40);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitVarInsn(ALOAD, 2);
+ mv.visitLdcInsn("stepforward");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
+ mv.visitLabel(l6);
+ mv.visitLineNumber(457, l6);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitVarInsn(ALOAD, 3);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
+ mv.visitLdcInsn("gt.metaitem.");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "startsWith", "(Ljava/lang/String;)Z", false);
+ Label l41 = new Label();
+ mv.visitJumpInsn(IFEQ, l41);
+ Label l42 = new Label();
+ mv.visitLabel(l42);
+ mv.visitLineNumber(458, l42);
+ mv.visitVarInsn(ALOAD, 3);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
+ mv.visitLdcInsn("gt.metaitem.02.32500");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
+ Label l43 = new Label();
+ mv.visitJumpInsn(IFEQ, l43);
+ Label l44 = new Label();
+ mv.visitLabel(l44);
+ mv.visitLineNumber(459, l44);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitVarInsn(ALOAD, 2);
+ mv.visitLdcInsn("havestlead");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
+ Label l45 = new Label();
+ mv.visitLabel(l45);
+ mv.visitLineNumber(460, l45);
+ mv.visitJumpInsn(GOTO, l41);
+ mv.visitLabel(l43);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitVarInsn(ALOAD, 3);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
+ mv.visitLdcInsn("gt.metaitem.02.32501");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
+ Label l46 = new Label();
+ mv.visitJumpInsn(IFEQ, l46);
+ Label l47 = new Label();
+ mv.visitLabel(l47);
+ mv.visitLineNumber(461, l47);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitVarInsn(ALOAD, 2);
+ mv.visitLdcInsn("havestsilver");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
+ Label l48 = new Label();
+ mv.visitLabel(l48);
+ mv.visitLineNumber(462, l48);
+ mv.visitJumpInsn(GOTO, l41);
+ mv.visitLabel(l46);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitVarInsn(ALOAD, 3);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
+ mv.visitLdcInsn("gt.metaitem.02.32503");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
+ Label l49 = new Label();
+ mv.visitJumpInsn(IFEQ, l49);
+ Label l50 = new Label();
+ mv.visitLabel(l50);
+ mv.visitLineNumber(463, l50);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitVarInsn(ALOAD, 2);
+ mv.visitLdcInsn("havestiron");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
+ Label l51 = new Label();
+ mv.visitLabel(l51);
+ mv.visitLineNumber(464, l51);
+ mv.visitJumpInsn(GOTO, l41);
+ mv.visitLabel(l49);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitVarInsn(ALOAD, 3);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
+ mv.visitLdcInsn("gt.metaitem.02.32504");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
+ Label l52 = new Label();
+ mv.visitJumpInsn(IFEQ, l52);
+ Label l53 = new Label();
+ mv.visitLabel(l53);
+ mv.visitLineNumber(465, l53);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitVarInsn(ALOAD, 2);
+ mv.visitLdcInsn("havestgold");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
+ Label l54 = new Label();
+ mv.visitLabel(l54);
+ mv.visitLineNumber(466, l54);
+ mv.visitJumpInsn(GOTO, l41);
+ mv.visitLabel(l52);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitVarInsn(ALOAD, 3);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
+ mv.visitLdcInsn("gt.metaitem.02.32530");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
+ Label l55 = new Label();
+ mv.visitJumpInsn(IFEQ, l55);
+ Label l56 = new Label();
+ mv.visitLabel(l56);
+ mv.visitLineNumber(467, l56);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitVarInsn(ALOAD, 2);
+ mv.visitLdcInsn("havestcopper");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
+ Label l57 = new Label();
+ mv.visitLabel(l57);
+ mv.visitLineNumber(468, l57);
+ mv.visitJumpInsn(GOTO, l41);
+ mv.visitLabel(l55);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitVarInsn(ALOAD, 3);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
+ mv.visitLdcInsn("gt.metaitem.02.32540");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
+ Label l58 = new Label();
+ mv.visitJumpInsn(IFEQ, l58);
+ Label l59 = new Label();
+ mv.visitLabel(l59);
+ mv.visitLineNumber(469, l59);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitVarInsn(ALOAD, 2);
+ mv.visitLdcInsn("havesttin");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
+ Label l60 = new Label();
+ mv.visitLabel(l60);
+ mv.visitLineNumber(470, l60);
+ mv.visitJumpInsn(GOTO, l41);
+ mv.visitLabel(l58);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitVarInsn(ALOAD, 3);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false);
+ mv.visitLdcInsn("gt.metaitem.02.32510");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
+ Label l61 = new Label();
+ mv.visitJumpInsn(IFEQ, l61);
+ Label l62 = new Label();
+ mv.visitLabel(l62);
+ mv.visitLineNumber(471, l62);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitVarInsn(ALOAD, 2);
+ mv.visitLdcInsn("havestoil");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "issueAchievement", "(Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;)V", false);
+ Label l63 = new Label();
+ mv.visitLabel(l63);
+ mv.visitLineNumber(472, l63);
+ mv.visitJumpInsn(GOTO, l41);
+ mv.visitLabel(l61);
+ mv.visitFrame(F_SAME, 0, null, 0, null);
+ mv.visitVarInsn(ALOAD, 3);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/