This commit is contained in:
extendedclip 2020-03-13 09:48:49 -04:00
parent ce18d99e84
commit d2d26e1e95
3 changed files with 219 additions and 180 deletions

View File

@ -2,7 +2,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com.extendedclip.papi.expansion.javascript</groupId> <groupId>com.extendedclip.papi.expansion.javascript</groupId>
<artifactId>javascript-expansion</artifactId> <artifactId>javascript-expansion</artifactId>
<version>1.5.2</version> <version>1.5.3</version>
<name>PAPI-Expansion-Javascript</name> <name>PAPI-Expansion-Javascript</name>
<description>PlaceholderAPI expansion for javascript placeholders</description> <description>PlaceholderAPI expansion for javascript placeholders</description>

View File

@ -21,6 +21,16 @@
package com.extendedclip.papi.expansion.javascript; package com.extendedclip.papi.expansion.javascript;
import com.extendedclip.papi.expansion.javascript.cloud.GithubScriptManager; import com.extendedclip.papi.expansion.javascript.cloud.GithubScriptManager;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineFactory;
import javax.script.ScriptEngineManager;
import me.clip.placeholderapi.expansion.Cacheable; import me.clip.placeholderapi.expansion.Cacheable;
import me.clip.placeholderapi.expansion.Configurable; import me.clip.placeholderapi.expansion.Configurable;
import me.clip.placeholderapi.expansion.PlaceholderExpansion; import me.clip.placeholderapi.expansion.PlaceholderExpansion;
@ -28,12 +38,6 @@ import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.command.CommandMap; import org.bukkit.command.CommandMap;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineFactory;
import javax.script.ScriptEngineManager;
import java.lang.reflect.Field;
import java.util.*;
public class JavascriptExpansion extends PlaceholderExpansion implements Cacheable, Configurable { public class JavascriptExpansion extends PlaceholderExpansion implements Cacheable, Configurable {
private ScriptEngine globalEngine = null; private ScriptEngine globalEngine = null;
@ -43,11 +47,10 @@ public class JavascriptExpansion extends PlaceholderExpansion implements Cacheab
private final String VERSION = getClass().getPackage().getImplementationVersion(); private final String VERSION = getClass().getPackage().getImplementationVersion();
private static JavascriptExpansion instance; private static JavascriptExpansion instance;
private boolean debug; private boolean debug;
private GithubScriptManager githubScripts; private GithubScriptManager githubManager;
private JavascriptExpansionCommands commands; private JavascriptExpansionCommands commands;
private CommandMap commandMap; private CommandMap commandMap;
public JavascriptExpansion() { public JavascriptExpansion() {
instance = this; instance = this;
try { try {
@ -85,7 +88,8 @@ public class JavascriptExpansion extends PlaceholderExpansion implements Cacheab
try { try {
globalEngine = new ScriptEngineManager().getEngineByName(getString("engine", "nashorn")); globalEngine = new ScriptEngineManager().getEngineByName(getString("engine", "nashorn"));
} catch (NullPointerException ex) { } catch (NullPointerException ex) {
getPlaceholderAPI().getLogger().warning("Javascript engine type was invalid! Defaulting to 'nashorn'"); getPlaceholderAPI().getLogger()
.warning("Javascript engine type was invalid! Defaulting to 'nashorn'");
globalEngine = new ScriptEngineManager().getEngineByName("nashorn"); globalEngine = new ScriptEngineManager().getEngineByName("nashorn");
} }
} }
@ -96,7 +100,6 @@ public class JavascriptExpansion extends PlaceholderExpansion implements Cacheab
if (debug) { if (debug) {
System.out.println("Java version: " + System.getProperty("java.version")); System.out.println("Java version: " + System.getProperty("java.version"));
final ScriptEngineManager manager = new ScriptEngineManager(); final ScriptEngineManager manager = new ScriptEngineManager();
final List<ScriptEngineFactory> factories = manager.getEngineFactories(); final List<ScriptEngineFactory> factories = manager.getEngineFactories();
System.out.println("Displaying all script engine factories."); System.out.println("Displaying all script engine factories.");
@ -112,10 +115,9 @@ public class JavascriptExpansion extends PlaceholderExpansion implements Cacheab
} }
} }
githubScripts = new GithubScriptManager(this);
if ((Boolean) get("github_script_downloads", false)) { if ((Boolean) get("github_script_downloads", false)) {
githubScripts.fetch(); githubManager = new GithubScriptManager(this);
githubManager.fetch();
} }
registerCommand(); registerCommand();
@ -130,9 +132,9 @@ public class JavascriptExpansion extends PlaceholderExpansion implements Cacheab
s.cleanup(); s.cleanup();
}); });
if (githubScripts != null) { if (githubManager != null) {
githubScripts.clear(); githubManager.clear();
githubScripts = null; githubManager = null;
} }
scripts.clear(); scripts.clear();
@ -153,7 +155,8 @@ public class JavascriptExpansion extends PlaceholderExpansion implements Cacheab
for (JavascriptPlaceholder script : scripts) { for (JavascriptPlaceholder script : scripts) {
if (identifier.startsWith(script.getIdentifier() + "_")) { if (identifier.startsWith(script.getIdentifier() + "_")) {
identifier = identifier.replace(script.getIdentifier() + "_", ""); identifier = identifier.replace(script.getIdentifier() + "_", "");
return !identifier.contains(",") ? script.evaluate(p, identifier) : script.evaluate(p, identifier.split(",")); return !identifier.contains(",") ? script.evaluate(p, identifier)
: script.evaluate(p, identifier.split(","));
} else if (identifier.equalsIgnoreCase(script.getIdentifier())) { } else if (identifier.equalsIgnoreCase(script.getIdentifier())) {
return script.evaluate(p); return script.evaluate(p);
} }
@ -171,7 +174,8 @@ public class JavascriptExpansion extends PlaceholderExpansion implements Cacheab
return true; return true;
} }
if (scripts.stream().filter(s -> s.getIdentifier().equalsIgnoreCase(p.getIdentifier())).findFirst().orElse(null) != null) { if (scripts.stream().filter(s -> s.getIdentifier().equalsIgnoreCase(p.getIdentifier()))
.findFirst().orElse(null) != null) {
return false; return false;
} }
@ -190,7 +194,8 @@ public class JavascriptExpansion extends PlaceholderExpansion implements Cacheab
} }
public JavascriptPlaceholder getJSPlaceholder(String identifier) { public JavascriptPlaceholder getJSPlaceholder(String identifier) {
return scripts.stream().filter(s -> s.getIdentifier().equalsIgnoreCase(identifier)).findFirst().orElse(null); return scripts.stream().filter(s -> s.getIdentifier().equalsIgnoreCase(identifier)).findFirst()
.orElse(null);
} }
public int getAmountLoaded() { public int getAmountLoaded() {
@ -229,16 +234,24 @@ public class JavascriptExpansion extends PlaceholderExpansion implements Cacheab
} }
public GithubScriptManager getGithubScriptManager() { public GithubScriptManager getGithubScriptManager() {
return githubScripts; return githubManager;
}
public void setGithubScriptManager(GithubScriptManager manager) {
this.githubManager = manager;
} }
private boolean unregisterCommand() { private boolean unregisterCommand() {
if (commandMap == null || commands == null) return false; if (commandMap == null || commands == null) {
return false;
}
return commands.unregister(commandMap); return commands.unregister(commandMap);
} }
private boolean registerCommand() { private boolean registerCommand() {
if (commandMap == null) return false; if (commandMap == null) {
return false;
}
commands = new JavascriptExpansionCommands(this); commands = new JavascriptExpansionCommands(this);
commandMap.register("papi" + commands.getName(), commands); commandMap.register("papi" + commands.getName(), commands);
return commands.isRegistered(); return commands.isRegistered();

View File

@ -22,6 +22,7 @@ package com.extendedclip.papi.expansion.javascript;
import com.extendedclip.papi.expansion.javascript.cloud.GithubScript; import com.extendedclip.papi.expansion.javascript.cloud.GithubScript;
import com.extendedclip.papi.expansion.javascript.cloud.GithubScriptManager; import com.extendedclip.papi.expansion.javascript.cloud.GithubScriptManager;
import me.clip.placeholderapi.PlaceholderAPIPlugin;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -161,6 +162,31 @@ public class JavascriptExpansionCommands extends Command {
return true; return true;
} }
case "enabled":
if (args.length < 3) {
msg(sender, "&4Incorrect usage! &f/" + command + " git enabled <true/false>");
return true;
}
Boolean enabled = Boolean.parseBoolean(args[2]);
PlaceholderAPIPlugin papi = expansion.getPlaceholderAPI();
papi.getConfig().set("expansions." + this.getName() + ".github_script_downloads", enabled);
papi.saveConfig();
papi.reloadConfig();
if (!enabled) {
if (expansion.getGithubScriptManager() != null) {
expansion.getGithubScriptManager().clear();
expansion.setGithubScriptManager(null);
}
} else {
if (expansion.getGithubScriptManager() == null) {
expansion.setGithubScriptManager(new GithubScriptManager(expansion));
}
expansion.getGithubScriptManager().fetch();
}
msg(sender, "&6Git script downloads set to: &e" + enabled);
return true;
default: { default: {
msg(sender, "&4Incorrect usage! &f/" + command + " &7for more help."); msg(sender, "&4Incorrect usage! &f/" + command + " &7for more help.");
return true; return true;