diff --git a/src/main/java/cn/hamster3/mc/plugin/script/HamsterScriptPlugin.java b/src/main/java/cn/hamster3/mc/plugin/script/HamsterScriptPlugin.java index efb5e11..85e9a0a 100644 --- a/src/main/java/cn/hamster3/mc/plugin/script/HamsterScriptPlugin.java +++ b/src/main/java/cn/hamster3/mc/plugin/script/HamsterScriptPlugin.java @@ -35,18 +35,6 @@ public class HamsterScriptPlugin extends JavaPlugin { @Override public void onEnable() { reload(); - codeFolder = new File(getDataFolder(), "code"); - if (codeFolder.mkdirs()) { - getLogger().info("创建代码文件夹: " + codeFolder.getAbsolutePath()); - try { - Files.copy( - Objects.requireNonNull(getResource("code/example.js")), - new File(codeFolder, "example.js").toPath(), - StandardCopyOption.REPLACE_EXISTING - ); - } catch (IOException ignored) { - } - } } private void reload() { @@ -76,6 +64,19 @@ public class HamsterScriptPlugin extends JavaPlugin { } } } + + codeFolder = new File(getDataFolder(), "code"); + if (codeFolder.mkdirs()) { + getLogger().info("创建代码文件夹: " + codeFolder.getAbsolutePath()); + try { + Files.copy( + Objects.requireNonNull(getResource("code/example.js")), + new File(codeFolder, "example.js").toPath(), + StandardCopyOption.REPLACE_EXISTING + ); + } catch (IOException ignored) { + } + } } @Override @@ -89,39 +90,6 @@ public class HamsterScriptPlugin extends JavaPlugin { return true; } switch (args[0]) { - case "eval": { - if (!enableEvalCommand) { - sender.sendMessage("§c当前不允许直接执行 JavaScript"); - return true; - } - if (args.length < 2) { - sender.sendMessage("§c请输入 JavaScript 代码内容"); - return true; - } - StringBuilder builder = new StringBuilder(); - for (int i = 1; i < args.length; i++) { - builder.append(args[i]).append(" "); - } - String code = builder.toString(); - long start = System.currentTimeMillis(); - try { - Bindings bindings = engine.createBindings(); - for (String simpleName : importClass.keySet()) { - bindings.put(simpleName, engine.get(simpleName)); - } - bindings.put("sender", sender); - Object eval = engine.eval(code, bindings); - long time = System.currentTimeMillis() - start; - sender.sendMessage("§aJavaScript 代码执行完成, 耗时: " + time + " 毫秒"); - sender.sendMessage("§a返回值: §f" + eval); - } catch (Exception e) { - long time = System.currentTimeMillis() - start; - sender.sendMessage("§cJavaScript 代码执行出错, 耗时: " + time + " 毫秒"); - sender.sendMessage("§c异常原因: " + e.getMessage()); - e.printStackTrace(); - } - break; - } case "run": { if (args.length < 2) { sender.sendMessage("§c请输入 JavaScript 文件名称"); @@ -165,6 +133,39 @@ public class HamsterScriptPlugin extends JavaPlugin { } break; } + case "eval": { + if (!enableEvalCommand) { + sender.sendMessage("§c当前不允许直接执行 JavaScript"); + return true; + } + if (args.length < 2) { + sender.sendMessage("§c请输入 JavaScript 代码内容"); + return true; + } + StringBuilder builder = new StringBuilder(); + for (int i = 1; i < args.length; i++) { + builder.append(args[i]).append(" "); + } + String code = builder.toString(); + long start = System.currentTimeMillis(); + try { + Bindings bindings = engine.createBindings(); + for (String simpleName : importClass.keySet()) { + bindings.put(simpleName, engine.get(simpleName)); + } + bindings.put("sender", sender); + Object eval = engine.eval(code, bindings); + long time = System.currentTimeMillis() - start; + sender.sendMessage("§aJavaScript 代码执行完成, 耗时: " + time + " 毫秒"); + sender.sendMessage("§a返回值: §f" + eval); + } catch (Exception e) { + long time = System.currentTimeMillis() - start; + sender.sendMessage("§cJavaScript 代码执行出错, 耗时: " + time + " 毫秒"); + sender.sendMessage("§c异常原因: " + e.getMessage()); + e.printStackTrace(); + } + break; + } case "reload": { reload(); sender.sendMessage("§a插件重载完成"); @@ -183,8 +184,8 @@ public class HamsterScriptPlugin extends JavaPlugin { public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) { if (args.length == 1) { List list = new ArrayList<>(); - list.add("eval"); list.add("run"); + list.add("eval"); list.add("reload"); String startWith = args[0].toLowerCase(); list.removeIf(o -> !o.startsWith(startWith)); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 56884e0..5f024af 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -5,8 +5,11 @@ enable-eval-command: false import: Math: java.lang.Math String: java.lang.String + UUID: java.util.UUID Base64: java.util.Base64 + ArrayList: java.util.ArrayList + Bukkit: org.bukkit.Bukkit Material: org.bukkit.Material ItemStack: org.bukkit.inventory.ItemStack