From b89bb3e503cdc4d52b02f3b5f45fe90c4e0eae0a Mon Sep 17 00:00:00 2001 From: gnembon Date: Tue, 17 Sep 2019 14:21:36 -0300 Subject: [PATCH] added rule autoloadScripts to load scripts at startup. --- src/main/java/carpet/CarpetServer.java | 1 + .../java/carpet/commands/ScriptCommand.java | 2 +- .../carpet/script/CarpetScriptServer.java | 21 ++++++++++++++++--- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/main/java/carpet/CarpetServer.java b/src/main/java/carpet/CarpetServer.java index f54a66f3..372657c2 100644 --- a/src/main/java/carpet/CarpetServer.java +++ b/src/main/java/carpet/CarpetServer.java @@ -61,6 +61,7 @@ public class CarpetServer // static for now - easier to handle all around the co e.onServerLoaded(server); }); scriptServer = new CarpetScriptServer(); + scriptServer.loadAllWorldScripts(); MobAI.resetTrackers(); } diff --git a/src/main/java/carpet/commands/ScriptCommand.java b/src/main/java/carpet/commands/ScriptCommand.java index 033a6dc1..347876f2 100644 --- a/src/main/java/carpet/commands/ScriptCommand.java +++ b/src/main/java/carpet/commands/ScriptCommand.java @@ -205,7 +205,7 @@ public class ScriptCommand ))))))))); LiteralArgumentBuilder a = literal("load").requires( (player) -> player.hasPermissionLevel(2) ). then(argument("package", StringArgumentType.word()). - suggests( (cc, bb) -> suggestMatching(CarpetServer.scriptServer.listAvailableModules(),bb)). + suggests( (cc, bb) -> suggestMatching(CarpetServer.scriptServer.listAvailableModules(true),bb)). executes((cc) -> { boolean success = CarpetServer.scriptServer.addScriptHost(cc.getSource(), StringArgumentType.getString(cc, "package"), true); diff --git a/src/main/java/carpet/script/CarpetScriptServer.java b/src/main/java/carpet/script/CarpetScriptServer.java index 142bfd6f..f9e5c602 100644 --- a/src/main/java/carpet/script/CarpetScriptServer.java +++ b/src/main/java/carpet/script/CarpetScriptServer.java @@ -1,5 +1,6 @@ package carpet.script; +import carpet.settings.CarpetSettings; import carpet.CarpetServer; import carpet.script.bundled.CameraPathModule; import carpet.script.bundled.FileModule; @@ -51,6 +52,17 @@ public class CarpetScriptServer stopAll = false; resetErrorSnooper(); holyMoly = CarpetServer.minecraft_server.getCommandManager().getDispatcher().getRoot().getChildren().stream().map(CommandNode::getName).collect(Collectors.toSet()); + } + + public void loadAllWorldScripts() + { + if (CarpetSettings.scriptsAutoload) + { + for (String moduleName: listAvailableModules(false)) + { + addScriptHost(CarpetServer.minecraft_server.getCommandSource(), moduleName, true); + } + } } @@ -77,12 +89,15 @@ public class CarpetScriptServer return null; } - public List listAvailableModules() + public List listAvailableModules(boolean includeBuiltIns) { List moduleNames = new ArrayList<>(); - for (ModuleInterface mi: bundledModuleData) + if (includeBuiltIns) { - moduleNames.add(mi.getName()); + for (ModuleInterface mi : bundledModuleData) + { + moduleNames.add(mi.getName()); + } } File folder = CarpetServer.minecraft_server.getLevelStorage().resolveFile( CarpetServer.minecraft_server.getLevelName(), "scripts");