diff --git a/src/main/java/noppes/npcs/janino/JaninoScript.java b/src/main/java/noppes/npcs/janino/JaninoScript.java index 8a217b8d0..a2202271e 100644 --- a/src/main/java/noppes/npcs/janino/JaninoScript.java +++ b/src/main/java/noppes/npcs/janino/JaninoScript.java @@ -52,11 +52,11 @@ public abstract class JaninoScript implements IScriptUnit { private final String[] defaultImports; - protected JaninoScript(Class type, String[] defaultImports) { + protected JaninoScript(Class type, String[] defaultImports, boolean isClient) { this.type = type; this.defaultImports = defaultImports != null ? defaultImports : new String[0]; - this.builder = IScriptBodyBuilder.getBuilder(type, CustomNpcs.getClientCompiler()) - .setDefaultImports(defaultImports); + this.builder = IScriptBodyBuilder.getBuilder(type, isClient ? CustomNpcs.getClientCompiler() : CustomNpcs.getDynamicCompiler()) + .setDefaultImports(defaultImports); Permissions permissions = new Permissions(); permissions.setReadOnly(); @@ -67,6 +67,10 @@ public abstract class JaninoScript implements IScriptUnit { this.hookResolver = new JaninoHookResolver(type); } + protected JaninoScript(Class type, String[] defaultImports) { + this(type, defaultImports, true); + } + protected T getUnsafe() { return scriptBody.get(); } @@ -237,9 +241,9 @@ public abstract class JaninoScript implements IScriptUnit { */ @Override public void run(EnumScriptType type, Event event) { - if (type == null) + if (type == null) return; - + callFunction(type.function, event); } @@ -254,7 +258,7 @@ public abstract class JaninoScript implements IScriptUnit { public void run(String hookName, Object event) { callFunction(hookName, event); } - + @Override public String getScript() { return this.script; @@ -266,7 +270,7 @@ public abstract class JaninoScript implements IScriptUnit { this.evaluated = false; hookResolver.clearResolutionCaches(); } - + @Override public List getExternalScripts() { return this.externalScripts; @@ -278,17 +282,17 @@ public abstract class JaninoScript implements IScriptUnit { this.evaluated = false; hookResolver.clearResolutionCaches(); } - + @Override public TreeMap getConsole() { return this.console; } - + @Override public void clearConsole() { console.clear(); } - + @Override public void appendConsole(String message) { if (message != null && !message.isEmpty()) { @@ -304,18 +308,18 @@ public abstract class JaninoScript implements IScriptUnit { } } } - + @Override public String getLanguage() { return this.language; } - + @Override public void setLanguage(String language) { // JaninoScript is always Java, ignore attempts to change // This method exists for IScriptUnit interface compatibility } - + @Override public boolean hasCode() { if (!externalScripts.isEmpty()) @@ -330,11 +334,11 @@ public abstract class JaninoScript implements IScriptUnit { Method method = hookResolver.getMethodForDisplayName(hookName); if (method != null) return generateMethodStub(method); - + // Fallback for unknown hook names - generate basic override return String.format("public void %s() {\n \n}\n", hookName); } - + /** * Generates a stub string for a given Method. */ @@ -367,7 +371,7 @@ public abstract class JaninoScript implements IScriptUnit { typeCount.put(baseName, count); paramName = count == 1 ? baseName : baseName + (count - 1); } - + return typeName + " " + paramName; }) .collect(Collectors.joining(", ")); @@ -429,14 +433,14 @@ public abstract class JaninoScript implements IScriptUnit { return compound; } - + @Override public boolean hasErrored() { return this.errored; } - + @Override public void setErrored(boolean errored) { this.errored = errored; } -} \ No newline at end of file +} diff --git a/src/main/java/noppes/npcs/janino/impl/JaninoPlayerScript.java b/src/main/java/noppes/npcs/janino/impl/JaninoPlayerScript.java index 15d822615..0e1f3b004 100644 --- a/src/main/java/noppes/npcs/janino/impl/JaninoPlayerScript.java +++ b/src/main/java/noppes/npcs/janino/impl/JaninoPlayerScript.java @@ -17,9 +17,9 @@ import noppes.npcs.janino.annotations.ScriptHook; * Janino (Java) script implementation for player events. */ public class JaninoPlayerScript extends JaninoScript { - + public JaninoPlayerScript() { - super(Functions.class, null); + super(Functions.class, null, false); } /**