added rule autoloadScripts to load scripts at startup.

This commit is contained in:
gnembon committed 2019-09-17 14:21:36 -03:00
1 parent 9050a8a0ef
commit b89bb3e503
3 files changed
+19 -3

No files matched your search

+1
View File
@@ -61,6 +61,7 @@ public class CarpetServer // static for now - easier to handle all around the co
e.onServerLoaded(server); e.onServerLoaded(server);
}); });
scriptServer = new CarpetScriptServer(); scriptServer = new CarpetScriptServer();
scriptServer.loadAllWorldScripts();
MobAI.resetTrackers(); MobAI.resetTrackers();
} }
@@ -205,7 +205,7 @@ public class ScriptCommand
))))))))); )))))))));
LiteralArgumentBuilder<ServerCommandSource> a = literal("load").requires( (player) -> player.hasPermissionLevel(2) ). LiteralArgumentBuilder<ServerCommandSource> a = literal("load").requires( (player) -> player.hasPermissionLevel(2) ).
then(argument("package", StringArgumentType.word()). then(argument("package", StringArgumentType.word()).
suggests( (cc, bb) -> suggestMatching(CarpetServer.scriptServer.listAvailableModules(),bb)). suggests( (cc, bb) -> suggestMatching(CarpetServer.scriptServer.listAvailableModules(true),bb)).
executes((cc) -> executes((cc) ->
{ {
boolean success = CarpetServer.scriptServer.addScriptHost(cc.getSource(), StringArgumentType.getString(cc, "package"), true); boolean success = CarpetServer.scriptServer.addScriptHost(cc.getSource(), StringArgumentType.getString(cc, "package"), true);
@@ -1,5 +1,6 @@
package carpet.script; package carpet.script;
import carpet.settings.CarpetSettings;
import carpet.CarpetServer; import carpet.CarpetServer;
import carpet.script.bundled.CameraPathModule; import carpet.script.bundled.CameraPathModule;
import carpet.script.bundled.FileModule; import carpet.script.bundled.FileModule;
@@ -51,6 +52,17 @@ public class CarpetScriptServer
stopAll = false; stopAll = false;
resetErrorSnooper(); resetErrorSnooper();
holyMoly = CarpetServer.minecraft_server.getCommandManager().getDispatcher().getRoot().getChildren().stream().map(CommandNode::getName).collect(Collectors.toSet()); 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,13 +89,16 @@ public class CarpetScriptServer
return null; return null;
} }
public List<String> listAvailableModules() public List<String> listAvailableModules(boolean includeBuiltIns)
{ {
List<String> moduleNames = new ArrayList<>(); List<String> moduleNames = new ArrayList<>();
for (ModuleInterface mi: bundledModuleData) if (includeBuiltIns)
{
for (ModuleInterface mi : bundledModuleData)
{ {
moduleNames.add(mi.getName()); moduleNames.add(mi.getName());
} }
}
File folder = CarpetServer.minecraft_server.getLevelStorage().resolveFile( File folder = CarpetServer.minecraft_server.getLevelStorage().resolveFile(
CarpetServer.minecraft_server.getLevelName(), "scripts"); CarpetServer.minecraft_server.getLevelName(), "scripts");
File[] listOfFiles = folder.listFiles(); File[] listOfFiles = folder.listFiles();