diff --git a/me/Unmapper/ClassNodeRemapper.java b/me/Unmapper/ClassNodeRemapper.java index a0e72f2..e11ed39 100644 --- a/me/Unmapper/ClassNodeRemapper.java +++ b/me/Unmapper/ClassNodeRemapper.java @@ -288,7 +288,7 @@ public class ClassNodeRemapper { private void remapInstruction(String clazz, AbstractInsnNode n) { if (FieldInsnNode.class.isInstance(n)) { FieldInsnNode node = (FieldInsnNode) n; - node.name = getOldMemberName(new MemberData(clazz, node.desc, node.name)); + node.name = getOldMemberName(new MemberData(node.owner, node.desc, node.name)); node.desc = getOldMemberFieldDesc(node.desc); node.owner = getOldClassName(node.owner); } else if (FrameNode.class.isInstance(n)) { @@ -360,7 +360,7 @@ public class ClassNodeRemapper { } } else if (MethodInsnNode.class.isInstance(n)) { MethodInsnNode node = (MethodInsnNode) n; - node.name = getOldMemberName(new MemberData(clazz, node.desc, node.name)); + node.name = getOldMemberName(new MemberData(node.owner, node.desc, node.name)); node.desc = getOldMemberMethodDesc(node.desc); node.owner = getOldClassName(node.owner); } else if (TypeInsnNode.class.isInstance(n)) { diff --git a/me/Unmapper/MappingReader.java b/me/Unmapper/MappingReader.java index 4e6c0cd..897214e 100644 --- a/me/Unmapper/MappingReader.java +++ b/me/Unmapper/MappingReader.java @@ -110,11 +110,20 @@ public class MappingReader { } private String getOldClassName(String name) { + int arrayCount = 0; + int arrayIdx = name.lastIndexOf('['); + while (arrayIdx >= 0) { + arrayCount++; + name = name.substring(0, arrayIdx); + arrayIdx = name.lastIndexOf('['); + } name = name.replace('.', '/'); String old = internalReversedClassMappings.get(name); - if (old != null) - return old; - return name; + if (old == null) + old = name; + for (int i = 0; i < arrayCount; i++) + old += "[]"; + return old; } private String convertTypeToByteCode(String type) {