diff options
Diffstat (limited to 'src/Java/gtPlusPlus/preloader')
-rw-r--r-- | src/Java/gtPlusPlus/preloader/DevHelper.java | 34 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java | 111 |
2 files changed, 42 insertions, 103 deletions
diff --git a/src/Java/gtPlusPlus/preloader/DevHelper.java b/src/Java/gtPlusPlus/preloader/DevHelper.java index 1bfbc0b6eb..9b90617c8e 100644 --- a/src/Java/gtPlusPlus/preloader/DevHelper.java +++ b/src/Java/gtPlusPlus/preloader/DevHelper.java @@ -48,12 +48,11 @@ public class DevHelper { } @SuppressWarnings("rawtypes") - public Method getForgeMethod(Class c, String s, Class... varags) { + public static Method getForgeMethod(Class c, String s, Class... varags) { String s1, s2; Method a, b; s1 = s; - s2 = getSRG(s); - + s2 = getSRG(s); try { a = ReflectionUtils.getMethod(c, s1, varags); if (a != null) { @@ -101,7 +100,7 @@ public class DevHelper { - public static synchronized final DevHelper getInstance() { + private static synchronized final DevHelper getInstance() { return mInstance; } @@ -109,20 +108,31 @@ public class DevHelper { return mIsValidHelper; } - public String getSRG(String mForgeName) { - return DevHelperInternals.forgeToSrg.get(mForgeName); + public static String getSRG(String mForgeName) { + String aSRG = DevHelperInternals.forgeToSrg.get(mForgeName); + return aSRG != null ? aSRG : "BAD_SRG_NAME"; } - public String getForge(String mSrgName) { - return DevHelperInternals.srgToForge.get(mSrgName); + public static String getForge(String mSrgName) { + String aForgeName = DevHelperInternals.srgToForge.get(mSrgName); + return aForgeName != null ? aForgeName : "BAD_FORGE_NAME"; + } + + public static String getMinecraftClassName(String adeObName, boolean obfuscated) { + if (obfuscated) { + return getObfuscated(adeObName); + } + return adeObName; } - public String getObfuscated(String mDeob) { - return DevHelperInternals.deObToOb.get(mDeob); + public static String getObfuscated(String mDeob) { + String obfuscatedClassname = DevHelperInternals.deObToOb.get(mDeob); + return obfuscatedClassname != null ? obfuscatedClassname : "BAD_OBFUSCATED_CLASS_NAME"; } - public String getDeobfuscated(String mOb) { - return DevHelperInternals.obToDeOb.get(mOb); + public static String getDeobfuscated(String mOb) { + String deobfuscatedClassname = DevHelperInternals.obToDeOb.get(mOb); + return deobfuscatedClassname != null ? deobfuscatedClassname : "BAD_DEOBFUSCATED_CLASS_NAME"; } public static class DevHelperInternals { 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 525db7e961..ea08c07f48 100644 --- a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java +++ b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java @@ -59,18 +59,12 @@ public class Preloader_Transformer_Handler implements IClassTransformer { } // Fix Tinkers Fluids - if (findMod("TConstruct")) { if (transformedName.equals("tconstruct.smeltery.blocks.TConstructFluid")) { FMLRelaunchLog.log("[GT++ ASM] Bright Fluids", Level.INFO, "Transforming %s", transformedName); return new ClassTransformer_TiConFluids("getLightValue", obfuscated, basicClass).getWriter().toByteArray(); } - } - else { - FMLRelaunchLog.log("[GT++ ASM] Bright Fluids", Level.INFO, "TiCon Bright Fluids ASM not loaded."); - } //Fix GC stuff - if (findMod("GalacticraftCore")) { if (transformedName.equals("micdoodle8.mods.galacticraft.core.util.FluidUtil")) { FMLRelaunchLog.log("[GT++ ASM] Galacticraft FluidUtils Patch", Level.INFO, "Transforming %s", transformedName); return new ClassTransformer_GC_FluidUtil(basicClass).getWriter().toByteArray(); @@ -79,13 +73,25 @@ public class Preloader_Transformer_Handler implements IClassTransformer { FMLRelaunchLog.log("[GT++ ASM] Galacticraft Fuel_Loader Patch", Level.INFO, "Transforming %s", transformedName); return new ClassTransformer_GC_FuelLoader(basicClass).getWriter().toByteArray(); } - } - else { - FMLRelaunchLog.log("[GT++ ASM] GC Fuel Patch", Level.INFO, "GC Fuel Loader ASM not loaded."); - } - - //Improve OB Sprinklers - if (findMod("OpenBlocks-1.7.10")) { + + + if (mEnabled) { + if (transformedName.equals("gregtech.api.metatileentity.BaseMetaTileEntity")) { + FMLRelaunchLog.log("[GT++ ASM] NBTFixer", Level.INFO, "Transforming %s", transformedName); + ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES); + ClassReader x = new ClassReader(basicClass); + x.accept(new GT_MetaTile_Visitor(classWriter, false), ClassReader.EXPAND_FRAMES); + return classWriter.toByteArray(); + } + if (transformedName.equals("gregtech.common.blocks.GT_Block_Machines")) { + FMLRelaunchLog.log("[GT++ ASM] NBTFixer", Level.INFO, "Transforming %s", transformedName); + ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES); + ClassReader x = new ClassReader(basicClass); + x.accept(new GT_MetaTile_Visitor(classWriter, true), ClassReader.EXPAND_FRAMES); + return classWriter.toByteArray(); + } + + //Improve OB Sprinklers if (transformedName.equals("openblocks.common.tileentity.TileEntitySprinkler")) { FMLRelaunchLog.log("[GT++ ASM] OpenBlocks Sprinkler Patch", Level.INFO, "Transforming %s", transformedName); /*try { @@ -109,86 +115,9 @@ public class Preloader_Transformer_Handler implements IClassTransformer { e.printStackTrace(); }*/ return new ClassTransformer_OB_Sprinkler(obfuscated, basicClass).getWriter().toByteArray(); - } - } - else { - FMLRelaunchLog.log("[GT++ ASM] OpenBlocks Sprinkler Patch", Level.INFO, "OpenBlocks Sprinkler ASM not loaded."); - } - - if (mEnabled) { - if (transformedName.equals("gregtech.api.metatileentity.BaseMetaTileEntity")) { - FMLRelaunchLog.log("[GT++ ASM] NBTFixer", Level.INFO, "Transforming %s", transformedName); - ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES); - ClassReader x = new ClassReader(basicClass); - x.accept(new GT_MetaTile_Visitor(classWriter, false), ClassReader.EXPAND_FRAMES); - return classWriter.toByteArray(); - } - if (transformedName.equals("gregtech.common.blocks.GT_Block_Machines")) { - FMLRelaunchLog.log("[GT++ ASM] NBTFixer", Level.INFO, "Transforming %s", transformedName); - ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES); - ClassReader x = new ClassReader(basicClass); - x.accept(new GT_MetaTile_Visitor(classWriter, true), ClassReader.EXPAND_FRAMES); - return classWriter.toByteArray(); } } return basicClass; } - - public static boolean findMod(final String aModName) { - - /*File mMods = new File(Launch.minecraftHome, "mods"); - if (mMods.isDirectory()) { - for (File modFile : mMods.listFiles()) { - if (modFile != null && modFile.getName().toLowerCase().contains(aModName.toLowerCase())) { - FMLRelaunchLog.log("[GT++ ASM]", Level.INFO, "Found "+aModName); - return true; - } - else { - //FMLRelaunchLog.log("[GT++ ASM]", Level.INFO, "Found mod: "+modFile.getName()); - } - } - } */ - boolean exists = true; - return exists; - } - - public byte[] toByteArray(String aClassName) throws IOException { - return Launch.classLoader.getClassBytes(aClassName); - } - - public static class GetBytecode implements ClassFileTransformer { - private static Instrumentation inst; - - public static synchronized void agentmain(String args, Instrumentation inst) { - GetBytecode.inst = inst; - } - - public static synchronized void premain(String args, Instrumentation inst) { - GetBytecode.inst = inst; - } - - public static synchronized byte[] getClassFile(Class cls) throws UnmodifiableClassException { - Instrumentation inst = GetBytecode.inst; - if (inst == null) { - throw new IllegalStateException("Agent has not been loaded"); - } - - GetBytecode transformer = new GetBytecode(); - inst.addTransformer(transformer, true); - inst.retransformClasses(cls); - inst.removeTransformer(transformer); - return transformer.classFile; - } - - private byte[] classFile; - - @Override - public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, - ProtectionDomain pd, byte[] classFile) throws IllegalClassFormatException { - if (classBeingRedefined != null) { - this.classFile = classFile; - } - return null; - } - } + } |