aboutsummaryrefslogtreecommitdiff
path: root/src/Java
diff options
context:
space:
mode:
authorMartin Robertz <dream-master@gmx.net>2021-06-05 19:05:11 +0200
committerGitHub <noreply@github.com>2021-06-05 19:05:11 +0200
commit11e26a7b92607127889a16357c5696b2e0f39448 (patch)
tree9991ac199e0ad8ea3b26f41d63231fe85a0a39b7 /src/Java
parent45938b57966339ac3ce5f0a69fa6388c2b08de07 (diff)
parentd81d96e19c771b47a1da9685daf60167af16a0a2 (diff)
downloadGT5-Unofficial-11e26a7b92607127889a16357c5696b2e0f39448.tar.gz
GT5-Unofficial-11e26a7b92607127889a16357c5696b2e0f39448.tar.bz2
GT5-Unofficial-11e26a7b92607127889a16357c5696b2e0f39448.zip
Merge pull request #3 from GTNewHorizons/tc-patch
Diffstat (limited to 'src/Java')
-rw-r--r--src/Java/gtPlusPlus/api/objects/minecraft/ThaumcraftDataStack.java71
-rw-r--r--src/Java/gtPlusPlus/api/objects/minecraft/ThaumcraftItemStackData.java57
-rw-r--r--src/Java/gtPlusPlus/api/objects/minecraft/ThaumcraftSmeltingCache.java39
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/helpers/MethodHelper_TC.java252
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_AlchemicalFurnace.java513
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_ThaumcraftCraftingManager.java192
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java8
7 files changed, 0 insertions, 1132 deletions
diff --git a/src/Java/gtPlusPlus/api/objects/minecraft/ThaumcraftDataStack.java b/src/Java/gtPlusPlus/api/objects/minecraft/ThaumcraftDataStack.java
deleted file mode 100644
index 947b0a97b4..0000000000
--- a/src/Java/gtPlusPlus/api/objects/minecraft/ThaumcraftDataStack.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package gtPlusPlus.api.objects.minecraft;
-
-import java.util.Iterator;
-import java.util.Stack;
-
-import net.minecraft.item.ItemStack;
-import thaumcraft.api.aspects.AspectList;
-
-public class ThaumcraftDataStack extends Stack<ThaumcraftItemStackData> {
-
- private final int mStackSize;
-
- public ThaumcraftDataStack() {
- this(Integer.MAX_VALUE);
- }
-
- public ThaumcraftDataStack(int aMaxSize) {
- mStackSize = aMaxSize;
- }
-
- public boolean containsItemStack(ItemStack aStack, boolean aAddItemStackIfMissingFromStack) {
- return getItemStackIndex(aStack) != -1;
- }
-
- private int getItemStackIndex(ItemStack aStack) {
- if (this.empty() || aStack == null) {
- return -1;
- }
- Iterator<ThaumcraftItemStackData> iterator = this.iterator();
- int aIndex = 0;
- while(iterator.hasNext()){
- ThaumcraftItemStackData value = iterator.next();
- if (value.doesItemStackDataMatch(aStack)) {
- //int index = this.search(value);
- return aIndex;
- }
- aIndex++;
- }
- return -1;
- }
-
- public AspectList getAspectsForStack(ItemStack aStack) {
- if (aStack != null) {
- int aIndex = getItemStackIndex(aStack);
- if (!this.empty()) {
- if (aIndex != -1) {
- ThaumcraftItemStackData aValue = this.elementAt(aIndex);
- if (aValue != null) {
- return aValue.getAspectList();
- }
- }
- }
- if (this.empty() || aIndex == -1) {
- ThaumcraftItemStackData aTemp = new ThaumcraftItemStackData(aStack);
- this.push(aTemp);
- return aTemp.getAspectList();
- }
- }
- return new AspectList();
- }
-
- @Override
- public ThaumcraftItemStackData push(ThaumcraftItemStackData item) {
- if (this.size() >= this.mStackSize) {
- this.pop();
- }
- return super.push(item);
- }
-
-
-}
diff --git a/src/Java/gtPlusPlus/api/objects/minecraft/ThaumcraftItemStackData.java b/src/Java/gtPlusPlus/api/objects/minecraft/ThaumcraftItemStackData.java
deleted file mode 100644
index 1e9ea49dbf..0000000000
--- a/src/Java/gtPlusPlus/api/objects/minecraft/ThaumcraftItemStackData.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package gtPlusPlus.api.objects.minecraft;
-
-import gtPlusPlus.core.util.minecraft.ItemUtils;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.NBTTagCompound;
-import thaumcraft.api.aspects.AspectList;
-import thaumcraft.common.lib.crafting.ThaumcraftCraftingManager;
-
-public class ThaumcraftItemStackData {
-
- protected final Item mItem;
- protected final int mDamage;
- protected final int mStackSize;
- protected final NBTTagCompound mNBT;
- protected final String mUniqueDataTag;
- private final AspectList mAspectList;
-
- public ThaumcraftItemStackData (ItemStack aStack) {
- mItem = aStack.getItem();
- mDamage = aStack.getItemDamage();
- mStackSize = aStack.stackSize;
- mNBT = (aStack.getTagCompound() != null ? aStack.getTagCompound() : new NBTTagCompound());
- mUniqueDataTag = ""+Item.getIdFromItem(mItem)+""+mDamage+""+mNBT.getId();
- mAspectList = ThaumcraftCraftingManager.getObjectTags(aStack);
- }
-
- public String getUniqueDataIdentifier() {
- return this.mUniqueDataTag;
- }
-
- public ItemStack getStack() {
- ItemStack aTemp = ItemUtils.simpleMetaStack(mItem, mDamage, mStackSize);
- aTemp.setTagCompound(mNBT);
- return aTemp;
- }
-
- public AspectList getAspectList() {
- return mAspectList;
- }
-
- public boolean doesItemStackDataMatch(ItemStack aStack) {
- if (aStack == null) {
- return false;
- }
- Item aItem = aStack.getItem();
- int aMeta = aStack.getItemDamage();
- if (aItem != null) {
- if (aItem == mItem && aMeta == mDamage) {
- return true;
- }
- }
- return false;
- }
-
-
-}
diff --git a/src/Java/gtPlusPlus/api/objects/minecraft/ThaumcraftSmeltingCache.java b/src/Java/gtPlusPlus/api/objects/minecraft/ThaumcraftSmeltingCache.java
deleted file mode 100644
index 1e16527065..0000000000
--- a/src/Java/gtPlusPlus/api/objects/minecraft/ThaumcraftSmeltingCache.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package gtPlusPlus.api.objects.minecraft;
-
-import java.util.HashMap;
-
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.NBTTagCompound;
-
-public class ThaumcraftSmeltingCache {
-
- HashMap<String, Boolean> mInternalCache = new HashMap<String, Boolean>();
-
- public void addItemToCache(ItemStack aStack, Boolean aSmelting) {
- String aKey = getUniqueKey(aStack);
- mInternalCache.put(aKey, aSmelting);
- }
-
- public int canSmelt(ItemStack aStack) {
- String aKey = getUniqueKey(aStack);
- Boolean aCanSmeltValue = mInternalCache.get(aKey);
- if (aCanSmeltValue != null) {
- if (aCanSmeltValue) {
- return 1;
- }
- else {
- return 0;
- }
- }
- return -1;
- }
-
- public static final String getUniqueKey(ItemStack aStack) {
- Item aItem = aStack.getItem();
- int aDamage = aStack.getItemDamage();
- NBTTagCompound aNBT = (aStack.getTagCompound() != null ? aStack.getTagCompound() : new NBTTagCompound());
- return ""+Item.getIdFromItem(aItem)+""+aDamage+""+aNBT.getId();
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/helpers/MethodHelper_TC.java b/src/Java/gtPlusPlus/preloader/asm/helpers/MethodHelper_TC.java
deleted file mode 100644
index f1219241cf..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/helpers/MethodHelper_TC.java
+++ /dev/null
@@ -1,252 +0,0 @@
-package gtPlusPlus.preloader.asm.helpers;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import gtPlusPlus.core.util.reflect.ReflectionUtils;
-import net.minecraft.init.Items;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemPotion;
-import net.minecraft.item.ItemStack;
-import net.minecraft.potion.Potion;
-import net.minecraft.potion.PotionEffect;
-import thaumcraft.api.ThaumcraftApi;
-import thaumcraft.api.aspects.Aspect;
-import thaumcraft.api.aspects.AspectList;
-import thaumcraft.common.items.wands.ItemWandCasting;
-import thaumcraft.common.lib.crafting.ThaumcraftCraftingManager;
-
-public class MethodHelper_TC {
-
- private static Class mThaumcraftCraftingManager;
-
- public static AspectList generateTags(Item item, int meta) {
- AspectList temp = generateTags(item, meta, new ArrayList());
- return temp;
- }
-
- public static AspectList generateTags(final Item item, final int meta, final ArrayList<List> history) {
- int tmeta = meta;
- if (item == null) {
- return null;
- }
- //Preloader_Logger.INFO("Generating aspect tags for "+item.getUnlocalizedName()+":"+meta);
- try {
- tmeta = ((new ItemStack(item, 1, meta).getItem().isDamageable() || !new ItemStack(item, 1, meta).getItem().getHasSubtypes()) ? 32767 : meta);
- }
- catch (Exception ex) {}
- //Preloader_Logger.INFO("Set Meta to "+tmeta);
- if (ThaumcraftApi.exists(item, tmeta)) {
- return ThaumcraftCraftingManager.getObjectTags(new ItemStack(item, 1, tmeta));
- }
- if (history.contains(Arrays.asList(item, tmeta))) {
- return null;
- }
- history.add(Arrays.asList(item, tmeta));
- if (history.size() < 100) {
- AspectList ret = generateTagsFromRecipes(item, (tmeta == 32767) ? 0 : meta, history);
- ret = capAspects(ret, 64);
- ThaumcraftApi.registerObjectTag(new ItemStack(item, 1, tmeta), ret);
- return ret;
- }
- return null;
- }
-
- private static AspectList capAspects(final AspectList sourcetags, final int amount) {
- if (sourcetags == null) {
- return sourcetags;
- }
- final AspectList out = new AspectList();
- for (final Aspect aspect : sourcetags.getAspects()) {
- out.merge(aspect, Math.min(amount, sourcetags.getAmount(aspect)));
- }
- return out;
- }
-
- private static AspectList generateTagsFromRecipes(final Item item, final int meta, final ArrayList<List> history) {
- AspectList ret = null;
- ret = generateTagsFromCrucibleRecipes(item, meta, history);
- if (ret != null) {
- return ret;
- }
- ret = generateTagsFromArcaneRecipes(item, meta, history);
- if (ret != null) {
- return ret;
- }
- ret = generateTagsFromInfusionRecipes(item, meta, history);
- if (ret != null) {
- return ret;
- }
- ret = generateTagsFromCraftingRecipes(item, meta, history);
- return ret;
- }
-
- private static boolean isClassSet() {
- if (mThaumcraftCraftingManager == null) {
- mThaumcraftCraftingManager = ReflectionUtils.getClass("thaumcraft.common.lib.crafting.ThaumcraftCraftingManager");
- }
- return true;
- }
-
- private static Method mGetTagsFromCraftingRecipes;
- private static Method mGetTagsFromInfusionRecipes;
- private static Method mGetTagsFromArcaneRecipes;
- private static Method mGetTagsFromCrucibleRecipes;
-
- private static AspectList generateTagsFromCraftingRecipes(Item item, int meta, ArrayList<List> history) {
- isClassSet();
- if (mGetTagsFromCraftingRecipes == null) {
- mGetTagsFromCraftingRecipes = ReflectionUtils.getMethod(mThaumcraftCraftingManager, "generateTagsFromCraftingRecipes", new Class[] {Item.class, int.class, ArrayList.class});
- }
- return (AspectList) ReflectionUtils.invokeNonBool(null, mGetTagsFromCraftingRecipes, new Object[] {item, meta, history});
- }
-
- private static AspectList generateTagsFromInfusionRecipes(Item item, int meta, ArrayList<List> history) {
- isClassSet();
- if (mGetTagsFromInfusionRecipes == null) {
- mGetTagsFromInfusionRecipes = ReflectionUtils.getMethod(mThaumcraftCraftingManager, "generateTagsFromInfusionRecipes", new Class[] {Item.class, int.class, ArrayList.class});
- }
- return (AspectList) ReflectionUtils.invokeNonBool(null, mGetTagsFromInfusionRecipes, new Object[] {item, meta, history});
- }
-
- private static AspectList generateTagsFromArcaneRecipes(Item item, int meta, ArrayList<List> history) {
- isClassSet();
- if (mGetTagsFromArcaneRecipes == null) {
- mGetTagsFromArcaneRecipes = ReflectionUtils.getMethod(mThaumcraftCraftingManager, "generateTagsFromArcaneRecipes", new Class[] {Item.class, int.class, ArrayList.class});
- }
- return (AspectList) ReflectionUtils.invokeNonBool(null, mGetTagsFromArcaneRecipes, new Object[] {item, meta, history});
- }
-
- private static AspectList generateTagsFromCrucibleRecipes(Item item, int meta, ArrayList<List> history) {
- isClassSet();
- if (mGetTagsFromCrucibleRecipes == null) {
- mGetTagsFromCrucibleRecipes = ReflectionUtils.getMethod(mThaumcraftCraftingManager, "generateTagsFromCrucibleRecipes", new Class[] {Item.class, int.class, ArrayList.class});
- }
- return (AspectList) ReflectionUtils.invokeNonBool(null, mGetTagsFromCrucibleRecipes, new Object[] {item, meta, history});
- }
-
-
-
- /*
- * Let's improve the TC lookup for aspects, cause the default implementation is shit.
- */
-
-
- public static AspectList getObjectTags(ItemStack itemstack) {
- Item item;
- int meta;
- try {
- item = itemstack.getItem();
- meta = itemstack.getItemDamage();
- } catch (Exception var8) {
- return null;
- }
-
- AspectList tmp = (AspectList)ThaumcraftApi.objectTags.get(Arrays.asList(new Object[]{item, Integer.valueOf(meta)}));
- if(tmp == null) {
- for(List l : ThaumcraftApi.objectTags.keySet()) {
- if((Item)l.get(0) == item && l.get(1) instanceof int[]) {
- int[] range = (int[])((int[])l.get(1));
- Arrays.sort(range);
- if(Arrays.binarySearch(range, meta) >= 0) {
- tmp = (AspectList)ThaumcraftApi.objectTags.get(Arrays.asList(new Object[]{item, range}));
- return tmp;
- }
- }
- }
-
- tmp = (AspectList)ThaumcraftApi.objectTags.get(Arrays.asList(new Object[]{item, Integer.valueOf(32767)}));
- if(tmp == null && tmp == null) {
- if(meta == 32767 && tmp == null) {
- int index = 0;
-
- while(true) {
- tmp = (AspectList)ThaumcraftApi.objectTags.get(Arrays.asList(new Object[]{item, Integer.valueOf(index)}));
- ++index;
- if(index >= 16 || tmp != null) {
- break;
- }
- }
- }
-
- if(tmp == null) {
- tmp = generateTags(item, meta);
- }
- }
- }
-
- if(itemstack.getItem() instanceof ItemWandCasting) {
- ItemWandCasting wand = (ItemWandCasting)itemstack.getItem();
- if(tmp == null) {
- tmp = new AspectList();
- }
-
- tmp.merge(Aspect.MAGIC, (wand.getRod(itemstack).getCraftCost() + wand.getCap(itemstack).getCraftCost()) / 2);
- tmp.merge(Aspect.TOOL, (wand.getRod(itemstack).getCraftCost() + wand.getCap(itemstack).getCraftCost()) / 3);
- }
-
- if(item != null && item == Items.potionitem) {
- if(tmp == null) {
- tmp = new AspectList();
- }
-
- tmp.merge(Aspect.WATER, 1);
- ItemPotion ip = (ItemPotion)item;
- List<PotionEffect> effects = ip.getEffects(itemstack.getItemDamage());
- if(effects != null) {
- if(ItemPotion.isSplash(itemstack.getItemDamage())) {
- tmp.merge(Aspect.ENTROPY, 2);
- }
-
- for(PotionEffect var6 : effects) {
- tmp.merge(Aspect.MAGIC, (var6.getAmplifier() + 1) * 2);
- if(var6.getPotionID() == Potion.blindness.id) {
- tmp.merge(Aspect.DARKNESS, (var6.getAmplifier() + 1) * 3);
- } else if(var6.getPotionID() == Potion.confusion.id) {
- tmp.merge(Aspect.ELDRITCH, (var6.getAmplifier() + 1) * 3);
- } else if(var6.getPotionID() == Potion.damageBoost.id) {
- tmp.merge(Aspect.WEAPON, (var6.getAmplifier() + 1) * 3);
- } else if(var6.getPotionID() == Potion.digSlowdown.id) {
- tmp.merge(Aspect.TRAP, (var6.getAmplifier() + 1) * 3);
- } else if(var6.getPotionID() == Potion.digSpeed.id) {
- tmp.merge(Aspect.TOOL, (var6.getAmplifier() + 1) * 3);
- } else if(var6.getPotionID() == Potion.fireResistance.id) {
- tmp.merge(Aspect.ARMOR, var6.getAmplifier() + 1);
- tmp.merge(Aspect.FIRE, (var6.getAmplifier() + 1) * 2);
- } else if(var6.getPotionID() == Potion.harm.id) {
- tmp.merge(Aspect.DEATH, (var6.getAmplifier() + 1) * 3);
- } else if(var6.getPotionID() == Potion.heal.id) {
- tmp.merge(Aspect.HEAL, (var6.getAmplifier() + 1) * 3);
- } else if(var6.getPotionID() == Potion.hunger.id) {
- tmp.merge(Aspect.DEATH, (var6.getAmplifier() + 1) * 3);
- } else if(var6.getPotionID() == Potion.invisibility.id) {
- tmp.merge(Aspect.SENSES, (var6.getAmplifier() + 1) * 3);
- } else if(var6.getPotionID() == Potion.jump.id) {
- tmp.merge(Aspect.FLIGHT, (var6.getAmplifier() + 1) * 3);
- } else if(var6.getPotionID() == Potion.moveSlowdown.id) {
- tmp.merge(Aspect.TRAP, (var6.getAmplifier() + 1) * 3);
- } else if(var6.getPotionID() == Potion.moveSpeed.id) {
- tmp.merge(Aspect.MOTION, (var6.getAmplifier() + 1) * 3);
- } else if(var6.getPotionID() == Potion.nightVision.id) {
- tmp.merge(Aspect.SENSES, (var6.getAmplifier() + 1) * 3);
- } else if(var6.getPotionID() == Potion.poison.id) {
- tmp.merge(Aspect.POISON, (var6.getAmplifier() + 1) * 3);
- } else if(var6.getPotionID() == Potion.regeneration.id) {
- tmp.merge(Aspect.HEAL, (var6.getAmplifier() + 1) * 3);
- } else if(var6.getPotionID() == Potion.resistance.id) {
- tmp.merge(Aspect.ARMOR, (var6.getAmplifier() + 1) * 3);
- } else if(var6.getPotionID() == Potion.waterBreathing.id) {
- tmp.merge(Aspect.AIR, (var6.getAmplifier() + 1) * 3);
- } else if(var6.getPotionID() == Potion.weakness.id) {
- tmp.merge(Aspect.DEATH, (var6.getAmplifier() + 1) * 3);
- }
- }
- }
- }
-
- return capAspects(tmp, 64);
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_AlchemicalFurnace.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_AlchemicalFurnace.java
deleted file mode 100644
index abdfb7d25a..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_AlchemicalFurnace.java
+++ /dev/null
@@ -1,513 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.*;
-
-import cpw.mods.fml.relauncher.FMLRelaunchLog;
-import gtPlusPlus.preloader.Preloader_Logger;
-
-public class ClassTransformer_TC_AlchemicalFurnace {
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
-
- public ClassTransformer_TC_AlchemicalFurnace(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);
- boolean wasMethodObfuscated = aTempMethodRemover.getObfuscatedRemoval();
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- } else {
- isValid = false;
- }
-
- if (isValid) {
- Preloader_Logger.LOG("TC Alchemy Furnace Patch", Level.INFO, "Attempting Field Injection.");
- boolean fields = addField(aTempWriter);
- Preloader_Logger.LOG("TC Alchemy Furnace Patch", Level.INFO, "Success? "+fields);
- Preloader_Logger.LOG("TC Alchemy Furnace Patch", Level.INFO, "Attempting Method Injection.");
- boolean methods = injectMethod(wasMethodObfuscated, aTempWriter);
- Preloader_Logger.LOG("TC Alchemy Furnace Patch", Level.INFO, "Success? "+methods);
- }
-
- Preloader_Logger.LOG("TC Alchemy Furnace Patch", Level.INFO, "Valid patch? " + isValid + ".");
- reader = aTempReader;
- writer = aTempWriter;
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- // Add a field to hold the smelting cache
- public boolean addField(ClassWriter cv) {
- Preloader_Logger.LOG("TC Alchemy Furnace Patch", Level.INFO, "Field injection complete.");
- FieldVisitor fv = cv.visitField(ACC_PRIVATE, "smeltingCache", "LgtPlusPlus/api/objects/minecraft/ThaumcraftDataStack;", null, null);
- if (fv != null) {
- fv.visitEnd();
- return true;
- }
- return false;
- }
-
- public boolean injectMethod(boolean wasMethodObfuscated, ClassWriter cw) {
- MethodVisitor mv;
- boolean didInject = false;
-
- // Get the right string to use for the environment we are in.
- String aItemStack = "net/minecraft/item/ItemStack";
- String aItemStack_Obf = "add";
- String aCorrectString = wasMethodObfuscated ? aItemStack_Obf : aItemStack;
-
- // thaumcraft/common/tiles/TileAlchemyFurnace
- // Replace the original canSmelt with one that uses the optimized cache
- {
- mv = cw.visitMethod(ACC_PRIVATE, "canSmelt", "()Z", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(306, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumcraft/common/tiles/TileAlchemyFurnace", "furnaceItemStacks", "[L"+aCorrectString+";");
- mv.visitInsn(ICONST_0);
- mv.visitInsn(AALOAD);
- Label l1 = new Label();
- mv.visitJumpInsn(IFNONNULL, l1);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(307, l2);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l1);
- mv.visitLineNumber(309, l1);
- mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKESPECIAL, "thaumcraft/common/tiles/TileAlchemyFurnace", "getAspectsFromInventoryItem", "()Lthaumcraft/api/aspects/AspectList;", false);
- mv.visitVarInsn(ASTORE, 1);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(310, l3);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumcraft/common/tiles/TileAlchemyFurnace", "furnaceItemStacks", "[L"+aCorrectString+";");
- mv.visitInsn(ICONST_0);
- mv.visitInsn(AALOAD);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKESTATIC, "thaumcraft/common/lib/crafting/ThaumcraftCraftingManager", "getBonusTags", "(L"+aCorrectString+";Lthaumcraft/api/aspects/AspectList;)Lthaumcraft/api/aspects/AspectList;", false);
- mv.visitVarInsn(ASTORE, 1);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLineNumber(311, l4);
- mv.visitVarInsn(ALOAD, 1);
- Label l5 = new Label();
- mv.visitJumpInsn(IFNULL, l5);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "thaumcraft/api/aspects/AspectList", "size", "()I", false);
- mv.visitJumpInsn(IFEQ, l5);
- Label l6 = new Label();
- mv.visitLabel(l6);
- mv.visitLineNumber(312, l6);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "thaumcraft/api/aspects/AspectList", "visSize", "()I", false);
- mv.visitVarInsn(ISTORE, 2);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLineNumber(313, l7);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumcraft/common/tiles/TileAlchemyFurnace", "maxVis", "I");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumcraft/common/tiles/TileAlchemyFurnace", "vis", "I");
- mv.visitInsn(ISUB);
- Label l8 = new Label();
- mv.visitJumpInsn(IF_ICMPLE, l8);
- Label l9 = new Label();
- mv.visitLabel(l9);
- mv.visitLineNumber(314, l9);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l8);
- mv.visitLineNumber(316, l8);
- mv.visitFrame(Opcodes.F_APPEND,2, new Object[] {"thaumcraft/api/aspects/AspectList", Opcodes.INTEGER}, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ILOAD, 2);
- mv.visitIntInsn(BIPUSH, 10);
- mv.visitInsn(IMUL);
- mv.visitInsn(I2F);
- mv.visitInsn(FCONST_1);
- mv.visitLdcInsn(new Float("0.125"));
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumcraft/common/tiles/TileAlchemyFurnace", "bellows", "I");
- mv.visitInsn(I2F);
- mv.visitInsn(FMUL);
- mv.visitInsn(FSUB);
- mv.visitInsn(FMUL);
- mv.visitInsn(F2I);
- mv.visitFieldInsn(PUTFIELD, "thaumcraft/common/tiles/TileAlchemyFurnace", "smeltTime", "I");
- Label l10 = new Label();
- mv.visitLabel(l10);
- mv.visitLineNumber(317, l10);
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l5);
- mv.visitLineNumber(320, l5);
- mv.visitFrame(Opcodes.F_CHOP,1, null, 0, null);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(IRETURN);
- Label l11 = new Label();
- mv.visitLabel(l11);
- mv.visitLocalVariable("this", "Lthaumcraft/common/tiles/TileAlchemyFurnace;", null, l0, l11, 0);
- mv.visitLocalVariable("al", "Lthaumcraft/api/aspects/AspectList;", null, l3, l11, 1);
- mv.visitLocalVariable("vs", "I", null, l7, l5, 2);
- mv.visitMaxs(5, 3);
- mv.visitEnd();
- }
-
- {
- mv = cw.visitMethod(ACC_PUBLIC, "smeltItem", "()V", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(330, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKESPECIAL, "thaumcraft/common/tiles/TileAlchemyFurnace", "canSmelt", "()Z", false);
- Label l1 = new Label();
- mv.visitJumpInsn(IFEQ, l1);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(331, l2);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKESPECIAL, "thaumcraft/common/tiles/TileAlchemyFurnace", "getAspectsFromInventoryItem", "()Lthaumcraft/api/aspects/AspectList;", false);
- mv.visitVarInsn(ASTORE, 1);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(332, l3);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumcraft/common/tiles/TileAlchemyFurnace", "furnaceItemStacks", "[L"+aCorrectString+";");
- mv.visitInsn(ICONST_0);
- mv.visitInsn(AALOAD);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKESTATIC, "thaumcraft/common/lib/crafting/ThaumcraftCraftingManager", "getBonusTags", "(L"+aCorrectString+";Lthaumcraft/api/aspects/AspectList;)Lthaumcraft/api/aspects/AspectList;", false);
- mv.visitVarInsn(ASTORE, 1);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLineNumber(334, l4);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitMethodInsn(INVOKEVIRTUAL, "thaumcraft/api/aspects/AspectList", "getAspects", "()[Lthaumcraft/api/aspects/Aspect;", false);
- mv.visitInsn(DUP);
- mv.visitVarInsn(ASTORE, 5);
- mv.visitInsn(ARRAYLENGTH);
- mv.visitVarInsn(ISTORE, 4);
- mv.visitInsn(ICONST_0);
- mv.visitVarInsn(ISTORE, 3);
- Label l5 = new Label();
- mv.visitJumpInsn(GOTO, l5);
- Label l6 = new Label();
- mv.visitLabel(l6);
- mv.visitFrame(Opcodes.F_FULL, 6, new Object[] {"thaumcraft/common/tiles/TileAlchemyFurnace", "thaumcraft/api/aspects/AspectList", Opcodes.TOP, Opcodes.INTEGER, Opcodes.INTEGER, "[Lthaumcraft/api/aspects/Aspect;"}, 0, new Object[] {});
- mv.visitVarInsn(ALOAD, 5);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitInsn(AALOAD);
- mv.visitVarInsn(ASTORE, 2);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLineNumber(335, l7);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumcraft/common/tiles/TileAlchemyFurnace", "aspects", "Lthaumcraft/api/aspects/AspectList;");
- mv.visitVarInsn(ALOAD, 2);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitMethodInsn(INVOKEVIRTUAL, "thaumcraft/api/aspects/AspectList", "getAmount", "(Lthaumcraft/api/aspects/Aspect;)I", false);
- mv.visitMethodInsn(INVOKEVIRTUAL, "thaumcraft/api/aspects/AspectList", "add", "(Lthaumcraft/api/aspects/Aspect;I)Lthaumcraft/api/aspects/AspectList;", false);
- mv.visitInsn(POP);
- Label l8 = new Label();
- mv.visitLabel(l8);
- mv.visitLineNumber(334, l8);
- mv.visitIincInsn(3, 1);
- mv.visitLabel(l5);
- mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ILOAD, 3);
- mv.visitVarInsn(ILOAD, 4);
- mv.visitJumpInsn(IF_ICMPLT, l6);
- Label l9 = new Label();
- mv.visitLabel(l9);
- mv.visitLineNumber(338, l9);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumcraft/common/tiles/TileAlchemyFurnace", "aspects", "Lthaumcraft/api/aspects/AspectList;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "thaumcraft/api/aspects/AspectList", "visSize", "()I", false);
- mv.visitFieldInsn(PUTFIELD, "thaumcraft/common/tiles/TileAlchemyFurnace", "vis", "I");
- Label l10 = new Label();
- mv.visitLabel(l10);
- mv.visitLineNumber(339, l10);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumcraft/common/tiles/TileAlchemyFurnace", "furnaceItemStacks", "[L"+aCorrectString+";");
- mv.visitInsn(ICONST_0);
- mv.visitInsn(AALOAD);
- mv.visitInsn(DUP);
- mv.visitFieldInsn(GETFIELD, ""+aCorrectString+"", "stackSize", "I");
- mv.visitInsn(ICONST_1);
- mv.visitInsn(ISUB);
- mv.visitFieldInsn(PUTFIELD, ""+aCorrectString+"", "stackSize", "I");
- Label l11 = new Label();
- mv.visitLabel(l11);
- mv.visitLineNumber(340, l11);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumcraft/common/tiles/TileAlchemyFurnace", "furnaceItemStacks", "[L"+aCorrectString+";");
- mv.visitInsn(ICONST_0);
- mv.visitInsn(AALOAD);
- mv.visitFieldInsn(GETFIELD, ""+aCorrectString+"", "stackSize", "I");
- mv.visitJumpInsn(IFGT, l1);
- Label l12 = new Label();
- mv.visitLabel(l12);
- mv.visitLineNumber(341, l12);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumcraft/common/tiles/TileAlchemyFurnace", "furnaceItemStacks", "[L"+aCorrectString+";");
- mv.visitInsn(ICONST_0);
- mv.visitInsn(ACONST_NULL);
- mv.visitInsn(AASTORE);
- mv.visitLabel(l1);
- mv.visitLineNumber(345, l1);
- mv.visitFrame(Opcodes.F_FULL, 1, new Object[] {"thaumcraft/common/tiles/TileAlchemyFurnace"}, 0, new Object[] {});
- mv.visitInsn(RETURN);
- Label l13 = new Label();
- mv.visitLabel(l13);
- mv.visitLocalVariable("this", "Lthaumcraft/common/tiles/TileAlchemyFurnace;", null, l0, l13, 0);
- mv.visitLocalVariable("al", "Lthaumcraft/api/aspects/AspectList;", null, l3, l1, 1);
- mv.visitLocalVariable("a", "Lthaumcraft/api/aspects/Aspect;", null, l7, l8, 2);
- mv.visitMaxs(4, 6);
- mv.visitEnd();
- }
-
- {
- mv = cw.visitMethod(ACC_PUBLIC, "isItemValidForSlot", "(IL"+aCorrectString+";)Z", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(362, l0);
- mv.visitVarInsn(ILOAD, 1);
- Label l1 = new Label();
- mv.visitJumpInsn(IFNE, l1);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(363, l2);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKESPECIAL, "thaumcraft/common/tiles/TileAlchemyFurnace", "getAspectsFromInventoryItem", "()Lthaumcraft/api/aspects/AspectList;", false);
- mv.visitVarInsn(ASTORE, 3);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(364, l3);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKESTATIC, "thaumcraft/common/lib/crafting/ThaumcraftCraftingManager", "getBonusTags", "(L"+aCorrectString+";Lthaumcraft/api/aspects/AspectList;)Lthaumcraft/api/aspects/AspectList;", false);
- mv.visitVarInsn(ASTORE, 3);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLineNumber(365, l4);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitJumpInsn(IFNULL, l1);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "thaumcraft/api/aspects/AspectList", "size", "()I", false);
- mv.visitJumpInsn(IFLE, l1);
- Label l5 = new Label();
- mv.visitLabel(l5);
- mv.visitLineNumber(366, l5);
- mv.visitInsn(ICONST_1);
- mv.visitInsn(IRETURN);
- mv.visitLabel(l1);
- mv.visitLineNumber(370, l1);
- mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitInsn(ICONST_1);
- Label l6 = new Label();
- mv.visitJumpInsn(IF_ICMPNE, l6);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitMethodInsn(INVOKESTATIC, "thaumcraft/common/tiles/TileAlchemyFurnace", "isItemFuel", "(L"+aCorrectString+";)Z", false);
- Label l7 = new Label();
- mv.visitJumpInsn(GOTO, l7);
- mv.visitLabel(l6);
- mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
- mv.visitInsn(ICONST_0);
- mv.visitLabel(l7);
- mv.visitFrame(Opcodes.F_SAME1, 0, null, 1, new Object[] {Opcodes.INTEGER});
- mv.visitInsn(IRETURN);
- Label l8 = new Label();
- mv.visitLabel(l8);
- mv.visitLocalVariable("this", "Lthaumcraft/common/tiles/TileAlchemyFurnace;", null, l0, l8, 0);
- mv.visitLocalVariable("par1", "I", null, l0, l8, 1);
- mv.visitLocalVariable("par2ItemStack", "L"+aCorrectString+";", null, l0, l8, 2);
- mv.visitLocalVariable("al", "Lthaumcraft/api/aspects/AspectList;", null, l3, l1, 3);
- mv.visitMaxs(2, 4);
- mv.visitEnd();
- }
-
- {
- mv = cw.visitMethod(ACC_PRIVATE, "getAspectsFromInventoryItem", "()Lthaumcraft/api/aspects/AspectList;", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(416, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumcraft/common/tiles/TileAlchemyFurnace", "smeltingCache", "LgtPlusPlus/api/objects/minecraft/ThaumcraftDataStack;");
- Label l1 = new Label();
- mv.visitJumpInsn(IFNONNULL, l1);
- Label l2 = new Label();
- mv.visitLabel(l2);
- mv.visitLineNumber(417, l2);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitTypeInsn(NEW, "gtPlusPlus/api/objects/minecraft/ThaumcraftDataStack");
- mv.visitInsn(DUP);
- mv.visitIntInsn(BIPUSH, 20);
- mv.visitMethodInsn(INVOKESPECIAL, "gtPlusPlus/api/objects/minecraft/ThaumcraftDataStack", "<init>", "(I)V", false);
- mv.visitFieldInsn(PUTFIELD, "thaumcraft/common/tiles/TileAlchemyFurnace", "smeltingCache", "LgtPlusPlus/api/objects/minecraft/ThaumcraftDataStack;");
- mv.visitLabel(l1);
- mv.visitLineNumber(419, l1);
- mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumcraft/common/tiles/TileAlchemyFurnace", "smeltingCache", "LgtPlusPlus/api/objects/minecraft/ThaumcraftDataStack;");
- mv.visitVarInsn(ALOAD, 0);
- mv.visitFieldInsn(GETFIELD, "thaumcraft/common/tiles/TileAlchemyFurnace", "furnaceItemStacks", "[L"+aCorrectString+";");
- mv.visitInsn(ICONST_0);
- mv.visitInsn(AALOAD);
- mv.visitMethodInsn(INVOKEVIRTUAL, "gtPlusPlus/api/objects/minecraft/ThaumcraftDataStack", "getAspectsForStack", "(L"+aCorrectString+";)Lthaumcraft/api/aspects/AspectList;", false);
- mv.visitVarInsn(ASTORE, 1);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(420, l3);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitInsn(ARETURN);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLocalVariable("this", "Lthaumcraft/common/tiles/TileAlchemyFurnace;", null, l0, l4, 0);
- mv.visitLocalVariable("al", "Lthaumcraft/api/aspects/AspectList;", null, l3, l4, 1);
- mv.visitMaxs(4, 2);
- mv.visitEnd();
- }
-
- didInject = true;
-
- Preloader_Logger.LOG("TC Alchemy Furnace 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 FieldVisitor visitField(int access, String name, String desc, String signature, Object value) {
- //Preloader_Logger.LOG("TC Alchemy Furnace Patch", Level.INFO, "Found Field "+name+" | "+desc);
- return cv.visitField(access, name, desc, signature, value);
- }
-
- @Override
- public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
- MethodVisitor methodVisitor;
- String aDesc1_1 = "()Z";
- String aDesc1_2 = "()V";
- String aDesc1_3 = "(ILnet/minecraft/item/ItemStack;)Z";
- String aDesc2_3 = "(ILadd;)Z";
- if (name.equals("canSmelt")) {
- if (desc.equals(aDesc1_1)) {
- Preloader_Logger.LOG("TC Alchemy Furnace Patch", Level.INFO, "Found canSmelt to remove: "+desc+" | "+signature);
- Preloader_Logger.LOG("TC Alchemy Furnace Patch", Level.INFO, "Is not obfuscated.");
- obfuscated = false;
- methodVisitor = null;
- }
- else {
- Preloader_Logger.INFO("Found canSmelt: "+desc+" | "+signature);
- if (desc.toLowerCase().contains("item")) {
- obfuscated = false;
- Preloader_Logger.LOG("TC Alchemy Furnace Patch", Level.INFO, "Is not obfuscated.");
- }
- else {
- obfuscated = true;
- Preloader_Logger.LOG("TC Alchemy Furnace Patch", Level.INFO, "Is obfuscated.");
- }
- methodVisitor = null;
- }
- }
- else if (name.equals("smeltItem")) {
- if (desc.equals(aDesc1_2)) {
- Preloader_Logger.LOG("TC Alchemy Furnace Patch", Level.INFO, "Found smeltItem to remove: "+desc+" | "+signature);
- Preloader_Logger.LOG("TC Alchemy Furnace Patch", Level.INFO, "Is not obfuscated.");
- obfuscated = false;
- methodVisitor = null;
- }
- else {
- Preloader_Logger.INFO("Found smeltItem: "+desc+" | "+signature);
- if (desc.toLowerCase().contains("item")) {
- obfuscated = false;
- Preloader_Logger.LOG("TC Alchemy Furnace Patch", Level.INFO, "Is not obfuscated.");
- }
- else {
- obfuscated = true;
- Preloader_Logger.LOG("TC Alchemy Furnace Patch", Level.INFO, "Is obfuscated.");
- }
- methodVisitor = null;
- }
- }
- else if (name.equals("isItemValidForSlot")) {
- if (desc.equals(aDesc1_3)) {
- Preloader_Logger.LOG("TC Alchemy Furnace Patch", Level.INFO, "Found isItemValidForSlot to remove: "+desc+" | "+signature);
- Preloader_Logger.LOG("TC Alchemy Furnace Patch", Level.INFO, "Is not obfuscated.");
- obfuscated = false;
- methodVisitor = null;
- }
- else if (desc.equals(aDesc2_3)) {
- Preloader_Logger.LOG("TC Alchemy Furnace Patch", Level.INFO, "Found isItemValidForSlot to remove: "+desc+" | "+signature);
- Preloader_Logger.LOG("TC Alchemy Furnace Patch", Level.INFO, "Is obfuscated.");
- obfuscated = true;
- methodVisitor = null;
- }
- else {
- Preloader_Logger.INFO("Found isItemValidForSlot: "+desc+" | "+signature);
- if (desc.toLowerCase().contains("item")) {
- obfuscated = false;
- Preloader_Logger.LOG("TC Alchemy Furnace Patch", Level.INFO, "Is not obfuscated.");
- }
- else {
- obfuscated = true;
- Preloader_Logger.LOG("TC Alchemy Furnace Patch", Level.INFO, "Is obfuscated.");
- }
- methodVisitor = null;
- }
- }
- else {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- }
-
- if (methodVisitor == null) {
- Preloader_Logger.LOG("TC Alchemy Furnace Patch", Level.INFO, "Found method " + name + ", removing.");
- Preloader_Logger.LOG("TC Alchemy Furnace Patch", Level.INFO, "Descriptor: "+desc+" | "+signature);
- }
- return methodVisitor;
- }
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_ThaumcraftCraftingManager.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_ThaumcraftCraftingManager.java
deleted file mode 100644
index 424b316c02..0000000000
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_ThaumcraftCraftingManager.java
+++ /dev/null
@@ -1,192 +0,0 @@
-package gtPlusPlus.preloader.asm.transformers;
-
-import static org.objectweb.asm.Opcodes.*;
-
-import org.apache.logging.log4j.Level;
-import org.objectweb.asm.*;
-
-import gtPlusPlus.preloader.Preloader_Logger;
-
-public class ClassTransformer_TC_ThaumcraftCraftingManager {
-
- private final boolean isValid;
- private final ClassReader reader;
- private final ClassWriter writer;
-
- public ClassTransformer_TC_ThaumcraftCraftingManager(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);
- boolean wasMethodObfuscated = aTempMethodRemover.getObfuscatedRemoval();
-
- if (aTempReader != null && aTempWriter != null) {
- isValid = true;
- } else {
- isValid = false;
- }
-
- Preloader_Logger.LOG("TC CraftingManager Patch", Level.INFO, "Valid patch? " + isValid + ".");
- reader = aTempReader;
- writer = aTempWriter;
-
- if (reader != null && writer != null) {
- Preloader_Logger.LOG("TC CraftingManager Patch", Level.INFO, "Attempting Method Injection.");
- injectMethod("generateTags", wasMethodObfuscated);
- injectMethod("getObjectTags", wasMethodObfuscated);
- }
-
- }
-
- public boolean isValidTransformer() {
- return isValid;
- }
-
- public ClassReader getReader() {
- return reader;
- }
-
- public ClassWriter getWriter() {
- return writer;
- }
-
- public boolean injectMethod(String aMethodName, boolean wasMethodObfuscated) {
- MethodVisitor mv;
- boolean didInject = false;
- ClassWriter cw = getWriter();
- String aitemClassName = wasMethodObfuscated ? "adb" : "net/minecraft/item/Item";
- String aitemStackClassName = wasMethodObfuscated ? "add" : "net/minecraft/item/ItemStack";
- String aClassName = "thaumcraft.common.lib.crafting.ThaumcraftCraftingManager";
-
- if (aMethodName.equals("generateTags")) {
- Preloader_Logger.LOG("TC CraftingManager Patch", Level.INFO, "Injecting " + aMethodName + ", static replacement call to "+aClassName+".");
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "generateTags", "(L"+aitemClassName+";ILjava/util/ArrayList;)Lthaumcraft/api/aspects/AspectList;", "(L"+aitemClassName+";ILjava/util/ArrayList<Ljava/util/List;>;)Lthaumcraft/api/aspects/AspectList;", null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(23, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ILOAD, 1);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/preloader/asm/helpers/MethodHelper_TC", "generateTags", "(L"+aitemClassName+";ILjava/util/ArrayList;)Lthaumcraft/api/aspects/AspectList;", false);
- mv.visitInsn(ARETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("item", "L"+aitemClassName+";", null, l0, l1, 0);
- mv.visitLocalVariable("meta", "I", null, l0, l1, 1);
- mv.visitLocalVariable("history", "Ljava/util/ArrayList;", "Ljava/util/ArrayList<Ljava/util/List;>;", l0, l1, 2);
- mv.visitMaxs(3, 3);
- mv.visitEnd();
- didInject = true;
- }
-
- if (aMethodName.equals("getObjectTags")) {
- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "getObjectTags", "(L"+aitemStackClassName+";)Lthaumcraft/api/aspects/AspectList;", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(222, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/preloader/asm/helpers/MethodHelper_TC", "getObjectTags", "(L"+aitemStackClassName+";)Lthaumcraft/api/aspects/AspectList;", false);
- mv.visitInsn(ARETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("itemstack", "L"+aitemStackClassName+";", null, l0, l1, 0);
- mv.visitMaxs(1, 1);
- mv.visitEnd();
- didInject = true;
- }
-
- Preloader_Logger.LOG("TC CraftingManager 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;
- String aDeObfName = "net/minecraft/item/Item";
- String aObfName = "adb";
- String aDesc1 = "(L"+aDeObfName+";ILjava/util/ArrayList;)Lthaumcraft/api/aspects/AspectList;";
- String aDesc2 = "(L"+aObfName+";ILjava/util/ArrayList;)Lthaumcraft/api/aspects/AspectList;";
-
- if (name.equals("generateTags") && signature != null) {
- if (desc.equals(aDesc1)) {
- Preloader_Logger.LOG("TC CraftingManager Patch", Level.INFO, "Found generateTags to remove: "+desc+" | "+signature);
- Preloader_Logger.LOG("TC CraftingManager Patch", Level.INFO, "Is not obfuscated.");
- obfuscated = false;
- methodVisitor = null;
- }
- else if (desc.equals(aDesc2)) {
- Preloader_Logger.LOG("TC CraftingManager Patch", Level.INFO, "Found generateTags to remove: "+desc+" | "+signature);
- Preloader_Logger.LOG("TC CraftingManager Patch", Level.INFO, "Is obfuscated.");
- obfuscated = true;
- methodVisitor = null;
- }
- else {
- Preloader_Logger.INFO("Found generateTags: "+desc+" | "+signature);
- if (desc.toLowerCase().contains("item")) {
- obfuscated = false;
- Preloader_Logger.LOG("TC CraftingManager Patch", Level.INFO, "Is not obfuscated.");
- }
- else {
- obfuscated = true;
- Preloader_Logger.LOG("TC CraftingManager Patch", Level.INFO, "Is obfuscated.");
- }
- methodVisitor = null;
- }
- }
- else if (name.equals("getObjectTags")) {
- if (desc.equals(aDesc1)) {
- Preloader_Logger.LOG("TC CraftingManager Patch", Level.INFO, "Found getObjectTags to remove: "+desc+" | "+signature);
- Preloader_Logger.LOG("TC CraftingManager Patch", Level.INFO, "Is not obfuscated.");
- obfuscated = false;
- methodVisitor = null;
- }
- else if (desc.equals(aDesc2)) {
- Preloader_Logger.LOG("TC CraftingManager Patch", Level.INFO, "Found getObjectTags to remove: "+desc+" | "+signature);
- Preloader_Logger.LOG("TC CraftingManager Patch", Level.INFO, "Is obfuscated.");
- obfuscated = true;
- methodVisitor = null;
- }
- else {
- Preloader_Logger.INFO("Found getObjectTags: "+desc+" | "+signature);
- if (desc.toLowerCase().contains("item")) {
- obfuscated = false;
- Preloader_Logger.LOG("TC CraftingManager Patch", Level.INFO, "Is not obfuscated.");
- }
- else {
- obfuscated = true;
- Preloader_Logger.LOG("TC CraftingManager Patch", Level.INFO, "Is obfuscated.");
- }
- methodVisitor = null;
- }
- }
- else {
- methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
- }
-
- if (methodVisitor == null) {
- Preloader_Logger.LOG("TC CraftingManager Patch", Level.INFO, "Found method " + name + ", removing.");
- Preloader_Logger.LOG("TC CraftingManager Patch", Level.INFO, "Descriptor: "+desc);
- }
- return methodVisitor;
- }
- }
-
-}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java
index 6e0f94a54b..b85e408153 100644
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java
+++ b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java
@@ -282,14 +282,6 @@ public class Preloader_Transformer_Handler implements IClassTransformer {
Preloader_Logger.INFO("Thaumcraft WispEssence_Patch", "Transforming "+transformedName);
return new ClassTransformer_TC_ItemWispEssence(basicClass, obfuscated).getWriter().toByteArray();
}
- if (transformedName.equals(THAUMCRAFT_CRAFTING_MANAGER)) {
- Preloader_Logger.INFO("Thaumcraft CraftingManager Patch", "Transforming "+transformedName);
- return new ClassTransformer_TC_ThaumcraftCraftingManager(basicClass).getWriter().toByteArray();
- }
- if (transformedName.equals(THAUMCRAFT_TILE_ALCHEMY_FURNACE)) {
- Preloader_Logger.INFO("Thaumcraft Alchemy Furnace Patch", "Transforming "+transformedName);
- return new ClassTransformer_TC_AlchemicalFurnace(basicClass).getWriter().toByteArray();
- }
//Fix Thaumic Tinkerer Shit
if (transformedName.equals(THAUMICTINKERER_TILE_REPAIRER) && AsmConfig.enableThaumicTinkererRepairFix) {
//Preloader_Logger.INFO("Thaumic Tinkerer RepairItem Patch", "Transforming "+transformedName);