Merge branch 'runtimedeobf' into snapshot15
This commit is contained in:
commit
245e7312b2
4 changed files with 33 additions and 3 deletions
|
@ -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<Modifier> mods = modifiers.get(name);
|
||||
for (Modifier m : mods)
|
||||
{
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -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",
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -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<String,Object> data = new HashMap<String,Object>();
|
||||
|
|
Loading…
Reference in a new issue