diff --git a/src/main/java/carpet/CarpetSettings.java b/src/main/java/carpet/CarpetSettings.java index 6a1ab764..1435dc56 100644 --- a/src/main/java/carpet/CarpetSettings.java +++ b/src/main/java/carpet/CarpetSettings.java @@ -413,20 +413,26 @@ public class CarpetSettings private static class ModulePermissionLevel extends Validator { @Override public String validate(ServerCommandSource source, ParsedRule currentRule, String newValue, String string) { - CarpetSettings.runPermissionLevel = SettingsManager.getCommandLevel(newValue); + int permissionLevel = SettingsManager.getCommandLevel(newValue); + if (source != null && !source.hasPermissionLevel(permissionLevel)) + return null; + CarpetSettings.runPermissionLevel = permissionLevel; + CarpetServer.settingsManager.notifyPlayersCommandsChanged(); return newValue; } @Override - public String description() { return "Also controls permission level of commands executed via `run()`";} + public String description() { return "When changing the rule, you must at least have the permission level you are trying to give it";} } @Rule( desc = "Enables restrictions for arbitrary code execution with scarpet", extra = { "Users that don't have this permission level", - "won't be able to load apps or /script run" + "won't be able to load apps or /script run.", + "It is also the permission level apps will", + "have when running commands with run()" }, - category = {COMMAND, SCARPET}, - validate = ModulePermissionLevel.class + category = {SCARPET}, + validate = {Validator._COMMAND_LEVEL_VALIDATOR.class, ModulePermissionLevel.class} ) public static String commandScriptACE = "ops";