From 587d435a6fab35d346355bdd7e3f7fd305b7c261 Mon Sep 17 00:00:00 2001 From: bigguy345 Date: Fri, 23 Jan 2026 03:27:40 +0200 Subject: [PATCH] Added removed methods --- .../java/noppes/npcs/janino/JaninoScript.java | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/main/java/noppes/npcs/janino/JaninoScript.java b/src/main/java/noppes/npcs/janino/JaninoScript.java index b04031973..7cae0bdbb 100644 --- a/src/main/java/noppes/npcs/janino/JaninoScript.java +++ b/src/main/java/noppes/npcs/janino/JaninoScript.java @@ -19,6 +19,8 @@ import java.lang.invoke.MethodHandle; import java.security.Permissions; import java.security.PrivilegedAction; import java.util.*; +import java.util.function.Consumer; +import java.util.function.Function; import java.util.function.Supplier; public abstract class JaninoScript implements IScriptUnit { @@ -61,6 +63,54 @@ public abstract class JaninoScript implements IScriptUnit { protected abstract String getHookContext(); + protected T getUnsafe() { + return scriptBody.get(); + } + + public R call(Function fn) { + ensureCompiled(); + + T t = getUnsafe(); + if (t == null) + return null; + + // CodeSource cs = t.getClass().getProtectionDomain().getCodeSource(); + // ProtectionDomain pd = new ProtectionDomain(cs, new Permissions()); + + try { + return sandbox.confine((PrivilegedAction) () -> fn.apply(t)); + // return AccessController.doPrivileged((PrivilegedAction) () -> fn.apply(t), new AccessControlContext( + // new ProtectionDomain[] { + // pd + // } + // )); + } catch (Exception e) { + appendConsole("Runtime Error: " + e.getMessage()); + return null; + } + } + + public void run(Consumer fn) { + ensureCompiled(); + + T t = getUnsafe(); + if (t == null) + return; + + try { + sandbox.confine((PrivilegedAction) () -> { + fn.accept(t); + return null; + }); + } catch (Exception e) { + appendConsole("Runtime Error: " + e.getMessage()); + } + } + + public void unload() { + } + + // ==================== COMPILATION ==================== public void compileScript(String code) {