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
+20 -4

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);
});
scriptServer = new CarpetScriptServer();
scriptServer.loadAllWorldScripts();
MobAI.resetTrackers();
}
@@ -205,7 +205,7 @@ public class ScriptCommand
)))))))));
LiteralArgumentBuilder<ServerCommandSource> 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);
@@ -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<String> listAvailableModules()
public List<String> listAvailableModules(boolean includeBuiltIns)
{
List<String> 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");