diff --git a/pom.xml b/pom.xml
index 335137c..c0a83d3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2,7 +2,7 @@
4.0.0
com.extendedclip.papi.expansion.javascript
javascript-expansion
- 1.5.4
+ 1.6.0-SNAPSHOT
PAPI-Expansion-Javascript
PlaceholderAPI expansion for javascript placeholders
@@ -21,13 +21,13 @@
org.spigotmc
spigot-api
- 1.15.2-R0.1-SNAPSHOT
+ 1.16.1-R0.1-SNAPSHOT
provided
me.clip
placeholderapi
- 2.10.5
+ 2.10.9
provided
@@ -37,7 +37,7 @@
org.apache.maven.plugins
maven-jar-plugin
- 3.0.2
+ 3.2.0
${name}
@@ -51,7 +51,7 @@
org.apache.maven.plugins
maven-compiler-plugin
- 3.7.0
+ 3.8.1
1.8
1.8
diff --git a/scripts/random_letter.js b/scripts/random_letter.js
index ee69880..b068d4a 100644
--- a/scripts/random_letter.js
+++ b/scripts/random_letter.js
@@ -4,5 +4,4 @@ function randomLetter() {
return String.fromCharCode(start + Math.floor(random));
}
-
randomLetter();
\ No newline at end of file
diff --git a/src/main/java/com/extendedclip/papi/expansion/javascript/ExpansionUtils.java b/src/main/java/com/extendedclip/papi/expansion/javascript/ExpansionUtils.java
new file mode 100644
index 0000000..dbd60b1
--- /dev/null
+++ b/src/main/java/com/extendedclip/papi/expansion/javascript/ExpansionUtils.java
@@ -0,0 +1,108 @@
+package com.extendedclip.papi.expansion.javascript;
+
+import jdk.nashorn.api.scripting.ScriptObjectMirror;
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.configuration.MemorySection;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+
+public class ExpansionUtils {
+
+ public static final String DEFAULT_ENGINE = "nashorn";
+ public static final String PREFIX = "[PAPI] [Javascript-Expansion] ";
+ private static final Logger logger = Bukkit.getLogger();
+
+ public static @NotNull String colorize(String s) {
+ return ChatColor.translateAlternateColorCodes('&', s);
+ }
+
+ public static void sendMsg(CommandSender sender, String... msg) {
+ sender.sendMessage(colorize(Arrays.stream(msg).filter(Objects::nonNull).collect(Collectors.joining("\n"))));
+ }
+
+ public static void warnLog(String log, Throwable throwable) {
+ warnLog(log, throwable, true);
+ }
+
+ public static void infoLog(final String log) {
+ infoLog(log, true);
+ }
+
+ public static void infoLog(String log, boolean canPrefix) {
+ String prefix = "";
+ if (canPrefix) prefix = PREFIX;
+ logger.info(colorize(prefix + log));
+ }
+
+ public static void warnLog(String log, Throwable throwable, boolean canPrefix) {
+ String prefix = "";
+ if (canPrefix) prefix = PREFIX;
+ if (throwable == null) {
+ logger.log(Level.WARNING, prefix + log);
+ } else logger.log(Level.WARNING, prefix + log, throwable);
+ }
+
+ public static void errorLog(String log, Throwable throwable) {
+ errorLog(log, throwable, true);
+ }
+
+ public static void errorLog(String log, Throwable throwable, boolean canPrefix) {
+ String prefix = "";
+ if (canPrefix) prefix = PREFIX;
+ if (throwable == null) {
+ logger.log(Level.SEVERE, prefix + log);
+ } else {
+ logger.log(Level.SEVERE, prefix + log, throwable);
+ }
+ }
+
+ // Only support for Nashorn engine!
+ protected static Object jsonToJava(Object jsObj) {
+ if (jsObj instanceof ScriptObjectMirror) {
+ ScriptObjectMirror jsObjectMirror = (ScriptObjectMirror) jsObj;
+ if (jsObjectMirror.isArray()) {
+ List