diff options
Diffstat (limited to 'src/Java/gtPlusPlus')
12 files changed, 100 insertions, 56 deletions
diff --git a/src/Java/gtPlusPlus/preloader/DevHelper.java b/src/Java/gtPlusPlus/preloader/DevHelper.java index 9b90617c8e..320cbe610a 100644 --- a/src/Java/gtPlusPlus/preloader/DevHelper.java +++ b/src/Java/gtPlusPlus/preloader/DevHelper.java @@ -5,6 +5,7 @@ import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; +import gtPlusPlus.api.objects.Logger; import gtPlusPlus.api.objects.data.Pair; import gtPlusPlus.api.objects.data.weakref.WeakAutoMap; import gtPlusPlus.core.util.reflect.ReflectionUtils; @@ -13,7 +14,7 @@ import net.minecraft.launchwrapper.Launch; public class DevHelper { private static final DevHelper mInstance; - private static final boolean mIsValidHelper; + public static final boolean mIsValidHelper; static { mInstance = new DevHelper(); @@ -127,7 +128,11 @@ public class DevHelper { public static String getObfuscated(String mDeob) { String obfuscatedClassname = DevHelperInternals.deObToOb.get(mDeob); - return obfuscatedClassname != null ? obfuscatedClassname : "BAD_OBFUSCATED_CLASS_NAME"; + obfuscatedClassname = obfuscatedClassname != null ? obfuscatedClassname : "BAD_OBFUSCATED_CLASS_NAME"; + if (obfuscatedClassname.equals("BAD_OBFUSCATED_CLASS_NAME")) { + Logger.INFO("[Fix] Failed to Get Deobfuscated name for "+mDeob); + } + return obfuscatedClassname; } public static String getDeobfuscated(String mOb) { @@ -148,7 +153,8 @@ public class DevHelper { private static boolean init() { init1(); init2(); - init3(); + init3(); + init4(); if (mInitMap.size() > 0) { for (Pair<String, String> p : mInitMap) { if (p != null) { @@ -166,10 +172,17 @@ public class DevHelper { String ob = p.getKey(); String deOb = p.getValue(); obToDeOb.put(ob, deOb); - deObToOb.put(deOb, ob); + deObToOb.put(deOb, ob); } } } + Logger.INFO("[DevHelper] mInitMap size: "+mInitMap.size()); + Logger.INFO("[DevHelper] mObInitMap size: "+mObInitMap.size()); + + Logger.INFO("[DevHelper] srgToForge size: "+srgToForge.size()); + Logger.INFO("[DevHelper] forgeToSrg size: "+forgeToSrg.size()); + Logger.INFO("[DevHelper] obToDeOb size: "+obToDeOb.size()); + Logger.INFO("[DevHelper] deObToOb size: "+deObToOb.size()); return srgToForge.size() > 0 && forgeToSrg.size() > 0 && obToDeOb.size() > 0 && deObToOb.size() > 0; } @@ -5002,7 +5015,7 @@ public class DevHelper { mInitMap.put(new Pair<String, String>("func_99999_d", "run")); } - public void init4() { + public static void init4() { mObInitMap.put(new Pair<String, String>("aqc", "net/minecraft/world/chunk/storage/IChunkLoader")); mObInitMap.put(new Pair<String, String>("amd", "net/minecraft/block/BlockMycelium")); mObInitMap.put(new Pair<String, String>("aag", "net/minecraft/inventory/ContainerEnchantment")); diff --git a/src/Java/gtPlusPlus/preloader/asm/AsmConfig.java b/src/Java/gtPlusPlus/preloader/asm/AsmConfig.java index fe77420803..884d2a47fe 100644 --- a/src/Java/gtPlusPlus/preloader/asm/AsmConfig.java +++ b/src/Java/gtPlusPlus/preloader/asm/AsmConfig.java @@ -16,6 +16,7 @@ public class AsmConfig { public static boolean enableGtTooltipFix; public static boolean enableGtNbtFix; public static boolean enableChunkDebugging; + public static boolean enableCofhPatch; public AsmConfig(File file) { if (!loaded) { @@ -40,7 +41,7 @@ public class AsmConfig { prop = config.get("debug", "enableChunkDebugging", false); prop.comment = "Enable/Disable Chunk Debugging Features, Must Be enabled on Client and Server."; prop.setLanguageKey("gtpp.enableChunkDebugging").setRequiresMcRestart(true); - enableChunkDebugging = prop.getBoolean(true); + enableChunkDebugging = prop.getBoolean(false); propOrderDebug.add(prop.getName()); prop = config.get("debug", "enableGtNbtFix", true); @@ -49,6 +50,14 @@ public class AsmConfig { enableGtNbtFix = prop.getBoolean(true); propOrderDebug.add(prop.getName()); + prop = config.get("debug", "enableCofhPatch", false); + prop.comment = "Enable/Disable COFH OreDictionaryArbiter Patch (Useful for Development)"; + prop.setLanguageKey("gtpp.enableCofhPatch").setRequiresMcRestart(true); + enableCofhPatch = prop.getBoolean(false); + propOrderDebug.add(prop.getName()); + + + //General Features prop = config.get("general", "enableTiConFluidLighting", true); @@ -74,6 +83,7 @@ public class AsmConfig { FMLLog.log(Level.INFO, "[GT++ ASM] Gt Nbt Fix - Enabled: "+enableGtNbtFix, new Object[0]); FMLLog.log(Level.INFO, "[GT++ ASM] TiCon Fluid Lighting - Enabled: "+enableTiConFluidLighting, new Object[0]); FMLLog.log(Level.INFO, "[GT++ ASM] Gt Tooltip Fix - Enabled: "+enableGtTooltipFix, new Object[0]); + FMLLog.log(Level.INFO, "[GT++ ASM] COFH Patch - Enabled: "+enableCofhPatch, new Object[0]); } catch (Exception var3) { FMLLog.log(Level.ERROR, var3, "GT++ ASM had a problem loading it's config", new Object[0]); diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter.java index 9443da2ccc..50ba79bfe0 100644 --- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter.java +++ b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_COFH_OreDictionaryArbiter.java @@ -38,14 +38,16 @@ public class ClassTransformer_COFH_OreDictionaryArbiter { private final boolean isObfuscated; public ClassTransformer_COFH_OreDictionaryArbiter(byte[] basicClass, boolean obfuscated) { + ClassReader aTempReader = null; ClassWriter aTempWriter = null; + isObfuscated = obfuscated; - try { - aTempReader = new ClassReader(className); - aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES); - new ClassReader(basicClass).accept(new localClassVisitor(aTempWriter), 0); - } catch (IOException e) {} + + aTempReader = new ClassReader(basicClass); + aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES); + aTempReader.accept(new localClassVisitor(aTempWriter), 0); + if (aTempReader != null && aTempWriter != null) { isValid = true; } @@ -77,7 +79,7 @@ public class ClassTransformer_COFH_OreDictionaryArbiter { String aItemStack = isObfuscated ? DevHelper.getObfuscated("net/minecraft/item/ItemStack") : "net/minecraft/item/ItemStack"; MethodVisitor mv; if (aMethodName.equals("registerOreDictionaryEntry")) { - FMLRelaunchLog.log("[GT++ ASM] COFH OreDictionaryArbiter Patch", Level.INFO, "Injecting "+aMethodName+" into "+className+"."); + FMLRelaunchLog.log("[GT++ ASM] COFH OreDictionaryArbiter Patch", Level.INFO, "Injecting "+aMethodName+" into "+className+". ItemStack: "+aItemStack); mv = getWriter().visitMethod(ACC_PUBLIC + ACC_STATIC, "registerOreDictionaryEntry", "(L"+aItemStack+";Ljava/lang/String;)V", null, null); mv.visitCode(); Label l0 = new Label(); diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_ChunkLoading.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_ChunkLoading.java index 024cba9d7b..19648ae60c 100644 --- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_ChunkLoading.java +++ b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Forge_ChunkLoading.java @@ -31,13 +31,14 @@ public class ClassTransformer_Forge_ChunkLoading { private static boolean doesMethodAlreadyExist = false; public ClassTransformer_Forge_ChunkLoading(byte[] basicClass, boolean obfuscated) { + ClassReader aTempReader = null; ClassWriter aTempWriter = null; - try { - aTempReader = new ClassReader(className); - aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES); - new ClassReader(basicClass).accept(new localClassVisitor(aTempWriter), 0); - } catch (IOException e) {} + + aTempReader = new ClassReader(basicClass); + aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES); + aTempReader.accept(new localClassVisitor(aTempWriter), 0); + if (aTempReader != null && aTempWriter != null) { isValid = true; } diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_EntityAutoRocket.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_EntityAutoRocket.java index 5cc6bb8aa9..1e58cbbe9b 100644 --- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_EntityAutoRocket.java +++ b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_EntityAutoRocket.java @@ -26,16 +26,16 @@ public class ClassTransformer_GC_EntityAutoRocket { private final boolean isObfuscated; public ClassTransformer_GC_EntityAutoRocket(byte[] basicClass, boolean obfuscated) { + ClassReader aTempReader = null; ClassWriter aTempWriter = null; + isObfuscated = obfuscated; - try { - aTempReader = new ClassReader(className); - aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES); - new ClassReader(basicClass).accept(new localClassVisitor(aTempWriter), 0); - } catch (IOException e) { - e.printStackTrace(); - } + + aTempReader = new ClassReader(basicClass); + aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES); + aTempReader.accept(new localClassVisitor(aTempWriter), 0); + if (aTempReader != null && aTempWriter != null) { isValid = true; } diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FluidUtil.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FluidUtil.java index a54ed79e35..13681e7e3a 100644 --- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FluidUtil.java +++ b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FluidUtil.java @@ -24,13 +24,14 @@ public class ClassTransformer_GC_FluidUtil { private final ClassWriter writer; public ClassTransformer_GC_FluidUtil(byte[] basicClass, boolean obfuscated) { + ClassReader aTempReader = null; ClassWriter aTempWriter = null; - try { - aTempReader = new ClassReader(className); - aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES); - new ClassReader(basicClass).accept(new localClassVisitor(aTempWriter), 0); - } catch (IOException e) {} + + aTempReader = new ClassReader(basicClass); + aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES); + aTempReader.accept(new localClassVisitor(aTempWriter), 0); + if (aTempReader != null && aTempWriter != null) { isValid = true; } diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FuelLoader.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FuelLoader.java index ae24546f0a..5ef5b75505 100644 --- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FuelLoader.java +++ b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GC_FuelLoader.java @@ -26,16 +26,16 @@ public class ClassTransformer_GC_FuelLoader { private final boolean isObfuscated; public ClassTransformer_GC_FuelLoader(byte[] basicClass, boolean obfuscated) { + ClassReader aTempReader = null; ClassWriter aTempWriter = null; + isObfuscated = obfuscated; - try { - aTempReader = new ClassReader(className); - aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES); - new ClassReader(basicClass).accept(new localClassVisitor(aTempWriter), 0); - } catch (IOException e) { - e.printStackTrace(); - } + + aTempReader = new ClassReader(basicClass); + aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES); + aTempReader.accept(new localClassVisitor(aTempWriter), 0); + if (aTempReader != null && aTempWriter != null) { isValid = true; } diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BlockMachines_NBT.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BlockMachines_NBT.java index 0d2fcc70a4..b746a949f6 100644 --- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BlockMachines_NBT.java +++ b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_BlockMachines_NBT.java @@ -30,27 +30,34 @@ public class ClassTransformer_GT_BlockMachines_NBT { private static boolean doesMethodAlreadyExist = false; public ClassTransformer_GT_BlockMachines_NBT(byte[] basicClass, boolean obfuscated) { + ClassReader aTempReader = null; ClassWriter aTempWriter = null; - try { - aTempReader = new ClassReader(className); - aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES); - new ClassReader(basicClass).accept(new localClassVisitor(aTempWriter), 0); - } catch (IOException e) {} + + FMLRelaunchLog.log("[GT++ ASM] Gregtech NBT Persistency Patch", Level.INFO, "Attempting to patch "+className+"."); + + aTempReader = new ClassReader(basicClass); + aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES); + aTempReader.accept(new localClassVisitor(aTempWriter), 0); + if (aTempReader != null && aTempWriter != null) { isValid = true; } else { isValid = false; } + FMLRelaunchLog.log("[GT++ ASM] Gregtech NBT Persistency Patch", Level.INFO, "Valid patch? "+isValid+"."); reader = aTempReader; writer = aTempWriter; - if (reader != null && writer != null && !doesMethodAlreadyExist) { + if (reader != null && writer != null && !doesMethodAlreadyExist) { + FMLRelaunchLog.log("[GT++ ASM] Gregtech NBT Persistency Patch", Level.INFO, "Getting Valid MC Class names. "+"."); aEntityPlayer = obfuscated ? DevHelper.getObfuscated("net/minecraft/entity/player/EntityPlayer") : "net/minecraft/entity/player/EntityPlayer"; aEntityPlayerMP = obfuscated ? DevHelper.getObfuscated("net/minecraft/entity/player/EntityPlayerMP") : "net/minecraft/entity/player/EntityPlayerMP"; aWorld = obfuscated ? DevHelper.getObfuscated("net/minecraft/world/World") : "net/minecraft/world/World"; - + + FMLRelaunchLog.log("[GT++ ASM] Gregtech NBT Persistency Patch", Level.INFO, "Found: "+aEntityPlayer+", "+aEntityPlayerMP+", "+aWorld+"."); + FMLRelaunchLog.log("[GT++ ASM] Gregtech NBT Persistency Patch", Level.INFO, "Attempting Method Injection."); injectMethod("removedByPlayer"); injectMethod("harvestBlock"); } diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_ItemMachines_Tooltip.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_ItemMachines_Tooltip.java index 49981d134e..4b2a10df07 100644 --- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_ItemMachines_Tooltip.java +++ b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_GT_ItemMachines_Tooltip.java @@ -30,13 +30,14 @@ public class ClassTransformer_GT_ItemMachines_Tooltip { private static boolean doesMethodAlreadyExist = false; public ClassTransformer_GT_ItemMachines_Tooltip(byte[] basicClass, boolean obfuscated) { + ClassReader aTempReader = null; ClassWriter aTempWriter = null; - try { - aTempReader = new ClassReader(className); - aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES); - new ClassReader(basicClass).accept(new localClassVisitor(aTempWriter), 0); - } catch (IOException e) {} + + aTempReader = new ClassReader(basicClass); + aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES); + aTempReader.accept(new localClassVisitor(aTempWriter), 0); + if (aTempReader != null && aTempWriter != null) { isValid = true; } diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TiConFluids.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TiConFluids.java index c14a4809ba..083041050d 100644 --- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TiConFluids.java +++ b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_TiConFluids.java @@ -32,14 +32,16 @@ public class ClassTransformer_TiConFluids { public ClassTransformer_TiConFluids(String aMethodName, boolean obfuscated, byte[] basicClass) { isObfuscated = obfuscated; + methodName = obfuscated ? DevHelper.getSRG(aMethodName) : aMethodName; + ClassReader aTempReader = null; ClassWriter aTempWriter = null; - try { - aTempReader = new ClassReader(className); - aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES); - new ClassReader(basicClass).accept(new localClassVisitir(aTempWriter, isObfuscated), 0); - } catch (IOException e) {} + + aTempReader = new ClassReader(basicClass); + aTempWriter = new ClassWriter(aTempReader, ClassWriter.COMPUTE_FRAMES); + aTempReader.accept(new localClassVisitir(aTempWriter, isObfuscated), 0); + if (aTempReader != null && aTempWriter != null) { isValid = true; } 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 6954e286ae..269289c608 100644 --- a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java +++ b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java @@ -20,9 +20,11 @@ public class Preloader_Transformer_Handler implements IClassTransformer { private final boolean mEnabled = false; public static final AsmConfig mConfig; + static { mConfig = new AsmConfig(new File("config/GTplusplus/asm.cfg")); - System.out.println("Asm Config Location: "+mConfig.config.getConfigFile().getAbsolutePath()); + System.out.println("[GT++ ASM] Asm Config Location: "+mConfig.config.getConfigFile().getAbsolutePath()); + System.out.println("[GT++ ASM] Is DevHelper Valid? "+gtPlusPlus.preloader.DevHelper.mIsValidHelper); } public byte[] transform(String name, String transformedName, byte[] basicClass) { @@ -62,7 +64,7 @@ public class Preloader_Transformer_Handler implements IClassTransformer { return classWriter.toByteArray(); } // Fix the OreDictionary COFH - if (transformedName.equals("cofh.core.util.oredict.OreDictionaryArbiter")) { + if (transformedName.equals("cofh.core.util.oredict.OreDictionaryArbiter") && mConfig.enableCofhPatch) { FMLRelaunchLog.log("[GT++ ASM] COFH", Level.INFO, "Transforming %s", transformedName); return new ClassTransformer_COFH_OreDictionaryArbiter(basicClass, obfuscated).getWriter().toByteArray(); } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java index 71e3a5093c..771a48c809 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java @@ -150,14 +150,19 @@ public class RecipeGen_Ore implements Runnable{ Logger.MATERIALS("bonusA.getTinyDust(1): "+(bonusA.getTinyDust(1) != null)+" | Material: "+(bonusA != null) + " | Material name: "+(bonusA != null ? bonusA.getLocalizedName() : "invalid material")); Logger.MATERIALS("bonusB.getTinyDust(1): "+(bonusB.getTinyDust(1) != null)+" | Material: "+(bonusB != null) + " | Material name: "+(bonusB != null ? bonusB.getLocalizedName() : "invalid material")); + try { //.08 compat if (GT_ModHandler.addThermalCentrifugeRecipe(material.getCrushed(1), 200, material.getCrushedCentrifuged(1), bonusB.getTinyDust(1), dustStone)){ Logger.MATERIALS("[ThermalCentrifuge] Added Recipe: 'Crushed ore to Centrifuged Ore' | Input: "+material.getCrushed(1).getDisplayName()+" | Outputs: "+material.getCrushedCentrifuged(1).getDisplayName()+", "+bonusB.getTinyDust(1).getDisplayName()+", "+dustStone.getDisplayName()+"."); } - + } + catch (Throwable t) {} + try { if (GT_ModHandler.addThermalCentrifugeRecipe(material.getCrushedPurified(1), 200, material.getCrushedCentrifuged(1), bonusA.getTinyDust(1), dustStone)){ Logger.MATERIALS("[ThermalCentrifuge] Added Recipe: 'Washed ore to Centrifuged Ore' | Input: "+material.getCrushedPurified(1).getDisplayName()+" | Outputs: "+material.getCrushedCentrifuged(1).getDisplayName()+", "+bonusA.getTinyDust(1).getDisplayName()+", "+dustStone.getDisplayName()+"."); } + } + catch (Throwable t) {} /** |