diff --git a/src/main/java/com/extendedclip/papi/expansion/javascript/ExpansionUtils.java b/src/main/java/com/extendedclip/papi/expansion/javascript/ExpansionUtils.java index d2eaaceb..7e1abe32 100644 --- a/src/main/java/com/extendedclip/papi/expansion/javascript/ExpansionUtils.java +++ b/src/main/java/com/extendedclip/papi/expansion/javascript/ExpansionUtils.java @@ -68,24 +68,26 @@ public static void errorLog(String log, Throwable throwable, boolean canPrefix) // Only support for Nashorn engine! protected static Object jsonToJava(Object jsObj) { - if (jsObj instanceof ScriptObjectMirror) { - ScriptObjectMirror jsObjectMirror = (ScriptObjectMirror) jsObj; - if (jsObjectMirror.isArray()) { - List list = new ArrayList<>(); - for (Map.Entry entry : jsObjectMirror.entrySet()) { - list.add(jsonToJava(entry.getValue())); + try { + if (jsObj instanceof ScriptObjectMirror) { + ScriptObjectMirror jsObjectMirror = (ScriptObjectMirror) jsObj; + if (jsObjectMirror.isArray()) { + List list = new ArrayList<>(); + for (Map.Entry entry : jsObjectMirror.entrySet()) { + list.add(jsonToJava(entry.getValue())); + } + return list; + } else { + Map map = new HashMap<>(); + for (Map.Entry entry : jsObjectMirror.entrySet()) { + map.put(entry.getKey(), jsonToJava(entry.getValue())); + } + return map; } - return list; } else { - Map map = new HashMap<>(); - for (Map.Entry entry : jsObjectMirror.entrySet()) { - map.put(entry.getKey(), jsonToJava(entry.getValue())); - } - return map; + return jsObj; } - } else { - return jsObj; - } + } catch (NoClassDefFoundError ignored) {return jsObj;} } protected static Object ymlToJavaObj(Object obj) { diff --git a/src/main/java/com/extendedclip/papi/expansion/javascript/JavascriptExpansion.java b/src/main/java/com/extendedclip/papi/expansion/javascript/JavascriptExpansion.java index 3ed4c0a3..b5e6a493 100644 --- a/src/main/java/com/extendedclip/papi/expansion/javascript/JavascriptExpansion.java +++ b/src/main/java/com/extendedclip/papi/expansion/javascript/JavascriptExpansion.java @@ -28,6 +28,7 @@ import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; import org.bukkit.command.CommandMap; +import org.bukkit.plugin.RegisteredServiceProvider; import org.jetbrains.annotations.NotNull; import javax.script.ScriptEngine; @@ -83,13 +84,16 @@ public String getVersion() { @Override public boolean register() { String defaultEngine = ExpansionUtils.DEFAULT_ENGINE; + RegisteredServiceProvider servicesManager = Bukkit.getServer().getServicesManager().getRegistration(ScriptEngineManager.class); + ScriptEngineManager scriptEngineManager = servicesManager.getProvider(); + if (globalEngine == null) { try { - globalEngine = new ScriptEngineManager(null).getEngineByName(getString("engine", defaultEngine)); + globalEngine = scriptEngineManager.getEngineByName(getString("engine", defaultEngine)); } catch (NullPointerException ex) { ExpansionUtils.warnLog("Javascript engine type was invalid! Defaulting to '" + defaultEngine + "'", null); - globalEngine = new ScriptEngineManager(null).getEngineByName(defaultEngine); + globalEngine = scriptEngineManager.getEngineByName(defaultEngine); } } @@ -109,7 +113,7 @@ public boolean register() { if (debug) { ExpansionUtils.infoLog("Java version: " + System.getProperty("java.version")); - final ScriptEngineManager manager = new ScriptEngineManager(null); + final ScriptEngineManager manager = scriptEngineManager; final List factories = manager.getEngineFactories(); ExpansionUtils.infoLog("Displaying all script engine factories.", false); diff --git a/src/main/java/com/extendedclip/papi/expansion/javascript/cloud/GithubScriptManager.java b/src/main/java/com/extendedclip/papi/expansion/javascript/cloud/GithubScriptManager.java index 717594d5..25be3573 100644 --- a/src/main/java/com/extendedclip/papi/expansion/javascript/cloud/GithubScriptManager.java +++ b/src/main/java/com/extendedclip/papi/expansion/javascript/cloud/GithubScriptManager.java @@ -25,7 +25,6 @@ import com.extendedclip.papi.expansion.javascript.JavascriptPlaceholdersConfig; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; -import jdk.nashorn.api.scripting.ScriptUtils; import org.bukkit.Bukkit; import java.io.*; @@ -33,7 +32,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; -import java.util.logging.Level; import java.util.stream.Collectors; public class GithubScriptManager {