Fixed: rhino NullPointerException

This commit is contained in:
Reider745
2025-01-08 13:18:26 +03:00
parent 7c7c8f6980
commit d519480c97
2 changed files with 22 additions and 9 deletions
@@ -168,10 +168,17 @@ public class JarEditor {
arg += "$" + i;
}
String returnStr;
if(method.getReturnType().getName().equals("void"))
returnStr = "";
else
returnStr = "return ";
if(isStatic){
method.setBody("{"+className+"."+name+"("+arg+");}");
method.setBody("{"+returnStr+className+"."+name+"("+arg+");}");
}else
method.setBody("{$1."+name+"("+arg+");}");
method.setBody("{"+returnStr+"$1."+name+"("+arg+");}");
}
}
}
@@ -2,8 +2,7 @@ package com.reider745.hooks;
import cn.nukkit.utils.MainLogger;
import com.reider745.api.ReflectHelper;
import com.reider745.api.hooks.annotation.ShadowGetField;
import com.reider745.api.hooks.annotation.ShadowSetField;
import com.reider745.api.hooks.annotation.*;
import javassist.CannotCompileException;
import javassist.CtClass;
import javassist.CtMethod;
@@ -14,11 +13,7 @@ import org.apache.logging.log4j.Logger;
import com.reider745.InnerCoreServer;
import com.reider745.api.hooks.HookClass;
import com.reider745.api.hooks.TypeHook;
import com.reider745.api.hooks.annotation.Hooks;
import com.reider745.api.hooks.annotation.Inject;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.ContextFactory;
import org.mozilla.javascript.ScriptRuntime;
import org.mozilla.javascript.*;
import java.util.ArrayList;
@@ -106,6 +101,17 @@ public class RhinoOverrides implements HookClass {
@ShadowSetField(className = "org.mozilla.javascript.Context", field = "applicationClassLoader")
public static void setApplicationClassLoaderField(Context self, ClassLoader loader) {}
@ShadowMethod(className = "org.mozilla.javascript.NativeJavaPackage")
public static Object getPkgProperty(NativeJavaPackage self, String name, Scriptable start, boolean createPkg) {return null;}
@Inject(className = "org.mozilla.javascript.NativeJavaPackage")
public static Object get(NativeJavaPackage self, String name, Scriptable start) {
try {
return getPkgProperty(self, name, start, true);
}catch (NullPointerException ignore) {}
return NativeJavaPackage.NOT_FOUND;
}
@Inject(className = "org.mozilla.javascript.Context")
public static ClassLoader getApplicationClassLoader(Context self) throws ClassNotFoundException {
ClassLoader applicationClassLoader = getApplicationClassLoaderField(self);