diff --git a/src/main/java/carpet/script/CarpetScriptServer.java b/src/main/java/carpet/script/CarpetScriptServer.java index e46f2f10..3a819ce4 100644 --- a/src/main/java/carpet/script/CarpetScriptServer.java +++ b/src/main/java/carpet/script/CarpetScriptServer.java @@ -159,7 +159,7 @@ public class CarpetScriptServer extends ScriptServer } } - Module globalModule = Carpet.fetchGlobalModule(name, allowLibraries); + Module globalModule = fetchGlobalModule(server, name, allowLibraries); if (globalModule != null) { return globalModule; @@ -179,6 +179,53 @@ public class CarpetScriptServer extends ScriptServer return null; } + public static @Nullable Module fetchGlobalModule(MinecraftServer server, String name, boolean allowLibraries) throws IOException + { + Path globalFolder = Carpet.fetchGlobalPath(server); + if (globalFolder == null) + { + return null; + } + if (!Files.exists(globalFolder)) + { + Files.createDirectories(globalFolder); + } + try (Stream folderWalker = Files.walk(globalFolder)) + { + Optional scriptPath = folderWalker + .filter(script -> script.getFileName().toString().equalsIgnoreCase(name + ".sc") || + (allowLibraries && script.getFileName().toString().equalsIgnoreCase(name + ".scl"))) + .findFirst(); + if (scriptPath.isPresent()) + { + return Module.fromPath(scriptPath.get()); + } + } + return null; + } + + public static void addGlobalModules(final MinecraftServer server, final List moduleNames, boolean includeBuiltIns) throws IOException + { + if (!includeBuiltIns) + { + return; + } + final Path globalScripts = Carpet.fetchGlobalPath(server); + if (globalScripts == null) { + return; + } + if (!Files.exists(globalScripts)) + { + Files.createDirectories(globalScripts); + } + try (Stream folderWalker = Files.walk(globalScripts, FileVisitOption.FOLLOW_LINKS)) + { + folderWalker + .filter(f -> f.toString().endsWith(".sc")) + .forEach(f -> moduleNames.add(f.getFileName().toString().replaceFirst("\\.sc$", "").toLowerCase(Locale.ROOT))); + } + } + public Module getRuleModule(String name) { for (Module moduleData : ruleModuleData) @@ -218,7 +265,7 @@ public class CarpetScriptServer extends ScriptServer .forEach(f -> moduleNames.add(f.getFileName().toString().replaceFirst("\\.sc$", "").toLowerCase(Locale.ROOT))); } - Carpet.addGlobalModules(moduleNames, includeBuiltIns); + addGlobalModules(server, moduleNames, includeBuiltIns); } catch (IOException e) diff --git a/src/main/java/carpet/script/external/Carpet.java b/src/main/java/carpet/script/external/Carpet.java index 9caa5e29..3830b676 100644 --- a/src/main/java/carpet/script/external/Carpet.java +++ b/src/main/java/carpet/script/external/Carpet.java @@ -147,49 +147,14 @@ public class Carpet return CarpetSettings.superSecretSetting; } - @Nullable - public static Module fetchGlobalModule(String name, boolean allowLibraries) throws IOException - { - if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) - { + public static @Nullable Path fetchGlobalPath(MinecraftServer server) { + if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) { Path globalFolder = FabricLoader.getInstance().getConfigDir().resolve("carpet/scripts"); - if (!Files.exists(globalFolder)) - { - Files.createDirectories(globalFolder); - } - try (Stream folderWalker = Files.walk(globalFolder)) - { - Optional scriptPath = folderWalker - .filter(script -> script.getFileName().toString().equalsIgnoreCase(name + ".sc") || - (allowLibraries && script.getFileName().toString().equalsIgnoreCase(name + ".scl"))) - .findFirst(); - if (scriptPath.isPresent()) - { - return Module.fromPath(scriptPath.get()); - } - } + return globalFolder; } return null; } - public static void addGlobalModules(final List moduleNames, boolean includeBuiltIns) throws IOException - { - if (includeBuiltIns && (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT)) - { - Path globalScripts = FabricLoader.getInstance().getConfigDir().resolve("carpet/scripts"); - if (!Files.exists(globalScripts)) - { - Files.createDirectories(globalScripts); - } - try (Stream folderWalker = Files.walk(globalScripts, FileVisitOption.FOLLOW_LINKS)) - { - folderWalker - .filter(f -> f.toString().endsWith(".sc")) - .forEach(f -> moduleNames.add(f.getFileName().toString().replaceFirst("\\.sc$", "").toLowerCase(Locale.ROOT))); - } - } - } - public static void assertRequirementMet(CarpetScriptHost host, String requiredModId, String stringPredicate) { VersionPredicate predicate;