diff options
Diffstat (limited to 'src/Java/gtPlusPlus')
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); |