From fbe73a2de925d012dddfa46b13e745028ce40679 Mon Sep 17 00:00:00 2001 From: Alkalus <3060479+draknyte1@users.noreply.github.com> Date: Thu, 14 Feb 2019 18:50:58 +0000 Subject: + Added Tags to tooltips, which can be used to control base tooltips inherited from parents. % Mild update to tooltips of a few multis. % Adjusted Large Arc Furnace casing texture. % Renamed the 3 Factory Grade multis. --- src/Java/gtPlusPlus/api/objects/data/AutoMap.java | 47 +++++++++++++++++++---- 1 file changed, 40 insertions(+), 7 deletions(-) (limited to 'src/Java/gtPlusPlus/api/objects/data') diff --git a/src/Java/gtPlusPlus/api/objects/data/AutoMap.java b/src/Java/gtPlusPlus/api/objects/data/AutoMap.java index ca231dbd63..d5e016bbf8 100644 --- a/src/Java/gtPlusPlus/api/objects/data/AutoMap.java +++ b/src/Java/gtPlusPlus/api/objects/data/AutoMap.java @@ -47,6 +47,10 @@ public class AutoMap implements Iterable, Cloneable, Serializable { return set(object); } + public synchronized V add(V object){ + return set(object); + } + public synchronized V set(V object){ if (object == null) { return null; @@ -90,15 +94,19 @@ public class AutoMap implements Iterable, Cloneable, Serializable { return true; } + private final Class getMapType() { + Class g = mInternalMap.get(0).getClass(); + return g; + } + public synchronized V[] toArray() { - Collection col = this.mInternalMap.values(); - V[] val = (V[]) new Object[col.size()]; - int counter = 0; - for (V i : col) { - val[counter] = i; - counter++; + /*Collection col = this.mInternalMap.values(); + List abcList = new ArrayList(); + for (V g : col) { + abcList.add(g); } - return val; + return (V[]) abcList.toArray();*/ + return (V[]) new AutoArray(this).getGenericArray(); } public synchronized final int getInternalID() { @@ -106,10 +114,35 @@ public class AutoMap implements Iterable, Cloneable, Serializable { } public synchronized final boolean remove(V value) { + value.getClass(); if (this.mInternalMap.containsValue(value)) { return this.mInternalMap.remove(mInternalNameMap.get(""+value.hashCode()), value); } return false; } + + private class AutoArray { + + private final V[] arr; + public final int length; + + public AutoArray(AutoMap aMap) { + this.arr = (V[]) java.lang.reflect.Array.newInstance(aMap.getMapType(), aMap.size()); + this.length = aMap.size(); + } + private V get(int i) { + return arr[i]; + } + private void set(int i, V e) { + arr[i] = e; + } + protected V[] getGenericArray() { + return arr; + } + @Override + public String toString() { + return Arrays.toString(arr); + } + } } -- cgit From 1f48c6da89afb649c3b73674cb3c0664fa322a09 Mon Sep 17 00:00:00 2001 From: Alkalus <3060479+draknyte1@users.noreply.github.com> Date: Thu, 14 Feb 2019 20:03:07 +0000 Subject: + Added recipes for the Large Arc Furnace and Casings. - Disabled power output on Alternative Fusion. % Made the AutoMap implement Collection and Queue. $ Fixed energy buffers return bad inventory name. --- src/Java/gtPlusPlus/api/objects/data/AutoMap.java | 139 +++++++++++++++------ .../gtPlusPlus/core/recipe/RECIPES_Machines.java | 50 ++++++-- src/Java/gtPlusPlus/core/recipe/common/CI.java | 35 +++++- src/Java/gtPlusPlus/core/util/math/MathUtils.java | 11 ++ .../production/GregtechMTE_MiniFusionPlant.java | 7 +- .../storage/GregtechMetaEnergyBuffer.java | 3 +- .../gregtech/GregtechEnergyBuffer.java | 22 ++-- 7 files changed, 204 insertions(+), 63 deletions(-) (limited to 'src/Java/gtPlusPlus/api/objects/data') diff --git a/src/Java/gtPlusPlus/api/objects/data/AutoMap.java b/src/Java/gtPlusPlus/api/objects/data/AutoMap.java index d5e016bbf8..4663229514 100644 --- a/src/Java/gtPlusPlus/api/objects/data/AutoMap.java +++ b/src/Java/gtPlusPlus/api/objects/data/AutoMap.java @@ -3,7 +3,7 @@ package gtPlusPlus.api.objects.data; import java.io.Serializable; import java.util.*; -public class AutoMap implements Iterable, Cloneable, Serializable { +public class AutoMap implements Iterable, Cloneable, Serializable, Collection, Queue { /** * The Internal Map @@ -47,8 +47,8 @@ public class AutoMap implements Iterable, Cloneable, Serializable { return set(object); } - public synchronized V add(V object){ - return set(object); + public synchronized boolean add(V object){ + return set(object) != null; } public synchronized V set(V object){ @@ -87,62 +87,129 @@ public class AutoMap implements Iterable, Cloneable, Serializable { return mInternalMap.isEmpty(); } - public synchronized boolean clear(){ + public synchronized void clear(){ this.mInternalID = 0; this.mInternalMap.clear(); this.mInternalNameMap.clear(); - return true; - } - - private final Class getMapType() { - Class g = mInternalMap.get(0).getClass(); - return g; + return; } + @SuppressWarnings("unchecked") public synchronized V[] toArray() { - /*Collection col = this.mInternalMap.values(); + Collection col = this.mInternalMap.values(); List abcList = new ArrayList(); for (V g : col) { abcList.add(g); } - return (V[]) abcList.toArray();*/ - return (V[]) new AutoArray(this).getGenericArray(); + return (V[]) abcList.toArray(); + //return (V[]) new AutoArray(this).getGenericArray(); } public synchronized final int getInternalID() { return mInternalID; - } + } - public synchronized final boolean remove(V value) { + public synchronized final boolean remove(Object value) { value.getClass(); if (this.mInternalMap.containsValue(value)) { return this.mInternalMap.remove(mInternalNameMap.get(""+value.hashCode()), value); } return false; - } - - private class AutoArray { - - private final V[] arr; - public final int length; - - public AutoArray(AutoMap aMap) { - this.arr = (V[]) java.lang.reflect.Array.newInstance(aMap.getMapType(), aMap.size()); - this.length = aMap.size(); - } - private V get(int i) { - return arr[i]; - } - private void set(int i, V e) { - arr[i] = e; + } + + @Override + public boolean contains(Object o) { + for (V g : this.mInternalMap.values()) { + if (g.equals(o)) { + return true; + } } - protected V[] getGenericArray() { - return arr; + return false; + } + + @SuppressWarnings("unchecked") + @Override + public V[] toArray(V[] a) { + return (V[]) toArray(); + } + + @Override + public boolean containsAll(Collection c) { + boolean aTrue = true; + for (Object g : c) { + if (!this.contains(g)) { + aTrue = false; + } + } + return aTrue; + } + + @Override + public boolean addAll(Collection c) { + boolean aTrue = true; + for (V g : c) { + if (!this.add(g)) { + aTrue = false; + } + } + return aTrue; + } + + @Override + public boolean removeAll(Collection c) { + boolean aTrue = true; + for (Object g : c) { + if (!this.remove(g)) { + aTrue = false; + } + } + return aTrue; + } + + @Override + public boolean retainAll(Collection c) { + AutoMap aTempAllocation = new AutoMap(); + boolean aTrue = false; + aTempAllocation = this; + aTempAllocation.removeAll(c); + aTrue = this.removeAll(aTempAllocation); + aTempAllocation.clear(); + return aTrue; + } + + @Override + public boolean offer(V e) { + return add(e); + } + + @Override + public V remove() { + V y = this.get(0); + if (remove(y)) + return y; + else + return null; + } + + @Override + public V poll() { + if (this.mInternalMap.isEmpty()) { + return null; } - @Override - public String toString() { - return Arrays.toString(arr); + return remove(); + } + + @Override + public V element() { + if (this.mInternalMap.isEmpty()) { + return null; } + return this.get(0); + } + + @Override + public V peek() { + return element(); } } diff --git a/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java b/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java index e7577071c6..a7c0655f89 100644 --- a/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java +++ b/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java @@ -207,10 +207,20 @@ public class RECIPES_Machines { } private static void run(){ + + //Determines Casing Recipe Output + if (CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK && !GTNH){ + Casing_Amount=2; + } + else { + Casing_Amount=1; + } + initModItems(); controlCores(); energyCores(); wirelessChargers(); + largeArcFurnace(); } private static void initModItems(){ @@ -276,15 +286,7 @@ public class RECIPES_Machines { private static void runModRecipes(){ if (LoadedMods.Gregtech){ - //Determines Casing Recipe Output - if (CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK && !GTNH){ - Casing_Amount=2; - } - else { - Casing_Amount=1; - } - - + //Computer Cube CORE.RA.addSixSlotAssemblingRecipe( new ItemStack[] { @@ -1898,4 +1900,34 @@ public class RECIPES_Machines { } } + + private static void largeArcFurnace() { + int aCostMultiplier = GTNH ? 2 : 1; + CORE.RA.addSixSlotAssemblingRecipe( + new ItemStack[] { + CI.getTieredMachineHull(-1, 1 * aCostMultiplier), + CI.getEmitter(2, 2 * aCostMultiplier), + CI.getElectricPiston(4, 2 * aCostMultiplier), + CI.getSensor(4, 1 * aCostMultiplier), + CI.getTieredComponent(OrePrefixes.plate, 5, 4 * aCostMultiplier), + CI.getTieredComponent(OrePrefixes.pipeSmall, 4, 1 * aCostMultiplier), + }, + CI.getAlternativeTieredFluid(5, (144 * 2 * 4)), //Input Fluid + GregtechItemList.Casing_Industrial_Arc_Furnace.get(Casing_Amount), + 20 * 10 * 1 * (6), + MaterialUtils.getVoltageForTier(5)); + CORE.RA.addSixSlotAssemblingRecipe( + new ItemStack[] { + GregtechItemList.Casing_Industrial_Arc_Furnace.get(Casing_Amount), + CI.getFieldGenerator(4, 2 * aCostMultiplier), + CI.getRobotArm(5, 4 * aCostMultiplier), + CI.getEnergyCore(4, 2 * aCostMultiplier), + CI.getTieredComponent(OrePrefixes.plate, 6, 8 * aCostMultiplier), + CI.getTieredComponent(OrePrefixes.circuit, 5, 8 * aCostMultiplier), + }, + CI.getAlternativeTieredFluid(6, (144 * 4 * 5)), //Input Fluid + GregtechItemList.Industrial_Arc_Furnace.get(1), + 60 * 20 * 8, + MaterialUtils.getVoltageForTier(6)); + } } diff --git a/src/Java/gtPlusPlus/core/recipe/common/CI.java b/src/Java/gtPlusPlus/core/recipe/common/CI.java index b473b30c3c..28fa12ac1a 100644 --- a/src/Java/gtPlusPlus/core/recipe/common/CI.java +++ b/src/Java/gtPlusPlus/core/recipe/common/CI.java @@ -13,6 +13,7 @@ import gtPlusPlus.core.material.ELEMENT; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.recipe.LOADER_Machine_Components; import gtPlusPlus.core.util.Utils; +import gtPlusPlus.core.util.math.MathUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.xmod.eio.material.MaterialEIO; import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList; @@ -628,6 +629,38 @@ public class CI { return a; } + public static ItemStack getEnergyCore(int aTier, int aAmount) { + ItemStack[] aOutput = new ItemStack[] { + ItemUtils.getItemStack("miscutils:item.itemBufferCore"+"1", 1), + ItemUtils.getItemStack("miscutils:item.itemBufferCore"+"2", 1), + ItemUtils.getItemStack("miscutils:item.itemBufferCore"+"3", 1), + ItemUtils.getItemStack("miscutils:item.itemBufferCore"+"4", 1), + ItemUtils.getItemStack("miscutils:item.itemBufferCore"+"5", 1), + ItemUtils.getItemStack("miscutils:item.itemBufferCore"+"6", 1), + ItemUtils.getItemStack("miscutils:item.itemBufferCore"+"7", 1), + ItemUtils.getItemStack("miscutils:item.itemBufferCore"+"8", 1), + ItemUtils.getItemStack("miscutils:item.itemBufferCore"+"9", 1), + ItemUtils.getItemStack("miscutils:item.itemBufferCore"+"10", 1) + }; + return ItemUtils.getSimpleStack(aOutput[MathUtils.balance(aTier, 0, 9)], aAmount); + } + + public static ItemStack getPlate(int aTier, int aAmount) { + return getTieredComponent(OrePrefixes.plate, aTier, aAmount); + } + + public static ItemStack getGear(int aTier, int aAmount) { + return getTieredComponent(OrePrefixes.gearGt, aTier, aAmount); + } + + public static ItemStack getIngot(int aTier, int aAmount) { + return getTieredComponent(OrePrefixes.ingot, aTier, aAmount); + } + + public static ItemStack getBolt(int aTier, int aAmount) { + return getTieredComponent(OrePrefixes.bolt, aTier, aAmount); + } + public static ItemStack getTieredComponent(OrePrefixes aPrefix, int aTier, int aAmount) { aTier = Math.max(0, aTier); @@ -1144,7 +1177,7 @@ public class CI { aType = CI.machineHull_MAX; } else { - aType = CI.machineHull_LV; + aType = GregtechItemList.Casing_Multi_Use.get(1, CI.machineHull_MV); } return ItemUtils.getSimpleStack(aType, aSize); } diff --git a/src/Java/gtPlusPlus/core/util/math/MathUtils.java b/src/Java/gtPlusPlus/core/util/math/MathUtils.java index 40ac23a1b8..030099cff1 100644 --- a/src/Java/gtPlusPlus/core/util/math/MathUtils.java +++ b/src/Java/gtPlusPlus/core/util/math/MathUtils.java @@ -681,4 +681,15 @@ public class MathUtils { return i; } + /** + * Balances a number within a range. + * @param aInput - The number to balance + * @param aMin - The minimum bounds + * @param aMax - The maximum bounds + * @return - An Integer which will be between the bounds, or a boundary value. + */ + public static int balance(int aInput, int aMin, int aMax) { + return Math.max(Math.min(aInput, aMax), aMin); + } + } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_MiniFusionPlant.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_MiniFusionPlant.java index 6ec95ff16b..8925caf480 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_MiniFusionPlant.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_MiniFusionPlant.java @@ -130,19 +130,18 @@ public class GregtechMTE_MiniFusionPlant extends GregtechMeta_MultiBlockBase { //"Input voltage can be changed within the GUI", "Place Input/Output Hatches on sides and bottom", "Power can only be inserted into the back", - "Power can only be extracted from the top", + //e"Power can only be extracted from the top", + TAG_HIDE_HATCHES }; } @Override public int getMaxParallelRecipes() { - // TODO Auto-generated method stub return 1; } @Override public int getEuDiscountForParallelism() { - // TODO Auto-generated method stub return 0; } @@ -317,7 +316,7 @@ public class GregtechMTE_MiniFusionPlant extends GregtechMeta_MultiBlockBase { @Override public boolean isEnetOutput() { - return true; + return false; } @Override diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GregtechMetaEnergyBuffer.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GregtechMetaEnergyBuffer.java index 1d2fad941b..b77529220f 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GregtechMetaEnergyBuffer.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GregtechMetaEnergyBuffer.java @@ -294,7 +294,6 @@ public class GregtechMetaEnergyBuffer extends GregtechMetaTileEntity { cur = String.format(fmt, cur); return new String[] { - this.getLocalName(), cur+" EU stored", max+" EU capacity"}; } @@ -345,7 +344,7 @@ public class GregtechMetaEnergyBuffer extends GregtechMetaTileEntity { @Override public String getInventoryName() { - return null; + return super.getInventoryName(); } @Override diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechEnergyBuffer.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechEnergyBuffer.java index 7b87cd0f24..e07837c2ba 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechEnergyBuffer.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechEnergyBuffer.java @@ -41,20 +41,20 @@ public class GregtechEnergyBuffer //Energy Buffers - GregtechItemList.Energy_Buffer_1by1_ULV.set(new GregtechMetaEnergyBuffer(770, "energybuffer.01.tier.00", "Ultra Low Voltage Energy Buffer", 0, "", 1).getStackForm(1L)); - GregtechItemList.Energy_Buffer_1by1_LV.set(new GregtechMetaEnergyBuffer(771, "energybuffer.01.tier.01", "Low Voltage Energy Buffer", 1, "", 1).getStackForm(1L)); - GregtechItemList.Energy_Buffer_1by1_MV.set(new GregtechMetaEnergyBuffer(772, "energybuffer.01.tier.02", "Medium Voltage Energy Buffer", 2, "", 1).getStackForm(1L)); - GregtechItemList.Energy_Buffer_1by1_HV.set(new GregtechMetaEnergyBuffer(773, "energybuffer.01.tier.03", "High Voltage Energy Buffer", 3, "", 1).getStackForm(1L)); - GregtechItemList.Energy_Buffer_1by1_EV.set(new GregtechMetaEnergyBuffer(774, "energybuffer.01.tier.04", "Extreme Voltage Energy Buffer", 4, "", 1).getStackForm(1L)); - GregtechItemList.Energy_Buffer_1by1_IV.set(new GregtechMetaEnergyBuffer(775, "energybuffer.01.tier.05", "Insane Voltage Energy Buffer", 5, "", 1).getStackForm(1L)); - GregtechItemList.Energy_Buffer_1by1_LuV.set(new GregtechMetaEnergyBuffer(776, "energybuffer.01.tier.06", "Ludicrous Voltage Energy Buffer", 6, "", 1).getStackForm(1L)); - GregtechItemList.Energy_Buffer_1by1_ZPM.set(new GregtechMetaEnergyBuffer(777, "energybuffer.01.tier.07", "ZPM Voltage Energy Buffer", 7, "", 1).getStackForm(1L)); - GregtechItemList.Energy_Buffer_1by1_UV.set(new GregtechMetaEnergyBuffer(778, "energybuffer.01.tier.08", "Ultimate Voltage Energy Buffer", 8, "", 1).getStackForm(1L)); - GregtechItemList.Energy_Buffer_1by1_MAX.set(new GregtechMetaEnergyBuffer(779, "energybuffer.01.tier.09", "MAX Voltage Energy Buffer", 9, "", 1).getStackForm(1L)); + GregtechItemList.Energy_Buffer_1by1_ULV.set(new GregtechMetaEnergyBuffer(770, "energybuffer.tier.00", "Ultra Low Voltage Energy Buffer", 0, "", 1).getStackForm(1L)); + GregtechItemList.Energy_Buffer_1by1_LV.set(new GregtechMetaEnergyBuffer(771, "energybuffer.tier.01", "Low Voltage Energy Buffer", 1, "", 1).getStackForm(1L)); + GregtechItemList.Energy_Buffer_1by1_MV.set(new GregtechMetaEnergyBuffer(772, "energybuffer.tier.02", "Medium Voltage Energy Buffer", 2, "", 1).getStackForm(1L)); + GregtechItemList.Energy_Buffer_1by1_HV.set(new GregtechMetaEnergyBuffer(773, "energybuffer.tier.03", "High Voltage Energy Buffer", 3, "", 1).getStackForm(1L)); + GregtechItemList.Energy_Buffer_1by1_EV.set(new GregtechMetaEnergyBuffer(774, "energybuffer.tier.04", "Extreme Voltage Energy Buffer", 4, "", 1).getStackForm(1L)); + GregtechItemList.Energy_Buffer_1by1_IV.set(new GregtechMetaEnergyBuffer(775, "energybuffer.tier.05", "Insane Voltage Energy Buffer", 5, "", 1).getStackForm(1L)); + GregtechItemList.Energy_Buffer_1by1_LuV.set(new GregtechMetaEnergyBuffer(776, "energybuffer.tier.06", "Ludicrous Voltage Energy Buffer", 6, "", 1).getStackForm(1L)); + GregtechItemList.Energy_Buffer_1by1_ZPM.set(new GregtechMetaEnergyBuffer(777, "energybuffer.tier.07", "ZPM Voltage Energy Buffer", 7, "", 1).getStackForm(1L)); + GregtechItemList.Energy_Buffer_1by1_UV.set(new GregtechMetaEnergyBuffer(778, "energybuffer.tier.08", "Ultimate Voltage Energy Buffer", 8, "", 1).getStackForm(1L)); + GregtechItemList.Energy_Buffer_1by1_MAX.set(new GregtechMetaEnergyBuffer(779, "energybuffer.tier.09", "MAX Voltage Energy Buffer", 9, "", 1).getStackForm(1L)); // Creative Buffer Has Special ID GregtechItemList.Energy_Buffer_CREATIVE .set(new GregtechMetaCreativeEnergyBuffer(750, - "energybuffer.01.tier.xx", + "energybuffer.tier.xx", "512V Creative Energy Buffer", 3, "", 0) .getStackForm(1L)); -- cgit From 27b13101ab9042eacad45f5867c8cfee23cffbe0 Mon Sep 17 00:00:00 2001 From: Alkalus <3060479+draknyte1@users.noreply.github.com> Date: Fri, 15 Feb 2019 02:49:31 +0000 Subject: $ Made achievement handling safer. $ Fixed GT Assembly Line recipe ASM, again. --- .../api/objects/data/ReverseAutoMap.java | 4 +- .../core/handler/AchievementHandler.java | 10 +- .../ClassTransformer_GT_Achievements_CrashFix.java | 153 ++++++++------------- .../Preloader_Transformer_Handler.java | 2 +- 4 files changed, 72 insertions(+), 97 deletions(-) (limited to 'src/Java/gtPlusPlus/api/objects/data') diff --git a/src/Java/gtPlusPlus/api/objects/data/ReverseAutoMap.java b/src/Java/gtPlusPlus/api/objects/data/ReverseAutoMap.java index 73858e8d43..72ec0bc293 100644 --- a/src/Java/gtPlusPlus/api/objects/data/ReverseAutoMap.java +++ b/src/Java/gtPlusPlus/api/objects/data/ReverseAutoMap.java @@ -151,11 +151,11 @@ public class ReverseAutoMap extends AutoMap { } @Override - public synchronized boolean clear(){ + public synchronized void clear(){ this.mInternalID = 0; this.mInternalMap.clear(); this.mInternalMapReverseLookup.clear(); - return true; + return; } @Override diff --git a/src/Java/gtPlusPlus/core/handler/AchievementHandler.java b/src/Java/gtPlusPlus/core/handler/AchievementHandler.java index e19dd01794..faca4449ce 100644 --- a/src/Java/gtPlusPlus/core/handler/AchievementHandler.java +++ b/src/Java/gtPlusPlus/core/handler/AchievementHandler.java @@ -189,8 +189,14 @@ public class AchievementHandler { boolean isValid = false; - //Check if valid name // mod - if (ItemUtils.getModId(aStack).equals(CORE.MODID) || ItemUtils.getModId(aStack).equalsIgnoreCase("gregtech")) { + //Check if valid name // mod + String aModID = ItemUtils.getModId(aStack); + + if (aModID == null || aModID.length() <= 0 || aModID.isEmpty()) { + return; + } + + if (aModID != null && (ItemUtils.getModId(aStack).equals(CORE.MODID) || ItemUtils.getModId(aStack).equalsIgnoreCase("gregtech"))) { isValid = true; } if (!isValid) { diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements_CrashFix.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements_CrashFix.java index b9ef955d53..fb297ed76e 100644 --- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements_CrashFix.java +++ b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_Achievements_CrashFix.java @@ -9,18 +9,21 @@ import org.objectweb.asm.Label; import org.objectweb.asm.MethodVisitor; import cpw.mods.fml.relauncher.FMLRelaunchLog; +import gtPlusPlus.preloader.DevHelper; public class ClassTransformer_GT_Achievements_CrashFix { private final boolean isValid; private final ClassReader reader; private final ClassWriter writer; + private final boolean mObfuscated; private static boolean mDidRemoveAssLineRecipeAdder = false; - public ClassTransformer_GT_Achievements_CrashFix(byte[] basicClass) { + public ClassTransformer_GT_Achievements_CrashFix(byte[] basicClass, boolean obfuscated) { ClassReader aTempReader = null; ClassWriter aTempWriter = null; + mObfuscated = obfuscated; aTempReader = new ClassReader(basicClass); aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES); @@ -62,117 +65,90 @@ public class ClassTransformer_GT_Achievements_CrashFix { public boolean injectMethod(ClassWriter cw) { MethodVisitor mv; boolean didInject = false; - FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements Patch", Level.INFO, "Injecting " + "registerAssAchievement" + "."); + FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements Patch", Level.INFO, "Injecting " + "registerAssAchievement" + ". Obfuscated? "+mObfuscated); /** * Inject new, safer code */ - mv = cw.visitMethod(ACC_PUBLIC, "registerAssAchievement", "(Lgregtech/api/util/GT_Recipe;)Lnet/minecraft/stats/Achievement;", null, null); mv.visitCode(); Label l0 = new Label(); + mv.visitLabel(l0); + mv.visitLineNumber(293, l0); + mv.visitVarInsn(ALOAD, 1); Label l1 = new Label(); + mv.visitJumpInsn(IFNONNULL, l1); Label l2 = new Label(); - mv.visitTryCatchBlock(l0, l1, l2, "java/lang/Throwable"); + mv.visitLabel(l2); + mv.visitLineNumber(294, l2); + mv.visitFieldInsn(GETSTATIC, "gregtech/api/util/GT_Log", "err", "Ljava/io/PrintStream;"); + mv.visitLdcInsn("GTPP_MOD: Someone tried to register an achievement for an invalid recipe. Please report this to Alkalus."); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V", false); Label l3 = new Label(); mv.visitLabel(l3); - mv.visitLineNumber(293, l3); + mv.visitLineNumber(295, l3); + mv.visitInsn(ACONST_NULL); + mv.visitInsn(ARETURN); + mv.visitLabel(l1); + mv.visitLineNumber(297, l1); + mv.visitFrame(F_SAME, 0, null, 0, null); mv.visitVarInsn(ALOAD, 1); + mv.visitInsn(ICONST_0); + mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/util/GT_Recipe", "getOutput", "(I)Lnet/minecraft/item/ItemStack;", false); Label l4 = new Label(); mv.visitJumpInsn(IFNONNULL, l4); Label l5 = new Label(); mv.visitLabel(l5); - mv.visitLineNumber(295, l5); - mv.visitLdcInsn("Someone tried to register an achievement for an invalid recipe. Please report this to Alkalus."); + mv.visitLineNumber(298, l5); + mv.visitFieldInsn(GETSTATIC, "gregtech/api/util/GT_Log", "err", "Ljava/io/PrintStream;"); + mv.visitLdcInsn("GTPP_MOD: Someone tried to register an achievement for a recipe with null output. Please report this to Alkalus."); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V", false); Label l6 = new Label(); mv.visitLabel(l6); - mv.visitLineNumber(294, l6); - mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/api/objects/Logger", "INFO", "(Ljava/lang/String;)V", false); - Label l7 = new Label(); - mv.visitLabel(l7); - mv.visitLineNumber(296, l7); + mv.visitLineNumber(299, l6); mv.visitInsn(ACONST_NULL); mv.visitInsn(ARETURN); mv.visitLabel(l4); - mv.visitLineNumber(298, l4); - mv.visitFrame(F_SAME, 0, null, 0, null); - mv.visitVarInsn(ALOAD, 1); - mv.visitInsn(ICONST_0); - mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/util/GT_Recipe", "getOutput", "(I)Lnet/minecraft/item/ItemStack;", false); - Label l8 = new Label(); - mv.visitJumpInsn(IFNONNULL, l8); - Label l9 = new Label(); - mv.visitLabel(l9); - mv.visitLineNumber(300, l9); - mv.visitLdcInsn("Someone tried to register an achievement for a recipe with null output. Please report this to Alkalus."); - Label l10 = new Label(); - mv.visitLabel(l10); - mv.visitLineNumber(299, l10); - mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/api/objects/Logger", "INFO", "(Ljava/lang/String;)V", false); - Label l11 = new Label(); - mv.visitLabel(l11); - mv.visitLineNumber(301, l11); - mv.visitInsn(ACONST_NULL); - mv.visitInsn(ARETURN); - mv.visitLabel(l8); - mv.visitLineNumber(303, l8); + mv.visitLineNumber(301, l4); mv.visitFrame(F_SAME, 0, null, 0, null); mv.visitVarInsn(ALOAD, 1); mv.visitInsn(ICONST_0); mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/util/GT_Recipe", "getOutput", "(I)Lnet/minecraft/item/ItemStack;", false); mv.visitVarInsn(ASTORE, 3); - mv.visitLabel(l0); - mv.visitLineNumber(305, l0); - mv.visitVarInsn(ALOAD, 3); - mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false); - mv.visitVarInsn(ASTORE, 2); - mv.visitLabel(l1); - mv.visitLineNumber(306, l1); - Label l12 = new Label(); - mv.visitJumpInsn(GOTO, l12); - mv.visitLabel(l2); - mv.visitFrame(F_FULL, 4, new Object[] {"gregtech/loaders/misc/GT_Achievements", "gregtech/api/util/GT_Recipe", TOP, "net/minecraft/item/ItemStack"}, 1, new Object[] {"java/lang/Throwable"}); - mv.visitVarInsn(ASTORE, 4); - Label l13 = new Label(); - mv.visitLabel(l13); - mv.visitLineNumber(307, l13); + Label l7 = new Label(); + mv.visitLabel(l7); + mv.visitLineNumber(302, l7); mv.visitVarInsn(ALOAD, 3); mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/core/util/minecraft/ItemUtils", "getUnlocalizedItemName", "(Lnet/minecraft/item/ItemStack;)Ljava/lang/String;", false); mv.visitVarInsn(ASTORE, 2); - mv.visitLabel(l12); - mv.visitLineNumber(311, l12); - mv.visitFrame(F_FULL, 4, new Object[] {"gregtech/loaders/misc/GT_Achievements", "gregtech/api/util/GT_Recipe", "java/lang/String", "net/minecraft/item/ItemStack"}, 0, new Object[] {}); + Label l8 = new Label(); + mv.visitLabel(l8); + mv.visitLineNumber(304, l8); mv.visitVarInsn(ALOAD, 0); mv.visitFieldInsn(GETFIELD, "gregtech/loaders/misc/GT_Achievements", "achievementList", "Ljava/util/concurrent/ConcurrentHashMap;"); mv.visitVarInsn(ALOAD, 2); mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/concurrent/ConcurrentHashMap", "get", "(Ljava/lang/Object;)Ljava/lang/Object;", false); - Label l14 = new Label(); - mv.visitJumpInsn(IFNONNULL, l14); - Label l15 = new Label(); - mv.visitLabel(l15); - mv.visitLineNumber(312, l15); + Label l9 = new Label(); + mv.visitJumpInsn(IFNONNULL, l9); + Label l10 = new Label(); + mv.visitLabel(l10); + mv.visitLineNumber(305, l10); mv.visitFieldInsn(GETSTATIC, "gregtech/loaders/misc/GT_Achievements", "assReg", "I"); mv.visitInsn(ICONST_1); mv.visitInsn(IADD); mv.visitFieldInsn(PUTSTATIC, "gregtech/loaders/misc/GT_Achievements", "assReg", "I"); - Label l16 = new Label(); - mv.visitLabel(l16); - mv.visitLineNumber(313, l16); + Label l11 = new Label(); + mv.visitLabel(l11); + mv.visitLineNumber(306, l11); mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 1); - mv.visitInsn(ICONST_0); - mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/util/GT_Recipe", "getOutput", "(I)Lnet/minecraft/item/ItemStack;", false); - mv.visitMethodInsn(INVOKEVIRTUAL, "net/minecraft/item/ItemStack", "getUnlocalizedName", "()Ljava/lang/String;", false); + mv.visitVarInsn(ALOAD, 2); mv.visitIntInsn(BIPUSH, 11); mv.visitFieldInsn(GETSTATIC, "gregtech/loaders/misc/GT_Achievements", "assReg", "I"); mv.visitInsn(ICONST_5); mv.visitInsn(IREM); mv.visitInsn(IADD); mv.visitInsn(INEG); - Label l17 = new Label(); - mv.visitLabel(l17); - mv.visitLineNumber(314, l17); mv.visitFieldInsn(GETSTATIC, "gregtech/loaders/misc/GT_Achievements", "assReg", "I"); mv.visitInsn(ICONST_5); mv.visitInsn(IDIV); @@ -183,41 +159,34 @@ public class ClassTransformer_GT_Achievements_CrashFix { mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/api/util/GT_Recipe", "getOutput", "(I)Lnet/minecraft/item/ItemStack;", false); mv.visitLdcInsn("NO_REQUIREMENT"); mv.visitInsn(ICONST_0); - Label l18 = new Label(); - mv.visitLabel(l18); - mv.visitLineNumber(313, l18); mv.visitMethodInsn(INVOKEVIRTUAL, "gregtech/loaders/misc/GT_Achievements", "registerAchievement", "(Ljava/lang/String;IILnet/minecraft/item/ItemStack;Ljava/lang/String;Z)Lnet/minecraft/stats/Achievement;", false); mv.visitVarInsn(ASTORE, 4); - Label l19 = new Label(); - mv.visitLabel(l19); - mv.visitLineNumber(315, l19); - Label l20 = new Label(); - mv.visitJumpInsn(GOTO, l20); - mv.visitLabel(l14); - mv.visitLineNumber(317, l14); - mv.visitFrame(F_SAME, 0, null, 0, null); + Label l12 = new Label(); + mv.visitLabel(l12); + mv.visitLineNumber(307, l12); + Label l13 = new Label(); + mv.visitJumpInsn(GOTO, l13); + mv.visitLabel(l9); + mv.visitLineNumber(309, l9); + mv.visitFrame(F_APPEND,2, new Object[] {"java/lang/String", "net/minecraft/item/ItemStack"}, 0, null); mv.visitInsn(ACONST_NULL); mv.visitVarInsn(ASTORE, 4); - mv.visitLabel(l20); - mv.visitLineNumber(319, l20); + mv.visitLabel(l13); + mv.visitLineNumber(311, l13); mv.visitFrame(F_APPEND,1, new Object[] {"net/minecraft/stats/Achievement"}, 0, null); mv.visitVarInsn(ALOAD, 4); mv.visitInsn(ARETURN); - Label l21 = new Label(); - mv.visitLabel(l21); - mv.visitLocalVariable("this", "Lgregtech/loaders/misc/GT_Achievements;", null, l3, l21, 0); - mv.visitLocalVariable("recipe", "Lgregtech/api/util/GT_Recipe;", null, l3, l21, 1); - mv.visitLocalVariable("aSafeUnlocalName", "Ljava/lang/String;", null, l1, l2, 2); - mv.visitLocalVariable("aSafeUnlocalName", "Ljava/lang/String;", null, l12, l21, 2); - mv.visitLocalVariable("aStack", "Lnet/minecraft/item/ItemStack;", null, l0, l21, 3); - mv.visitLocalVariable("t", "Ljava/lang/Throwable;", null, l13, l12, 4); - mv.visitLocalVariable("aYouDidSomethingInGT", "Lnet/minecraft/stats/Achievement;", null, l19, l14, 4); - mv.visitLocalVariable("aYouDidSomethingInGT", "Lnet/minecraft/stats/Achievement;", null, l20, l21, 4); + Label l14 = new Label(); + mv.visitLabel(l14); + mv.visitLocalVariable("this", "Lgregtech/loaders/misc/GT_Achievements;", null, l0, l14, 0); + mv.visitLocalVariable("recipe", "Lgregtech/api/util/GT_Recipe;", null, l0, l14, 1); + mv.visitLocalVariable("aSafeUnlocalName", "Ljava/lang/String;", null, l8, l14, 2); + mv.visitLocalVariable("aStack", "Lnet/minecraft/item/ItemStack;", null, l7, l14, 3); + mv.visitLocalVariable("aYouDidSomethingInGT", "Lnet/minecraft/stats/Achievement;", null, l12, l9, 4); + mv.visitLocalVariable("aYouDidSomethingInGT", "Lnet/minecraft/stats/Achievement;", null, l13, l14, 4); mv.visitMaxs(7, 5); mv.visitEnd(); - - didInject = true; FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements Patch", Level.INFO, "Method injection complete."); return didInject; 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 8c8b37eaab..e7014de089 100644 --- a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java +++ b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java @@ -125,7 +125,7 @@ public class Preloader_Transformer_Handler implements IClassTransformer { //Try patch achievements if (transformedName.equals("gregtech.loaders.misc.GT_Achievements")) { FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements Patch", Level.INFO, "Transforming %s", transformedName); - return new ClassTransformer_GT_Achievements_CrashFix(basicClass).getWriter().toByteArray(); + return new ClassTransformer_GT_Achievements_CrashFix(basicClass, obfuscated).getWriter().toByteArray(); } /*if (transformedName.equals("gregtech.common.GT_Client")) { FMLRelaunchLog.log("[GT++ ASM] Gregtech Achievements Patch", Level.INFO, "Transforming %s", transformedName); -- cgit From 0e8070f3eb5149c7223049f93b4df86adb63ea57 Mon Sep 17 00:00:00 2001 From: Alkalus <3060479+draknyte1@users.noreply.github.com> Date: Mon, 4 Mar 2019 23:03:46 +0000 Subject: - Removing some logging. $ Fixed Bed Height > 128 not working as intended. $ Fixed IC2 ASM for wrench harvesting. $ Fixed TC4 ASM. $ Fixed Invalid Giant Chicken Texture handling. --- .../gtPlusPlus/api/objects/data/TypeCounter.java | 8 ++--- .../core/client/renderer/RenderGiantChicken.java | 28 --------------- src/Java/gtPlusPlus/core/util/math/MathUtils.java | 6 ++-- .../plugin/fixes/vanilla/VanillaBedHeightFix.java | 9 +++-- .../ClassTransformer_IC2_GetHarvestTool.java | 40 +++++++++++++--------- .../ClassTransformer_TC_ItemWispEssence.java | 2 +- .../Preloader_Transformer_Handler.java | 6 +++- 7 files changed, 43 insertions(+), 56 deletions(-) (limited to 'src/Java/gtPlusPlus/api/objects/data') diff --git a/src/Java/gtPlusPlus/api/objects/data/TypeCounter.java b/src/Java/gtPlusPlus/api/objects/data/TypeCounter.java index 3d562bf76e..601a51392f 100644 --- a/src/Java/gtPlusPlus/api/objects/data/TypeCounter.java +++ b/src/Java/gtPlusPlus/api/objects/data/TypeCounter.java @@ -17,7 +17,7 @@ public class TypeCounter implements Set { private final Class mClass; public TypeCounter(Class o) { - Logger.INFO("Created new TypeCounter for "+o.getName()); + Logger.WARNING("Created new TypeCounter for "+o.getName()); mClass = o; } @@ -56,17 +56,17 @@ public class TypeCounter implements Set { InternalTypeCounterObject aValue = mInternalMap.get(aKey); if (aValue == null) { aValue = new InternalTypeCounterObject((V) arg0); - Logger.INFO("Adding new key to map: "+aKey); + Logger.WARNING("Adding new key to map: "+aKey); } aValue.add(); int a = aValue.count(); if (a > mHighestValue) { mHighestValue = a; mHighestValueKey = aKey; - Logger.INFO("New Highest Count - "+aKey+":"+a); + Logger.WARNING("New Highest Count - "+aKey+":"+a); } mInternalMap.put(aKey, aValue); - Logger.INFO(aKey+":"+a); + Logger.WARNING(aKey+":"+a); return true; } diff --git a/src/Java/gtPlusPlus/core/client/renderer/RenderGiantChicken.java b/src/Java/gtPlusPlus/core/client/renderer/RenderGiantChicken.java index bc00db7ed1..cc1249280b 100644 --- a/src/Java/gtPlusPlus/core/client/renderer/RenderGiantChicken.java +++ b/src/Java/gtPlusPlus/core/client/renderer/RenderGiantChicken.java @@ -4,40 +4,12 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBase; import net.minecraft.client.renderer.entity.RenderChicken; -import net.minecraft.entity.passive.EntityChicken; -import net.minecraft.util.ResourceLocation; - -import gtPlusPlus.core.util.reflect.ReflectionUtils; @SideOnly(Side.CLIENT) public class RenderGiantChicken extends RenderChicken { - - /** - * Fancy reflective handling of nabbing the original chicken texture object, should save reload the texture to memory. :) - */ - private static final ResourceLocation chickenTexturesEx; - static { - ResourceLocation mChicken; - try { - mChicken = (ResourceLocation) ReflectionUtils.getField(RenderGiantChicken.class, "chickenTextures").get(null); - } - catch (IllegalArgumentException | IllegalAccessException e) { - mChicken = new ResourceLocation("textures/entity/chicken.png"); - } - chickenTexturesEx = mChicken; - } public RenderGiantChicken(ModelBase p_i1252_1_, float p_i1252_2_) { super(p_i1252_1_, p_i1252_2_); } - - /** - * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture. - */ - @Override - protected ResourceLocation getEntityTexture(EntityChicken p_110775_1_) - { - return chickenTexturesEx; - } } \ No newline at end of file diff --git a/src/Java/gtPlusPlus/core/util/math/MathUtils.java b/src/Java/gtPlusPlus/core/util/math/MathUtils.java index 030099cff1..f9a4d8f548 100644 --- a/src/Java/gtPlusPlus/core/util/math/MathUtils.java +++ b/src/Java/gtPlusPlus/core/util/math/MathUtils.java @@ -463,14 +463,14 @@ public class MathUtils { return 0; } int divisor = aDataSet.length; - Logger.INFO("Calculating Average Short. Divisor: "+divisor); + Logger.WARNING("Calculating Average Short. Divisor: "+divisor); short total = 0; for (short i : aDataSet) { - Logger.INFO("Adding "+i); + Logger.WARNING("Adding "+i); total += i; } short result = safeShort((total/divisor)); - Logger.INFO("Average: "+result); + Logger.WARNING("Average: "+result); return result; } public static int getIntAverage(int[] aDataSet) { diff --git a/src/Java/gtPlusPlus/plugin/fixes/vanilla/VanillaBedHeightFix.java b/src/Java/gtPlusPlus/plugin/fixes/vanilla/VanillaBedHeightFix.java index e0fef80b52..4a0c8d3d6c 100644 --- a/src/Java/gtPlusPlus/plugin/fixes/vanilla/VanillaBedHeightFix.java +++ b/src/Java/gtPlusPlus/plugin/fixes/vanilla/VanillaBedHeightFix.java @@ -7,6 +7,7 @@ import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.core.util.Utils; +import gtPlusPlus.core.util.reflect.ReflectionUtils; import gtPlusPlus.plugin.fixes.interfaces.IBugFix; import gtPlusPlus.preloader.DevHelper; import net.minecraft.entity.player.EntityPlayer; @@ -17,9 +18,11 @@ public class VanillaBedHeightFix implements IBugFix { private final Method mSleepInBedAt; public VanillaBedHeightFix() { - if (DevHelper.isValidHelperObject()) { - Method m = DevHelper.getForgeMethod(EntityPlayer.class, "sleepInBedAt", int.class, int.class, - int.class); + if (DevHelper.isValidHelperObject()) { + Method m = ReflectionUtils.getMethod(EntityPlayer.class, "sleepInBedAt", int.class, int.class, int.class); + if (m == null) { + m = ReflectionUtils.getMethod(EntityPlayer.class, "func_71018_a", int.class, int.class, int.class); + } if (m != null) { mSleepInBedAt = m; Utils.registerEvent(this); diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_GetHarvestTool.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_GetHarvestTool.java index 1e67619337..7c3d376de8 100644 --- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_GetHarvestTool.java +++ b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_GetHarvestTool.java @@ -22,6 +22,9 @@ public class ClassTransformer_IC2_GetHarvestTool { private final ClassWriter writer; private final String className; + private final String aName_getItemDropped; + private final String aName_damageDropped; + public static String getHarvestTool(int aMeta) { return "wrench"; } @@ -37,7 +40,10 @@ public class ClassTransformer_IC2_GetHarvestTool { public ClassTransformer_IC2_GetHarvestTool(byte[] basicClass, boolean obfuscated, String aClassName) { className = aClassName; ClassReader aTempReader = null; - ClassWriter aTempWriter = null; + ClassWriter aTempWriter = null; + + aName_getItemDropped = obfuscated ? "func_149650_a" : "getItemDropped"; + aName_damageDropped = obfuscated ? "func_149692_a" : "damageDropped"; FMLRelaunchLog.log("[GT++ ASM] IC2 getHarvestTool Patch", Level.INFO, "Attempting to patch in mode " + className + "."); @@ -51,6 +57,7 @@ public class ClassTransformer_IC2_GetHarvestTool { } else { isValid = false; } + FMLRelaunchLog.log("[GT++ ASM] IC2 getHarvestTool Patch", Level.INFO, "Valid patch? " + isValid + "."); reader = aTempReader; writer = aTempWriter; @@ -58,15 +65,15 @@ public class ClassTransformer_IC2_GetHarvestTool { if (reader != null && writer != null) { FMLRelaunchLog.log("[GT++ ASM] IC2 getHarvestTool Patch", Level.INFO, "Attempting Method Injection."); injectMethod("getHarvestTool"); - if (aClassName.equals("ic2.core.block.machine.BlockMachine2") - || aClassName.equals("ic2.core.block.machine.BlockMachine3")) { - injectMethod("getItemDropped"); - injectMethod("damageDropped"); + || aClassName.equals("ic2.core.block.machine.BlockMachine3") + || aClassName.equals("ic2.core.block.wiring.BlockElectric")) { + injectMethod(aName_getItemDropped); + injectMethod(aName_damageDropped); } else if (aClassName.equals("ic2.core.block.generator.block.BlockGenerator") || aClassName.equals("ic2.core.block.machine.BlockMachine")) { - injectMethod("damageDropped"); + injectMethod(aName_damageDropped); } } @@ -111,8 +118,8 @@ public class ClassTransformer_IC2_GetHarvestTool { mv.visitEnd(); didInject = true; } - else if (aMethodName.equals("getItemDropped")) { - mv = cw.visitMethod(ACC_PUBLIC, "getItemDropped", "(ILjava/util/Random;I)Lnet/minecraft/item/Item;", null, null); + else if (aMethodName.equals(aName_getItemDropped)) { + mv = cw.visitMethod(ACC_PUBLIC, aName_getItemDropped, "(ILjava/util/Random;I)Lnet/minecraft/item/Item;", null, null); mv.visitCode(); Label l0 = new Label(); mv.visitLabel(l0); @@ -121,7 +128,7 @@ public class ClassTransformer_IC2_GetHarvestTool { mv.visitVarInsn(ILOAD, 1); mv.visitVarInsn(ALOAD, 2); mv.visitVarInsn(ILOAD, 3); - mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_GetHarvestTool", "getItemDropped", "(Lnet/minecraft/block/Block;ILjava/util/Random;I)Lnet/minecraft/item/Item;", false); + mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_GetHarvestTool", aName_getItemDropped, "(Lnet/minecraft/block/Block;ILjava/util/Random;I)Lnet/minecraft/item/Item;", false); mv.visitInsn(ARETURN); Label l1 = new Label(); mv.visitLabel(l1); @@ -133,14 +140,14 @@ public class ClassTransformer_IC2_GetHarvestTool { mv.visitEnd(); didInject = true; } - else if (aMethodName.equals("damageDropped")) { - mv = cw.visitMethod(ACC_PUBLIC, "damageDropped", "(I)I", null, null); + else if (aMethodName.equals(aName_damageDropped)) { + mv = cw.visitMethod(ACC_PUBLIC, aName_damageDropped, "(I)I", null, null); mv.visitCode(); Label l0 = new Label(); mv.visitLabel(l0); mv.visitLineNumber(48, l0); mv.visitVarInsn(ILOAD, 1); - mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_GetHarvestTool", "damageDropped", "(I)I", false); + mv.visitMethodInsn(INVOKESTATIC, "gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_GetHarvestTool", aName_damageDropped, "(I)I", false); mv.visitInsn(IRETURN); Label l1 = new Label(); mv.visitLabel(l1); @@ -167,10 +174,11 @@ public class ClassTransformer_IC2_GetHarvestTool { public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { MethodVisitor methodVisitor; if (aClassName.equals("ic2.core.block.machine.BlockMachine2") - || aClassName.equals("ic2.core.block.machine.BlockMachine3")) { - if (name.equals("getItemDropped")) { + || aClassName.equals("ic2.core.block.machine.BlockMachine3") + || aClassName.equals("ic2.core.block.wiring.BlockElectric")) { + if (name.equals(aName_getItemDropped)) { methodVisitor = null; - } else if (name.equals("damageDropped")) { + } else if (name.equals(aName_damageDropped)) { methodVisitor = null; } else if (name.equals("getHarvestTool")) { methodVisitor = null; @@ -180,7 +188,7 @@ public class ClassTransformer_IC2_GetHarvestTool { } else if (aClassName.equals("ic2.core.block.generator.block.BlockGenerator") || aClassName.equals("ic2.core.block.machine.BlockMachine")) { - if (name.equals("damageDropped")) { + if (name.equals(aName_damageDropped)) { methodVisitor = null; } else if (name.equals("getHarvestTool")) { methodVisitor = null; diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_ItemWispEssence.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_ItemWispEssence.java index 993559115c..5c8547e3d6 100644 --- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_ItemWispEssence.java +++ b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TC_ItemWispEssence.java @@ -29,7 +29,7 @@ public class ClassTransformer_TC_ItemWispEssence { ClassWriter aTempWriter = null; boolean obfuscated = obfuscated2; FMLRelaunchLog.log("[GT++ ASM] Thaumcraft WispEssence_Patch", Level.INFO, "Are we patching obfuscated methods? "+obfuscated); - String aGetColour = obfuscated ? DevHelper.getSRG("getColorFromItemStack") : DevHelper.getForge("getColorFromItemStack"); + String aGetColour = obfuscated ? DevHelper.getSRG("getColorFromItemStack") : "getColorFromItemStack"; aTempReader = new ClassReader(basicClass); aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES); aTempReader.accept(new AddAdapter(aTempWriter, new String[] {"getAspects", aGetColour}), 0); 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 38fd1e0508..d3b59c753d 100644 --- a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java +++ b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java @@ -188,13 +188,17 @@ public class Preloader_Transformer_Handler implements IClassTransformer { "ic2.core.block.reactor.block.BlockReactorFluidPort", "ic2.core.block.reactor.block.BlockReactorRedstonePort", "ic2.core.block.reactor.block.BlockReactorVessel", + "ic2.core.block.personal.BlockPersonal.class", + "ic2.core.block.wiring.BlockChargepad.class", + "ic2.core.block.wiring.BlockElectric.class", + "ic2.core.block.wiring.BlockLuminator.class", }; //Fix IC2 Shit for (String y : aIC2ClassNames) { if (transformedName.equals(y)) { FMLRelaunchLog.log("[GT++ ASM] IC2 getHarvestTool Patch", Level.INFO, "Transforming %s", transformedName); - return new ClassTransformer_IC2_GetHarvestTool(basicClass, probablyShouldBeFalse, transformedName).getWriter().toByteArray(); + return new ClassTransformer_IC2_GetHarvestTool(basicClass, obfuscated, transformedName).getWriter().toByteArray(); } } -- cgit