diff --git a/src/main/java/org/ultramine/mods/scripting/deobf/DeobfManager.java b/src/main/java/org/ultramine/mods/scripting/deobf/DeobfManager.java index 0fd24e9..71b8ad6 100644 --- a/src/main/java/org/ultramine/mods/scripting/deobf/DeobfManager.java +++ b/src/main/java/org/ultramine/mods/scripting/deobf/DeobfManager.java @@ -93,14 +93,22 @@ public String mapMethodName(Class cls, String name) { - String ret = null; - while(ret == null && cls != Object.class) + if(cls == Object.class || cls == null) + return null; + Map map = rawMethodMaps.get(Type.getInternalName(cls)); + String ret = map == null ? null : map.get(name); + if(ret != null) + return ret; + ret = mapMethodName(cls.getSuperclass(), name); + if(ret != null) + return ret; + for(Class iface : cls.getInterfaces()) { - Map map = rawMethodMaps.get(Type.getInternalName(cls)); - ret = map == null ? null : map.get(name); - cls = cls.getSuperclass(); + ret = mapMethodName(iface, name); + if(ret != null) + return ret; } - return ret; + return null; } public String mapFieldName(Class cls, String name)