diff --git a/common/cpw/mods/fml/common/asm/transformers/AccessTransformer.java b/common/cpw/mods/fml/common/asm/transformers/AccessTransformer.java index 2d4944313f..079fc71955 100644 --- a/common/cpw/mods/fml/common/asm/transformers/AccessTransformer.java +++ b/common/cpw/mods/fml/common/asm/transformers/AccessTransformer.java @@ -35,6 +35,7 @@ import com.google.common.collect.Multimap; import com.google.common.io.LineProcessor; import com.google.common.io.Resources; +import cpw.mods.fml.common.asm.transformers.deobf.FMLDeobfuscatingRemapper; import cpw.mods.fml.relauncher.IClassTransformer; public class AccessTransformer implements IClassTransformer @@ -145,13 +146,35 @@ public class AccessTransformer implements IClassTransformer @Override public byte[] transform(String name, String transformedName, byte[] bytes) { - if (bytes == null) { return null; } - if (!modifiers.containsKey(name)) { return bytes; } + if (bytes == null) { return null; } + boolean makeAllPublic = FMLDeobfuscatingRemapper.INSTANCE.isRemappedClass(name); + + if (!makeAllPublic && !modifiers.containsKey(name)) { return bytes; } ClassNode classNode = new ClassNode(); ClassReader classReader = new ClassReader(bytes); classReader.accept(classNode, 0); + if (makeAllPublic) + { + // class + Modifier m = new Modifier(); + m.targetAccess = ACC_PUBLIC; + m.modifyClassVisibility = true; + modifiers.put(name,m); + // fields + m = new Modifier(); + m.targetAccess = ACC_PUBLIC; + m.name = "*"; + modifiers.put(name,m); + // methods + m = new Modifier(); + m.targetAccess = ACC_PUBLIC; + m.name = "*"; + m.desc = ""; + modifiers.put(name,m); + } + Collection mods = modifiers.get(name); for (Modifier m : mods) { diff --git a/common/cpw/mods/fml/common/asm/transformers/deobf/FMLDeobfuscatingRemapper.java b/common/cpw/mods/fml/common/asm/transformers/deobf/FMLDeobfuscatingRemapper.java index 8eb2c23cb8..68bb2bf2d0 100644 --- a/common/cpw/mods/fml/common/asm/transformers/deobf/FMLDeobfuscatingRemapper.java +++ b/common/cpw/mods/fml/common/asm/transformers/deobf/FMLDeobfuscatingRemapper.java @@ -96,6 +96,12 @@ public class FMLDeobfuscatingRemapper extends Remapper { methodNameMaps = Maps.newHashMapWithExpectedSize(rawMethodMaps.size()); fieldNameMaps = Maps.newHashMapWithExpectedSize(rawFieldMaps.size()); } + + public boolean isRemappedClass(String className) + { + return classNameBiMap.containsKey(className); + } + private void parseField(String[] parts) { String oldSrg = parts[1]; diff --git a/common/cpw/mods/fml/relauncher/FMLCorePlugin.java b/common/cpw/mods/fml/relauncher/FMLCorePlugin.java index b188e993d3..231cebe47a 100644 --- a/common/cpw/mods/fml/relauncher/FMLCorePlugin.java +++ b/common/cpw/mods/fml/relauncher/FMLCorePlugin.java @@ -17,7 +17,6 @@ public class FMLCorePlugin implements IFMLLoadingPlugin "cpw.mods.fml.common.asm.transformers.AccessTransformer", "cpw.mods.fml.common.asm.transformers.MarkerTransformer", "cpw.mods.fml.common.asm.transformers.SideTransformer", - "cpw.mods.fml.common.asm.transformers.DeobfuscationTransformer", }; } diff --git a/common/cpw/mods/fml/relauncher/RelaunchLibraryManager.java b/common/cpw/mods/fml/relauncher/RelaunchLibraryManager.java index a5f7d32aac..1532af9956 100644 --- a/common/cpw/mods/fml/relauncher/RelaunchLibraryManager.java +++ b/common/cpw/mods/fml/relauncher/RelaunchLibraryManager.java @@ -239,6 +239,8 @@ public class RelaunchLibraryManager } } } + // Deobfuscation transformer, always last + actualClassLoader.registerTransformer("cpw.mods.fml.common.asm.transformers.DeobfuscationTransformer"); downloadMonitor.updateProgressString("Running coremod plugins"); Map data = new HashMap();