Skip to content
This repository was archived by the owner on Jan 3, 2020. It is now read-only.

Commit ac8a406

Browse files
committed
using FMLDeobfuscateRemapper
1 parent 9ce359b commit ac8a406

File tree

4 files changed

+37
-42
lines changed

4 files changed

+37
-42
lines changed

build.gradle

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,9 @@ group= "org.devinprogress.YAIF" // http://maven.apache.org/guides/mini/guide-nam
2222
archivesBaseName = "YetAnotherInputFix"
2323

2424
minecraft {
25-
version = "1.7.2-10.12.2.1147"
26-
assetDir = "eclipse/assets"
25+
version = "1.7.10-10.13.2.1230"
26+
mappings = 'stable_12'
27+
runDir = "eclipse"
2728
}
2829

2930

src/main/java/org/devinprogress/YAIF/Transformer/ASMHelper.java

Lines changed: 28 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.devinprogress.YAIF.Transformer;
22

3+
import cpw.mods.fml.common.asm.transformers.deobf.FMLDeobfuscatingRemapper;
34
import org.devinprogress.YAIF.YetAnotherInputFix;
45
import org.objectweb.asm.ClassReader;
56
import org.objectweb.asm.ClassWriter;
@@ -14,50 +15,46 @@
1415
*/
1516
public class ASMHelper {
1617
private Object obj;
17-
//private Map<String,List<String[]>> map;
18-
//public static Boolean DEOBF_ENV;
19-
//Map<DeobfuscatedClassName,[DeobfMethodName,ObfedMethodName,Description,ProcessMethod]>
20-
private List<MethodRecord> map=null;
21-
private Set<String> classMap=null;
18+
//Map<DeobfuscatedClassName,Map<methodName+Desc,processMethod>>
19+
private Map<String,Map<String,Method>> map;
20+
2221
public ASMHelper(Object o){
2322
obj=o;
24-
map=new ArrayList<MethodRecord>();
25-
classMap=new HashSet<String>();
23+
map=new HashMap<String, Map<String,Method>>();
2624
}
2725

28-
public void add(String className,String methodName,String methodNameDeobf,String Descripton,String DescriptionDeobf,String targetTransformer){
29-
map.add(new MethodRecord(
30-
className,
31-
methodName,
32-
methodNameDeobf,
33-
Descripton,
34-
DescriptionDeobf,
35-
targetTransformer
36-
));
37-
classMap.add(className);
26+
public void hookMethod(String className,String srgName,String mcpName,String desc,String targetTransformer){
27+
if(!map.containsKey(className))
28+
map.put(className,new HashMap<String, Method>());
29+
Method m=null;
30+
try{
31+
m= obj.getClass().getDeclaredMethod(targetTransformer,MethodNode.class);
32+
}catch(Exception e){
33+
e.printStackTrace();
34+
}
35+
map.get(className).put(srgName + desc, m);
36+
map.get(className).put(mcpName + desc, m);
3837
}
3938

40-
public byte[] transform(String className,byte[] bytes){
39+
public byte[] transform(String obfClassName,String className,byte[] bytes){
40+
if(!map.containsKey(className))return bytes;
41+
Map<String,Method> transMap=map.get(className);
4142

42-
if(!classMap.contains(className))return bytes;
43-
//System.out.println("Examing Class:"+className);
4443
ClassReader cr=new ClassReader(bytes);
4544
ClassNode cn=new ClassNode();
4645
cr.accept(cn, 0);
4746

4847
for(MethodNode mn:cn.methods){
4948
//System.out.println(String.format("Examing Method: %s%s",mn.name,mn.desc));
50-
for(MethodRecord r:map){
51-
r.preProcess(!YetAnotherInputFix.ObfuscatedEnv,obj);
52-
if(mn.name.equals(r.MethodName)&&mn.desc.equals(r.Desc)&&className.equals(r.ClassName)){
53-
try{
54-
//System.out.println(String.format("Invoking Method: %s%s",mn.name,mn.desc));
55-
r.ProcessMethod.invoke(obj,mn);
56-
}catch(Exception e){
57-
e.printStackTrace();
58-
return bytes;
59-
}
60-
break;
49+
String methodName=FMLDeobfuscatingRemapper.INSTANCE.mapMethodName(obfClassName,mn.name,mn.desc);
50+
String methodDesc=FMLDeobfuscatingRemapper.INSTANCE.mapMethodDesc(mn.desc);
51+
if(transMap.containsKey(methodName+methodDesc)){
52+
try{
53+
//System.out.println(String.format("Invoking Method: %s%s",mn.name,mn.desc));
54+
transMap.get(methodName+methodDesc).invoke(obj,mn);
55+
}catch(Exception e){
56+
e.printStackTrace();
57+
return bytes;
6158
}
6259
}
6360
}

src/main/java/org/devinprogress/YAIF/Transformer/ASMTransformer.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,19 @@
1212
*/
1313
public class ASMTransformer implements IClassTransformer {
1414
private ASMHelper asm=null;
15-
//private static boolean obf;
1615
private static String obfedClassName=null;
1716

1817
public ASMTransformer(){
19-
//obf=YetAnotherInputFix.ObfuscatedEnv;
2018
asm=new ASMHelper(this);
21-
asm.add("net.minecraft.client.Minecraft", "Z","startGame", "()V", "()V", "insertWrapperStartup");
22-
asm.add("net.minecraft.client.gui.GuiTextField", "b","setFocused","(Z)V","(Z)V","hookGuiTextFocusChange");
23-
asm.add("net.minecraft.client.network.NetHandlerPlayClient", "a","handleTabComplete","(Lfz;)V","(Lnet/minecraft/network/play/server/S3APacketTabComplete;)V","hookPostTabComplete");
24-
//asm.preProcess(!YetAnotherInputFix.ObfuscatedEnv);
19+
asm.hookMethod("net.minecraft.client.Minecraft", "func_71384_a", "startGame", "()V", "insertWrapperStartup");
20+
asm.hookMethod("net.minecraft.client.gui.GuiTextField", "func_146195_b", "setFocused", "(Z)V", "hookGuiTextFocusChange");
21+
asm.hookMethod("net.minecraft.client.network.NetHandlerPlayClient", "func_147274_a", "handleTabComplete", "(Lnet/minecraft/network/play/server/S3APacketTabComplete;)V", "hookPostTabComplete");
2522
}
2623

2724
@Override
2825
public byte[] transform(String name, String transformedName, byte[] bytes) {
2926
obfedClassName=name;
30-
return asm.transform(transformedName,bytes);
27+
return asm.transform(name,transformedName,bytes);
3128
}
3229

3330
/* These Transformers are designed for Minecraft version 1.7.2 */

src/main/java/org/devinprogress/YAIF/Transformer/Loader.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class Loader implements IFMLLoadingPlugin {
1313

1414
@Override
1515
public String[] getASMTransformerClass() {
16-
return new String[] {"org.devinprogress.YAIF.Transformer.ASMTransformer"};
16+
return new String[] {ASMTransformer.class.getName()};
1717
}
1818

1919
@Override
@@ -33,6 +33,6 @@ public void injectData(Map<String, Object> data) {
3333

3434
@Override
3535
public String getAccessTransformerClass() {
36-
return "org.devinprogress.YAIF.Transformer.AccessTransformer";
36+
return AccessTransformer.class.getName();
3737
}
3838
}

0 commit comments

Comments
 (0)