aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlkalus <Draknyte1@hotmail.com>2020-04-10 11:26:47 +0100
committerAlkalus <Draknyte1@hotmail.com>2020-04-10 11:26:47 +0100
commitddeb9c0c0fc4da536a291aee51019c0d2dd824f8 (patch)
tree56b1da51853b0b6a00a97fc5a0e21a89ece3566a /src
parent0c0c4eba9a8a99687c4d157d1658976871bba047 (diff)
downloadGT5-Unofficial-ddeb9c0c0fc4da536a291aee51019c0d2dd824f8.tar.gz
GT5-Unofficial-ddeb9c0c0fc4da536a291aee51019c0d2dd824f8.tar.bz2
GT5-Unofficial-ddeb9c0c0fc4da536a291aee51019c0d2dd824f8.zip
$ More work overhauling GT/IC2 Hazmat system.
Diffstat (limited to 'src')
-rw-r--r--src/Java/gtPlusPlus/core/util/minecraft/EnergyUtils.java7
-rw-r--r--src/Java/gtPlusPlus/core/util/minecraft/EntityUtils.java71
-rw-r--r--src/Java/gtPlusPlus/core/util/minecraft/HazmatUtils.java2
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java2
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Utility.java663
5 files changed, 156 insertions, 589 deletions
diff --git a/src/Java/gtPlusPlus/core/util/minecraft/EnergyUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/EnergyUtils.java
index 7daefbcc23..8b02ea9c7c 100644
--- a/src/Java/gtPlusPlus/core/util/minecraft/EnergyUtils.java
+++ b/src/Java/gtPlusPlus/core/util/minecraft/EnergyUtils.java
@@ -1,17 +1,20 @@
package gtPlusPlus.core.util.minecraft;
import gregtech.api.util.GT_ModHandler;
-import gtPlusPlus.api.objects.Logger;
import ic2.api.item.IElectricItem;
import ic2.api.item.IElectricItemManager;
import ic2.api.item.ISpecialElectricItem;
+import net.minecraft.item.ItemRedstone;
import net.minecraft.item.ItemStack;
public class EnergyUtils {
public static class EU {
- public static boolean isElectricItem(ItemStack aStack) {
+ public static boolean isElectricItem(ItemStack aStack) {
+ if (aStack == null || aStack.getItem() == null || aStack.getItem() instanceof ItemRedstone) {
+ return false;
+ }
if (aStack.getItem() instanceof ISpecialElectricItem) {
return true;
}
diff --git a/src/Java/gtPlusPlus/core/util/minecraft/EntityUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/EntityUtils.java
index 66f9e2453d..fda7b0b738 100644
--- a/src/Java/gtPlusPlus/core/util/minecraft/EntityUtils.java
+++ b/src/Java/gtPlusPlus/core/util/minecraft/EntityUtils.java
@@ -16,12 +16,11 @@ import gtPlusPlus.core.util.reflect.ReflectionUtils;
import ic2.core.IC2Potion;
import ic2.core.item.armor.ItemArmorHazmat;
import net.minecraft.block.Block;
-import net.minecraft.entity.Entity;
-import net.minecraft.entity.EntityLiving;
-import net.minecraft.entity.EntityLivingBase;
-import net.minecraft.entity.EnumCreatureType;
+import net.minecraft.entity.*;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
+import net.minecraft.potion.Potion;
+import net.minecraft.potion.PotionEffect;
import net.minecraft.util.DamageSource;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
@@ -103,7 +102,7 @@ public class EntityUtils {
duration = radiationLevel*30;
}
//IC2Potion.radiation.applyTo(entityLiving, duration, damage * 15);
- GT_Utility.applyRadioactivity(entityLiving, radiationLevel, stackSize);
+ applyRadioactivity(entityLiving, radiationLevel, stackSize);
}
}
}
@@ -111,6 +110,68 @@ public class EntityUtils {
}
return false;
}
+
+ public static boolean isWearingFullFrostHazmat(EntityLivingBase aEntity) {
+ for (byte i = 1; i < 5; i++)
+ if (!HazmatUtils.providesProtetion_Frost(aEntity.getEquipmentInSlot(i))) {
+ return false;
+ }
+ return true;
+ }
+
+ public static boolean isWearingFullHeatHazmat(EntityLivingBase aEntity) {
+ for (byte i = 1; i < 5; i++)
+ if (!HazmatUtils.providesProtetion_Fire(aEntity.getEquipmentInSlot(i))) {
+ return false;
+ }
+ return true;
+ }
+
+ public static boolean isWearingFullBioHazmat(EntityLivingBase aEntity) {
+ for (byte i = 1; i < 5; i++)
+ if (!HazmatUtils.providesProtetion_Biohazard(aEntity.getEquipmentInSlot(i))) {
+ return false;
+ }
+ return true;
+ }
+
+ public static boolean isWearingFullRadioHazmat(EntityLivingBase aEntity) {
+ for (byte i = 1; i < 5; i++)
+ if (!HazmatUtils.providesProtetion_Radiation(aEntity.getEquipmentInSlot(i))) {
+ return false;
+ }
+ return true;
+ }
+
+ public static boolean isWearingFullElectroHazmat(EntityLivingBase aEntity) {
+ for (byte i = 1; i < 5; i++)
+ if (!HazmatUtils.providesProtetion_Electricity(aEntity.getEquipmentInSlot(i))) {
+ return false;
+ }
+ return true;
+ }
+
+ public static boolean isWearingFullGasHazmat(EntityLivingBase aEntity) {
+ for (byte i = 1; i < 5; i++)
+ if (!HazmatUtils.providesProtetion_Gas(aEntity.getEquipmentInSlot(i))) {
+ return false;
+ }
+ return true;
+ }
+
+ public static boolean applyRadioactivity(EntityLivingBase aEntity, int aLevel, int aAmountOfItems) {
+ if (aLevel > 0 && aEntity != null && aEntity.getCreatureAttribute() != EnumCreatureAttribute.UNDEAD && aEntity.getCreatureAttribute() != EnumCreatureAttribute.ARTHROPOD && !ItemArmorHazmat.hasCompleteHazmat(aEntity)) {
+ PotionEffect tEffect = null;
+ aEntity.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, aLevel * 140 * aAmountOfItems + Math.max(0, ((tEffect = aEntity.getActivePotionEffect(Potion.moveSlowdown)) == null ? 0 : tEffect.getDuration())), Math.max(0, (5 * aLevel) / 7)));
+ aEntity.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, aLevel * 150 * aAmountOfItems + Math.max(0, ((tEffect = aEntity.getActivePotionEffect(Potion.digSlowdown)) == null ? 0 : tEffect.getDuration())), Math.max(0, (5 * aLevel) / 7)));
+ aEntity.addPotionEffect(new PotionEffect(Potion.confusion.id, aLevel * 130 * aAmountOfItems + Math.max(0, ((tEffect = aEntity.getActivePotionEffect(Potion.confusion)) == null ? 0 : tEffect.getDuration())), Math.max(0, (5 * aLevel) / 7)));
+ aEntity.addPotionEffect(new PotionEffect(Potion.weakness.id, aLevel * 150 * aAmountOfItems + Math.max(0, ((tEffect = aEntity.getActivePotionEffect(Potion.weakness)) == null ? 0 : tEffect.getDuration())), Math.max(0, (5 * aLevel) / 7)));
+ aEntity.addPotionEffect(new PotionEffect(Potion.hunger.id, aLevel * 130 * aAmountOfItems + Math.max(0, ((tEffect = aEntity.getActivePotionEffect(Potion.hunger)) == null ? 0 : tEffect.getDuration())), Math.max(0, (5 * aLevel) / 7)));
+ aEntity.addPotionEffect(new PotionEffect(IC2Potion.radiation.id, aLevel * 180 * aAmountOfItems + Math.max(0, ((tEffect = aEntity.getActivePotionEffect(Potion.potionTypes[24])) == null ? 0 : tEffect.getDuration())), Math.max(0, (5 * aLevel) / 7)));
+ return true;
+ }
+ return false;
+ }
public static boolean applyHeatDamageToEntity(final int heatLevel, final World world, final Entity entityHolding){
if (!world.isRemote){
diff --git a/src/Java/gtPlusPlus/core/util/minecraft/HazmatUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/HazmatUtils.java
index fc017199b1..f0b93a32dc 100644
--- a/src/Java/gtPlusPlus/core/util/minecraft/HazmatUtils.java
+++ b/src/Java/gtPlusPlus/core/util/minecraft/HazmatUtils.java
@@ -385,7 +385,7 @@ public class HazmatUtils {
return true;
}
for (GT_ItemStack o : aSet) {
- if (o != null) {
+ if (o != null && o.mItem != null && aStack != null && aStack.getItem() != null) {
if (GT_Utility.areStacksEqual(o.toStack(), aStack, true)) {
return true;
}
diff --git a/src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java b/src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java
index 46196cb87f..8aa449df5d 100644
--- a/src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java
+++ b/src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java
@@ -13,6 +13,8 @@ import net.minecraft.launchwrapper.Launch;
@SortingIndex(10097)
@MCVersion(value = "1.7.10")
+@IFMLLoadingPlugin.TransformerExclusions("gtPlusPlus.preloader")
+@IFMLLoadingPlugin.Name(CORE_Preloader.NAME)
public class Preloader_FMLLoadingPlugin implements IFMLLoadingPlugin {
//-Dfml.coreMods.load=gtPlusPlus.preloader.asm.Preloader_FMLLoadingPlugin
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Utility.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Utility.java
index 48493a739e..fa711e5693 100644
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Utility.java
+++ b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Utility.java
@@ -11,6 +11,12 @@ import org.objectweb.asm.MethodVisitor;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.preloader.Preloader_Logger;
+import ic2.core.IC2Potion;
+import ic2.core.item.armor.ItemArmorHazmat;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.EnumCreatureAttribute;
+import net.minecraft.potion.Potion;
+import net.minecraft.potion.PotionEffect;
public class ClassTransformer_GT_Utility {
@@ -18,6 +24,8 @@ public class ClassTransformer_GT_Utility {
private final ClassReader reader;
private final ClassWriter writer;
private final String className;
+
+
public ClassTransformer_GT_Utility(byte[] basicClass, String aClassName) {
@@ -69,332 +77,7 @@ public class ClassTransformer_GT_Utility {
MethodVisitor mv;
boolean didInject = false;
ClassWriter cw = getWriter();
- String aClassNameFormatted = Utils.class.getName().replace(".", "/");
- if (aMethodName.equals("getTier")) {
- Preloader_Logger.LOG("Gregtech Utilities Patch", Level.INFO, "Injecting " + aMethodName + ", static replacement call to "+aClassNameFormatted+".");
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "getTier", "(J)B", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(23, l0);
- mv.visitVarInsn(LLOAD, 0);
- mv.visitMethodInsn(INVOKESTATIC, aClassNameFormatted, "getTier", "(J)B", false);
- mv.visitInsn(IRETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("l", "J", null, l0, l1, 0);
- mv.visitMaxs(2, 2);
- mv.visitEnd();
- didInject = true;
- }
- if (aMethodName.equals("applyRadioactivity")){
- Preloader_Logger.LOG("Gregtech Utilities Patch", Level.INFO, "Injecting " + aMethodName + ".");
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "applyRadioactivity", "(Lnet/minecraft/entity/EntityLivingBase;II)Z", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(1352, l0);
- mv.visitVarInsn(ILOAD, 1);
- Label l1 = new Label();
- mv.visitJumpInsn(IFLE, l1);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitJumpInsn(IFNULL, l1);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/EntityLivingBase", "getCreatureAttribute", "()Lnet/minecraft/entity/EnumCreatureAttribute;", false);
- mv.visitFieldInsn(GETSTATIC, "net/minecraft/entity/EnumCreatureAttribute", "UNDEAD", "Lnet/minecraft/entity/EnumCreatureAttribute;");
- mv.visitJumpInsn(IF_ACMPEQ, l1);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/EntityLivingBase", "getCreatureAttribute", "()Lnet/minecraft/entity/EnumCreatureAttribute;", false);
- mv.visitFieldInsn(GETSTATIC, "net/minecraft/entity/EnumCreatureAttribute", "ARTHROPOD", "Lnet/minecraft/entity/EnumCreatureAttribute;");
- mv.visitJumpInsn(IF_ACMPEQ, l1);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKESTATIC, "ic2/core/item/armor/ItemArmorHazmat", "hasCompleteHazmat", "(Lnet/minecraft/entity/EntityLivingBase;)Z", false);
- mv.visitJumpInsn(IFNE, l1);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(1353, l2);
- mv.visitInsn(ACONST_NULL);
- mv.visitVarInsn(ASTORE, 3);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(1354, l3);
- mv.visitVarInsn(ALOAD, 0);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitTypeInsn(NEW, "net/minecraft/potion/PotionEffect");
- mv.visitInsn(DUP);
- mv.visitFieldInsn(GETSTATIC, "net/minecraft/potion/Potion", "moveSlowdown", "Lnet/minecraft/potion/Potion;");
- mv.visitFieldInsn(GETFIELD, "net/minecraft/potion/Potion", "id", "I");
- mv.visitVarInsn(ILOAD, 1);
- mv.visitIntInsn(SIPUSH, 140);
- mv.visitInsn(IMUL);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitInsn(IMUL);
- mv.visitInsn(ICONST_0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETSTATIC, "net/minecraft/potion/Potion", "moveSlowdown", "Lnet/minecraft/potion/Potion;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/EntityLivingBase", "getActivePotionEffect", "(Lnet/minecraft/potion/Potion;)Lnet/minecraft/potion/PotionEffect;", false);
- mv.visitInsn(DUP);
- mv.visitVarInsn(ASTORE, 3);
- Label l5 = new Label();
- mv.visitJumpInsn(IFNONNULL, l5);
- mv.visitInsn(ICONST_0);
- Label l6 = new Label();
- mv.visitJumpInsn(GOTO, l6);
- mv.visitLabel(l5);
- mv.visitFrame(F_FULL, 4, new Object[] {"net/minecraft/entity/EntityLivingBase", INTEGER, INTEGER, "net/minecraft/potion/PotionEffect"}, 6, new Object[] {"net/minecraft/entity/EntityLivingBase", l4, l4, INTEGER, INTEGER, INTEGER});
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/potion/PotionEffect", "getDuration", "()I", false);
- mv.visitLabel(l6);
- mv.visitFrame(F_FULL, 4, new Object[] {"net/minecraft/entity/EntityLivingBase", INTEGER, INTEGER, "net/minecraft/potion/PotionEffect"}, 7, new Object[] {"net/minecraft/entity/EntityLivingBase", l4, l4, INTEGER, INTEGER, INTEGER, INTEGER});
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Math", "max", "(II)I", false);
- mv.visitInsn(IADD);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(ICONST_5);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitInsn(IMUL);
- mv.visitIntInsn(BIPUSH, 7);
- mv.visitInsn(IDIV);
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Math", "max", "(II)I", false);
- mv.visitMethodInsn(INVOKESPECIAL, "net/minecraft/potion/PotionEffect", "<init>", "(III)V", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/EntityLivingBase", "addPotionEffect", "(Lnet/minecraft/potion/PotionEffect;)V", false);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLineNumber(1355, l7);
- mv.visitVarInsn(ALOAD, 0);
- Label l8 = new Label();
- mv.visitLabel(l8);
- mv.visitTypeInsn(NEW, "net/minecraft/potion/PotionEffect");
- mv.visitInsn(DUP);
- mv.visitFieldInsn(GETSTATIC, "net/minecraft/potion/Potion", "digSlowdown", "Lnet/minecraft/potion/Potion;");
- mv.visitFieldInsn(GETFIELD, "net/minecraft/potion/Potion", "id", "I");
- mv.visitVarInsn(ILOAD, 1);
- mv.visitIntInsn(SIPUSH, 150);
- mv.visitInsn(IMUL);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitInsn(IMUL);
- mv.visitInsn(ICONST_0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETSTATIC, "net/minecraft/potion/Potion", "digSlowdown", "Lnet/minecraft/potion/Potion;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/EntityLivingBase", "getActivePotionEffect", "(Lnet/minecraft/potion/Potion;)Lnet/minecraft/potion/PotionEffect;", false);
- mv.visitInsn(DUP);
- mv.visitVarInsn(ASTORE, 3);
- Label l9 = new Label();
- mv.visitJumpInsn(IFNONNULL, l9);
- mv.visitInsn(ICONST_0);
- Label l10 = new Label();
- mv.visitJumpInsn(GOTO, l10);
- mv.visitLabel(l9);
- mv.visitFrame(F_FULL, 4, new Object[] {"net/minecraft/entity/EntityLivingBase", INTEGER, INTEGER, "net/minecraft/potion/PotionEffect"}, 6, new Object[] {"net/minecraft/entity/EntityLivingBase", l8, l8, INTEGER, INTEGER, INTEGER});
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/potion/PotionEffect", "getDuration", "()I", false);
- mv.visitLabel(l10);
- mv.visitFrame(F_FULL, 4, new Object[] {"net/minecraft/entity/EntityLivingBase", INTEGER, INTEGER, "net/minecraft/potion/PotionEffect"}, 7, new Object[] {"net/minecraft/entity/EntityLivingBase", l8, l8, INTEGER, INTEGER, INTEGER, INTEGER});
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Math", "max", "(II)I", false);
- mv.visitInsn(IADD);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(ICONST_5);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitInsn(IMUL);
- mv.visitIntInsn(BIPUSH, 7);
- mv.visitInsn(IDIV);
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Math", "max", "(II)I", false);
- mv.visitMethodInsn(INVOKESPECIAL, "net/minecraft/potion/PotionEffect", "<init>", "(III)V", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/EntityLivingBase", "addPotionEffect", "(Lnet/minecraft/potion/PotionEffect;)V", false);
- Label l11 = new Label();
- mv.visitLabel(l11);
- mv.visitLineNumber(1356, l11);
- mv.visitVarInsn(ALOAD, 0);
- Label l12 = new Label();
- mv.visitLabel(l12);
- mv.visitTypeInsn(NEW, "net/minecraft/potion/PotionEffect");
- mv.visitInsn(DUP);
- mv.visitFieldInsn(GETSTATIC, "net/minecraft/potion/Potion", "confusion", "Lnet/minecraft/potion/Potion;");
- mv.visitFieldInsn(GETFIELD, "net/minecraft/potion/Potion", "id", "I");
- mv.visitVarInsn(ILOAD, 1);
- mv.visitIntInsn(SIPUSH, 130);
- mv.visitInsn(IMUL);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitInsn(IMUL);
- mv.visitInsn(ICONST_0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETSTATIC, "net/minecraft/potion/Potion", "confusion", "Lnet/minecraft/potion/Potion;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/EntityLivingBase", "getActivePotionEffect", "(Lnet/minecraft/potion/Potion;)Lnet/minecraft/potion/PotionEffect;", false);
- mv.visitInsn(DUP);
- mv.visitVarInsn(ASTORE, 3);
- Label l13 = new Label();
- mv.visitJumpInsn(IFNONNULL, l13);
- mv.visitInsn(ICONST_0);
- Label l14 = new Label();
- mv.visitJumpInsn(GOTO, l14);
- mv.visitLabel(l13);
- mv.visitFrame(F_FULL, 4, new Object[] {"net/minecraft/entity/EntityLivingBase", INTEGER, INTEGER, "net/minecraft/potion/PotionEffect"}, 6, new Object[] {"net/minecraft/entity/EntityLivingBase", l12, l12, INTEGER, INTEGER, INTEGER});
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/potion/PotionEffect", "getDuration", "()I", false);
- mv.visitLabel(l14);
- mv.visitFrame(F_FULL, 4, new Object[] {"net/minecraft/entity/EntityLivingBase", INTEGER, INTEGER, "net/minecraft/potion/PotionEffect"}, 7, new Object[] {"net/minecraft/entity/EntityLivingBase", l12, l12, INTEGER, INTEGER, INTEGER, INTEGER});
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Math", "max", "(II)I", false);
- mv.visitInsn(IADD);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(ICONST_5);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitInsn(IMUL);
- mv.visitIntInsn(BIPUSH, 7);
- mv.visitInsn(IDIV);
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Math", "max", "(II)I", false);
- mv.visitMethodInsn(INVOKESPECIAL, "net/minecraft/potion/PotionEffect", "<init>", "(III)V", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/EntityLivingBase", "addPotionEffect", "(Lnet/minecraft/potion/PotionEffect;)V", false);
- Label l15 = new Label();
- mv.visitLabel(l15);
- mv.visitLineNumber(1357, l15);
- mv.visitVarInsn(ALOAD, 0);
- Label l16 = new Label();
- mv.visitLabel(l16);
- mv.visitTypeInsn(NEW, "net/minecraft/potion/PotionEffect");
- mv.visitInsn(DUP);
- mv.visitFieldInsn(GETSTATIC, "net/minecraft/potion/Potion", "weakness", "Lnet/minecraft/potion/Potion;");
- mv.visitFieldInsn(GETFIELD, "net/minecraft/potion/Potion", "id", "I");
- mv.visitVarInsn(ILOAD, 1);
- mv.visitIntInsn(SIPUSH, 150);
- mv.visitInsn(IMUL);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitInsn(IMUL);
- mv.visitInsn(ICONST_0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETSTATIC, "net/minecraft/potion/Potion", "weakness", "Lnet/minecraft/potion/Potion;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/EntityLivingBase", "getActivePotionEffect", "(Lnet/minecraft/potion/Potion;)Lnet/minecraft/potion/PotionEffect;", false);
- mv.visitInsn(DUP);
- mv.visitVarInsn(ASTORE, 3);
- Label l17 = new Label();
- mv.visitJumpInsn(IFNONNULL, l17);
- mv.visitInsn(ICONST_0);
- Label l18 = new Label();
- mv.visitJumpInsn(GOTO, l18);
- mv.visitLabel(l17);
- mv.visitFrame(F_FULL, 4, new Object[] {"net/minecraft/entity/EntityLivingBase", INTEGER, INTEGER, "net/minecraft/potion/PotionEffect"}, 6, new Object[] {"net/minecraft/entity/EntityLivingBase", l16, l16, INTEGER, INTEGER, INTEGER});
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/potion/PotionEffect", "getDuration", "()I", false);
- mv.visitLabel(l18);
- mv.visitFrame(F_FULL, 4, new Object[] {"net/minecraft/entity/EntityLivingBase", INTEGER, INTEGER, "net/minecraft/potion/PotionEffect"}, 7, new Object[] {"net/minecraft/entity/EntityLivingBase", l16, l16, INTEGER, INTEGER, INTEGER, INTEGER});
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Math", "max", "(II)I", false);
- mv.visitInsn(IADD);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(ICONST_5);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitInsn(IMUL);
- mv.visitIntInsn(BIPUSH, 7);
- mv.visitInsn(IDIV);
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Math", "max", "(II)I", false);
- mv.visitMethodInsn(INVOKESPECIAL, "net/minecraft/potion/PotionEffect", "<init>", "(III)V", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/EntityLivingBase", "addPotionEffect", "(Lnet/minecraft/potion/PotionEffect;)V", false);
- Label l19 = new Label();
- mv.visitLabel(l19);
- mv.visitLineNumber(1358, l19);
- mv.visitVarInsn(ALOAD, 0);
- Label l20 = new Label();
- mv.visitLabel(l20);
- mv.visitTypeInsn(NEW, "net/minecraft/potion/PotionEffect");
- mv.visitInsn(DUP);
- mv.visitFieldInsn(GETSTATIC, "net/minecraft/potion/Potion", "hunger", "Lnet/minecraft/potion/Potion;");
- mv.visitFieldInsn(GETFIELD, "net/minecraft/potion/Potion", "id", "I");
- mv.visitVarInsn(ILOAD, 1);
- mv.visitIntInsn(SIPUSH, 130);
- mv.visitInsn(IMUL);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitInsn(IMUL);
- mv.visitInsn(ICONST_0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETSTATIC, "net/minecraft/potion/Potion", "hunger", "Lnet/minecraft/potion/Potion;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/EntityLivingBase", "getActivePotionEffect", "(Lnet/minecraft/potion/Potion;)Lnet/minecraft/potion/PotionEffect;", false);
- mv.visitInsn(DUP);
- mv.visitVarInsn(ASTORE, 3);
- Label l21 = new Label();
- mv.visitJumpInsn(IFNONNULL, l21);
- mv.visitInsn(ICONST_0);
- Label l22 = new Label();
- mv.visitJumpInsn(GOTO, l22);
- mv.visitLabel(l21);
- mv.visitFrame(F_FULL, 4, new Object[] {"net/minecraft/entity/EntityLivingBase", INTEGER, INTEGER, "net/minecraft/potion/PotionEffect"}, 6, new Object[] {"net/minecraft/entity/EntityLivingBase", l20, l20, INTEGER, INTEGER, INTEGER});
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/potion/PotionEffect", "getDuration", "()I", false);
- mv.visitLabel(l22);
- mv.visitFrame(F_FULL, 4, new Object[] {"net/minecraft/entity/EntityLivingBase", INTEGER, INTEGER, "net/minecraft/potion/PotionEffect"}, 7, new Object[] {"net/minecraft/entity/EntityLivingBase", l20, l20, INTEGER, INTEGER, INTEGER, INTEGER});
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Math", "max", "(II)I", false);
- mv.visitInsn(IADD);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(ICONST_5);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitInsn(IMUL);
- mv.visitIntInsn(BIPUSH, 7);
- mv.visitInsn(IDIV);
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Math", "max", "(II)I", false);
- mv.visitMethodInsn(INVOKESPECIAL, "net/minecraft/potion/PotionEffect", "<init>", "(III)V", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/EntityLivingBase", "addPotionEffect", "(Lnet/minecraft/potion/PotionEffect;)V", false);
- Label l23 = new Label();
- mv.visitLabel(l23);
- mv.visitLineNumber(1359, l23);
- mv.visitVarInsn(ALOAD, 0);
- Label l24 = new Label();
- mv.visitLabel(l24);
- mv.visitTypeInsn(NEW, "net/minecraft/potion/PotionEffect");
- mv.visitInsn(DUP);
- mv.visitFieldInsn(GETSTATIC, "ic2/core/IC2Potion", "radiation", "Lic2/core/IC2Potion;");
- mv.visitFieldInsn(GETFIELD, "ic2/core/IC2Potion", "id", "I");
- mv.visitVarInsn(ILOAD, 1);
- mv.visitIntInsn(SIPUSH, 180);
- mv.visitInsn(IMUL);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitInsn(IMUL);
- mv.visitInsn(ICONST_0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETSTATIC, "net/minecraft/potion/Potion", "potionTypes", "[Lnet/minecraft/potion/Potion;");
- mv.visitIntInsn(BIPUSH, 24);
- mv.visitInsn(AALOAD);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/EntityLivingBase", "getActivePotionEffect", "(Lnet/minecraft/potion/Potion;)Lnet/minecraft/potion/PotionEffect;", false);
- mv.visitInsn(DUP);
- mv.visitVarInsn(ASTORE, 3);
- Label l25 = new Label();
- mv.visitJumpInsn(IFNONNULL, l25);
- mv.visitInsn(ICONST_0);
- Label l26 = new Label();
- mv.visitJumpInsn(GOTO, l26);
- mv.visitLabel(l25);
- mv.visitFrame(F_FULL, 4, new Object[] {"net/minecraft/entity/EntityLivingBase", INTEGER, INTEGER, "net/minecraft/potion/PotionEffect"}, 6, new Object[] {"net/minecraft/entity/EntityLivingBase", l24, l24, INTEGER, INTEGER, INTEGER});
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/potion/PotionEffect", "getDuration", "()I", false);
- mv.visitLabel(l26);
- mv.visitFrame(F_FULL, 4, new Object[] {"net/minecraft/entity/EntityLivingBase", INTEGER, INTEGER, "net/minecraft/potion/PotionEffect"}, 7, new Object[] {"net/minecraft/entity/EntityLivingBase", l24, l24, INTEGER, INTEGER, INTEGER, INTEGER});
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Math", "max", "(II)I", false);
- mv.visitInsn(IADD);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(ICONST_5);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitInsn(IMUL);
- mv.visitIntInsn(BIPUSH, 7);
- mv.visitInsn(IDIV);
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Math", "max", "(II)I", false);
- mv.visitMethodInsn(INVOKESPECIAL, "net/minecraft/potion/PotionEffect", "<init>", "(III)V", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/EntityLivingBase", "addPotionEffect", "(Lnet/minecraft/potion/PotionEffect;)V", false);
- Label l27 = new Label();
- mv.visitLabel(l27);
- mv.visitLineNumber(1360, l27);
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l1);
- mv.visitLineNumber(1362, l1);
- mv.visitFrame(F_CHOP,1, null, 0, null);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(IRETURN);
- Label l28 = new Label();
- mv.visitLabel(l28);
- mv.visitLocalVariable("aEntity", "Lnet/minecraft/entity/EntityLivingBase;", null, l0, l28, 0);
- mv.visitLocalVariable("aLevel", "I", null, l0, l28, 1);
- mv.visitLocalVariable("aAmountOfItems", "I", null, l0, l28, 2);
- mv.visitLocalVariable("tEffect", "Lnet/minecraft/potion/PotionEffect;", null, l3, l1, 3);
- mv.visitMaxs(9, 4);
- mv.visitEnd();
- didInject = true;
- }
+ String aClassNameFormatted = Utils.class.getName().replace(".", "/");
if (aMethodName.equals("isWearingFullFrostHazmat")){
Preloader_Logger.LOG("Gregtech Utilities Patch", Level.INFO, "Injecting " + aMethodName + ".");
@@ -402,51 +85,14 @@ public class ClassTransformer_GT_Utility {
mv.visitCode();
Label l0 = new Label();
mv.visitLabel(l0);
- mv.visitLineNumber(1272, l0);
- mv.visitInsn(ICONST_1);
- mv.visitVarInsn(ISTORE, 1);
- Label l1 = new Label();
- mv.visitLabel(l1);
- Label l2 = new Label();
- mv.visitJumpInsn(GOTO, l2);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(1273, l3);
- mv.visitFrame(F_APPEND,1, new Object[] {INTEGER}, 0, null);
+ mv.visitLineNumber(1273, l0);
mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/EntityLivingBase", "getEquipmentInSlot", "(I)Lnet/minecraft/item/ItemStack;", false);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/HazmatUtils", "providesProtetion_Frost", "(Lnet/minecraft/item/ItemStack;)Z", false);
- Label l4 = new Label();
- mv.visitJumpInsn(IFNE, l4);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(1274, l5);
- mv.visitInsn(ICONST_0);
+ mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/EntityUtils", "isWearingFullFrostHazmat", "(Lnet/minecraft/entity/EntityLivingBase;)Z", false);
mv.visitInsn(IRETURN);
- mv.visitLabel(l4);
- mv.visitLineNumber(1272, l4);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IADD);
- mv.visitInsn(I2B);
- mv.visitVarInsn(ISTORE, 1);
- mv.visitLabel(l2);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitInsn(ICONST_5);
- mv.visitJumpInsn(IF_ICMPLT, l3);
- Label l6 = new Label();
- mv.visitLabel(l6);
- mv.visitLineNumber(1276, l6);
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IRETURN);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLocalVariable("aEntity", "Lnet/minecraft/entity/EntityLivingBase;", null, l0, l7, 0);
- mv.visitLocalVariable("i", "B", null, l1, l6, 1);
- mv.visitMaxs(2, 2);
+ Label l1 = new Label();
+ mv.visitLabel(l1);
+ mv.visitLocalVariable("aEntity", "Lnet/minecraft/entity/EntityLivingBase;", null, l0, l1, 0);
+ mv.visitMaxs(1, 1);
mv.visitEnd();
didInject = true;
}
@@ -457,51 +103,14 @@ public class ClassTransformer_GT_Utility {
mv.visitCode();
Label l0 = new Label();
mv.visitLabel(l0);
- mv.visitLineNumber(1280, l0);
- mv.visitInsn(ICONST_1);
- mv.visitVarInsn(ISTORE, 1);
- Label l1 = new Label();
- mv.visitLabel(l1);
- Label l2 = new Label();
- mv.visitJumpInsn(GOTO, l2);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(1281, l3);
- mv.visitFrame(F_APPEND,1, new Object[] {INTEGER}, 0, null);
+ mv.visitLineNumber(1277, l0);
mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/EntityLivingBase", "getEquipmentInSlot", "(I)Lnet/minecraft/item/ItemStack;", false);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/HazmatUtils", "providesProtetion_Fire", "(Lnet/minecraft/item/ItemStack;)Z", false);
- Label l4 = new Label();
- mv.visitJumpInsn(IFNE, l4);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(1282, l5);
- mv.visitInsn(ICONST_0);
+ mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/EntityUtils", "isWearingFullHeatHazmat", "(Lnet/minecraft/entity/EntityLivingBase;)Z", false);
mv.visitInsn(IRETURN);
- mv.visitLabel(l4);
- mv.visitLineNumber(1280, l4);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IADD);
- mv.visitInsn(I2B);
- mv.visitVarInsn(ISTORE, 1);
- mv.visitLabel(l2);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitInsn(ICONST_5);
- mv.visitJumpInsn(IF_ICMPLT, l3);
- Label l6 = new Label();
- mv.visitLabel(l6);
- mv.visitLineNumber(1284, l6);
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IRETURN);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLocalVariable("aEntity", "Lnet/minecraft/entity/EntityLivingBase;", null, l0, l7, 0);
- mv.visitLocalVariable("i", "B", null, l1, l6, 1);
- mv.visitMaxs(2, 2);
+ Label l1 = new Label();
+ mv.visitLabel(l1);
+ mv.visitLocalVariable("aEntity", "Lnet/minecraft/entity/EntityLivingBase;", null, l0, l1, 0);
+ mv.visitMaxs(1, 1);
mv.visitEnd();
didInject = true;
}
@@ -512,51 +121,14 @@ public class ClassTransformer_GT_Utility {
mv.visitCode();
Label l0 = new Label();
mv.visitLabel(l0);
- mv.visitLineNumber(1288, l0);
- mv.visitInsn(ICONST_1);
- mv.visitVarInsn(ISTORE, 1);
- Label l1 = new Label();
- mv.visitLabel(l1);
- Label l2 = new Label();
- mv.visitJumpInsn(GOTO, l2);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(1289, l3);
- mv.visitFrame(F_APPEND,1, new Object[] {INTEGER}, 0, null);
+ mv.visitLineNumber(1281, l0);
mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/EntityLivingBase", "getEquipmentInSlot", "(I)Lnet/minecraft/item/ItemStack;", false);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/HazmatUtils", "providesProtetion_Biohazard", "(Lnet/minecraft/item/ItemStack;)Z", false);
- Label l4 = new Label();
- mv.visitJumpInsn(IFNE, l4);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(1290, l5);
- mv.visitInsn(ICONST_0);
+ mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/EntityUtils", "isWearingFullBioHazmat", "(Lnet/minecraft/entity/EntityLivingBase;)Z", false);
mv.visitInsn(IRETURN);
- mv.visitLabel(l4);
- mv.visitLineNumber(1288, l4);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IADD);
- mv.visitInsn(I2B);
- mv.visitVarInsn(ISTORE, 1);
- mv.visitLabel(l2);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitInsn(ICONST_5);
- mv.visitJumpInsn(IF_ICMPLT, l3);
- Label l6 = new Label();
- mv.visitLabel(l6);
- mv.visitLineNumber(1292, l6);
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IRETURN);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLocalVariable("aEntity", "Lnet/minecraft/entity/EntityLivingBase;", null, l0, l7, 0);
- mv.visitLocalVariable("i", "B", null, l1, l6, 1);
- mv.visitMaxs(2, 2);
+ Label l1 = new Label();
+ mv.visitLabel(l1);
+ mv.visitLocalVariable("aEntity", "Lnet/minecraft/entity/EntityLivingBase;", null, l0, l1, 0);
+ mv.visitMaxs(1, 1);
mv.visitEnd();
didInject = true;
}
@@ -567,51 +139,14 @@ public class ClassTransformer_GT_Utility {
mv.visitCode();
Label l0 = new Label();
mv.visitLabel(l0);
- mv.visitLineNumber(1296, l0);
- mv.visitInsn(ICONST_1);
- mv.visitVarInsn(ISTORE, 1);
- Label l1 = new Label();
- mv.visitLabel(l1);
- Label l2 = new Label();
- mv.visitJumpInsn(GOTO, l2);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(1297, l3);
- mv.visitFrame(F_APPEND,1, new Object[] {INTEGER}, 0, null);
+ mv.visitLineNumber(1285, l0);
mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/EntityLivingBase", "getEquipmentInSlot", "(I)Lnet/minecraft/item/ItemStack;", false);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/HazmatUtils", "providesProtetion_Radiation", "(Lnet/minecraft/item/ItemStack;)Z", false);
- Label l4 = new Label();
- mv.visitJumpInsn(IFNE, l4);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(1298, l5);
- mv.visitInsn(ICONST_0);
+ mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/EntityUtils", "isWearingFullRadioHazmat", "(Lnet/minecraft/entity/EntityLivingBase;)Z", false);
mv.visitInsn(IRETURN);
- mv.visitLabel(l4);
- mv.visitLineNumber(1296, l4);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IADD);
- mv.visitInsn(I2B);
- mv.visitVarInsn(ISTORE, 1);
- mv.visitLabel(l2);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitInsn(ICONST_5);
- mv.visitJumpInsn(IF_ICMPLT, l3);
- Label l6 = new Label();
- mv.visitLabel(l6);
- mv.visitLineNumber(1300, l6);
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IRETURN);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLocalVariable("aEntity", "Lnet/minecraft/entity/EntityLivingBase;", null, l0, l7, 0);
- mv.visitLocalVariable("i", "B", null, l1, l6, 1);
- mv.visitMaxs(2, 2);
+ Label l1 = new Label();
+ mv.visitLabel(l1);
+ mv.visitLocalVariable("aEntity", "Lnet/minecraft/entity/EntityLivingBase;", null, l0, l1, 0);
+ mv.visitMaxs(1, 1);
mv.visitEnd();
didInject = true;
}
@@ -622,51 +157,14 @@ public class ClassTransformer_GT_Utility {
mv.visitCode();
Label l0 = new Label();
mv.visitLabel(l0);
- mv.visitLineNumber(1304, l0);
- mv.visitInsn(ICONST_1);
- mv.visitVarInsn(ISTORE, 1);
- Label l1 = new Label();
- mv.visitLabel(l1);
- Label l2 = new Label();
- mv.visitJumpInsn(GOTO, l2);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(1305, l3);
- mv.visitFrame(F_APPEND,1, new Object[] {INTEGER}, 0, null);
+ mv.visitLineNumber(1289, l0);
mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/EntityLivingBase", "getEquipmentInSlot", "(I)Lnet/minecraft/item/ItemStack;", false);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/HazmatUtils", "providesProtetion_Electricity", "(Lnet/minecraft/item/ItemStack;)Z", false);
- Label l4 = new Label();
- mv.visitJumpInsn(IFNE, l4);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(1306, l5);
- mv.visitInsn(ICONST_0);
+ mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/EntityUtils", "isWearingFullElectroHazmat", "(Lnet/minecraft/entity/EntityLivingBase;)Z", false);
mv.visitInsn(IRETURN);
- mv.visitLabel(l4);
- mv.visitLineNumber(1304, l4);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IADD);
- mv.visitInsn(I2B);
- mv.visitVarInsn(ISTORE, 1);
- mv.visitLabel(l2);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitInsn(ICONST_5);
- mv.visitJumpInsn(IF_ICMPLT, l3);
- Label l6 = new Label();
- mv.visitLabel(l6);
- mv.visitLineNumber(1308, l6);
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IRETURN);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLocalVariable("aEntity", "Lnet/minecraft/entity/EntityLivingBase;", null, l0, l7, 0);
- mv.visitLocalVariable("i", "B", null, l1, l6, 1);
- mv.visitMaxs(2, 2);
+ Label l1 = new Label();
+ mv.visitLabel(l1);
+ mv.visitLocalVariable("aEntity", "Lnet/minecraft/entity/EntityLivingBase;", null, l0, l1, 0);
+ mv.visitMaxs(1, 1);
mv.visitEnd();
didInject = true;
}
@@ -677,51 +175,54 @@ public class ClassTransformer_GT_Utility {
mv.visitCode();
Label l0 = new Label();
mv.visitLabel(l0);
- mv.visitLineNumber(1312, l0);
- mv.visitInsn(ICONST_1);
- mv.visitVarInsn(ISTORE, 1);
+ mv.visitLineNumber(1293, l0);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/EntityUtils", "isWearingFullGasHazmat", "(Lnet/minecraft/entity/EntityLivingBase;)Z", false);
+ mv.visitInsn(IRETURN);
Label l1 = new Label();
mv.visitLabel(l1);
- Label l2 = new Label();
- mv.visitJumpInsn(GOTO, l2);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(1313, l3);
- mv.visitFrame(F_APPEND,1, new Object[] {INTEGER}, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/entity/EntityLivingBase", "getEquipmentInSlot", "(I)Lnet/minecraft/item/ItemStack;", false);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/HazmatUtils", "providesProtetion_Gas", "(Lnet/minecraft/item/ItemStack;)Z", false);
- Label l4 = new Label();
- mv.visitJumpInsn(IFNE, l4);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(1314, l5);
- mv.visitInsn(ICONST_0);
+ mv.visitLocalVariable("aEntity", "Lnet/minecraft/entity/EntityLivingBase;", null, l0, l1, 0);
+ mv.visitMaxs(1, 1);
+ mv.visitEnd();
+ didInject = true;
+ }
+
+ if (aMethodName.equals("getTier")) {
+ Preloader_Logger.LOG("Gregtech Utilities Patch", Level.INFO, "Injecting " + aMethodName + ", static replacement call to "+aClassNameFormatted+".");
+ mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "getTier", "(J)B", null, null);
+ mv.visitCode();
+ Label l0 = new Label();
+ mv.visitLabel(l0);
+ mv.visitLineNumber(23, l0);
+ mv.visitVarInsn(LLOAD, 0);
+ mv.visitMethodInsn(INVOKESTATIC, aClassNameFormatted, "getTier", "(J)B", false);
mv.visitInsn(IRETURN);
- mv.visitLabel(l4);
- mv.visitLineNumber(1312, l4);
- mv.visitFrame(F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IADD);
- mv.visitInsn(I2B);
- mv.visitVarInsn(ISTORE, 1);
- mv.visitLabel(l2);
- mv.visitFrame(F_SAME, 0, null, 0, null);
+ Label l1 = new Label();
+ mv.visitLabel(l1);
+ mv.visitLocalVariable("l", "J", null, l0, l1, 0);
+ mv.visitMaxs(2, 2);
+ mv.visitEnd();
+ didInject = true;
+ }
+
+ if (aMethodName.equals("applyRadioactivity")){
+ Preloader_Logger.LOG("Gregtech Utilities Patch", Level.INFO, "Injecting " + aMethodName + ".");
+ mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "applyRadioactivity", "(Lnet/minecraft/entity/EntityLivingBase;II)Z", null, null);
+ mv.visitCode();
+ Label l0 = new Label();
+ mv.visitLabel(l0);
+ mv.visitLineNumber(1342, l0);
+ mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ILOAD, 1);
- mv.visitInsn(ICONST_5);
- mv.visitJumpInsn(IF_ICMPLT, l3);
- Label l6 = new Label();
- mv.visitLabel(l6);
- mv.visitLineNumber(1316, l6);
- mv.visitInsn(ICONST_1);
+ mv.visitVarInsn(ILOAD, 2);
+ mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/EntityUtils", "applyRadioactivity", "(Lnet/minecraft/entity/EntityLivingBase;II)Z", false);
mv.visitInsn(IRETURN);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLocalVariable("aEntity", "Lnet/minecraft/entity/EntityLivingBase;", null, l0, l7, 0);
- mv.visitLocalVariable("i", "B", null, l1, l6, 1);
- mv.visitMaxs(2, 2);
+ Label l1 = new Label();
+ mv.visitLabel(l1);
+ mv.visitLocalVariable("aEntity", "Lnet/minecraft/entity/EntityLivingBase;", null, l0, l1, 0);
+ mv.visitLocalVariable("aLevel", "I", null, l0, l1, 1);
+ mv.visitLocalVariable("aAmountOfItems", "I", null, l0, l1, 2);
+ mv.visitMaxs(3, 3);
mv.visitEnd();
didInject = true;
}