diff --git a/src/main/java/xyz/nucleoid/leukocyte/command/ProtectCommand.java b/src/main/java/xyz/nucleoid/leukocyte/command/ProtectCommand.java index eece851..a872c44 100644 --- a/src/main/java/xyz/nucleoid/leukocyte/command/ProtectCommand.java +++ b/src/main/java/xyz/nucleoid/leukocyte/command/ProtectCommand.java @@ -21,6 +21,7 @@ import xyz.nucleoid.leukocyte.command.argument.ProtectionRuleArgument; import xyz.nucleoid.leukocyte.command.argument.RoleArgument; import xyz.nucleoid.leukocyte.command.argument.RuleResultArgument; +import xyz.nucleoid.leukocyte.roles.PermissionAccessor; import xyz.nucleoid.leukocyte.rule.ProtectionRule; import xyz.nucleoid.leukocyte.rule.RuleResult; import xyz.nucleoid.leukocyte.shape.ProtectionShape; @@ -41,7 +42,7 @@ public static void register(CommandDispatcher dispatcher) { // @formatter:off dispatcher.register( literal("protect") - .requires(source -> source.hasPermissionLevel(4)) + .requires(source -> PermissionAccessor.INSTANCE.hasPermission(source, "leukocyte.commands", 4)) .then(literal("add") .then(argument("authority", StringArgumentType.string()) .executes(ProtectCommand::addAuthority) diff --git a/src/main/java/xyz/nucleoid/leukocyte/command/ShapeCommand.java b/src/main/java/xyz/nucleoid/leukocyte/command/ShapeCommand.java index 8cd6945..82fd411 100644 --- a/src/main/java/xyz/nucleoid/leukocyte/command/ShapeCommand.java +++ b/src/main/java/xyz/nucleoid/leukocyte/command/ShapeCommand.java @@ -14,6 +14,7 @@ import net.minecraft.util.Formatting; import xyz.nucleoid.leukocyte.Leukocyte; import xyz.nucleoid.leukocyte.command.argument.AuthorityArgument; +import xyz.nucleoid.leukocyte.roles.PermissionAccessor; import xyz.nucleoid.leukocyte.shape.ProtectionShape; import xyz.nucleoid.leukocyte.shape.ShapeBuilder; @@ -37,7 +38,7 @@ public static void register(CommandDispatcher dispatcher) { // @formatter:off dispatcher.register( literal("protect") - .requires(source -> source.hasPermissionLevel(4)) + .requires(source -> PermissionAccessor.INSTANCE.hasPermission(source, "leukocyte.commands", 4)) .then(literal("shape") .then(literal("start").executes(ShapeCommand::startShape)) .then(literal("stop").executes(ShapeCommand::stopShape)) diff --git a/src/main/java/xyz/nucleoid/leukocyte/roles/PermissionAccessor.java b/src/main/java/xyz/nucleoid/leukocyte/roles/PermissionAccessor.java index 5099cf4..d9312cf 100644 --- a/src/main/java/xyz/nucleoid/leukocyte/roles/PermissionAccessor.java +++ b/src/main/java/xyz/nucleoid/leukocyte/roles/PermissionAccessor.java @@ -2,6 +2,7 @@ import me.lucko.fabric.api.permissions.v0.Permissions; import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.network.ServerPlayerEntity; public interface PermissionAccessor { @@ -9,6 +10,8 @@ public interface PermissionAccessor { boolean hasPermission(ServerPlayerEntity player, String permission); + boolean hasPermission(ServerCommandSource source, String permission, int opLevel); + final class None implements PermissionAccessor { None() { } @@ -17,6 +20,11 @@ final class None implements PermissionAccessor { public boolean hasPermission(ServerPlayerEntity player, String permission) { return false; } + + @Override + public boolean hasPermission(ServerCommandSource source, String permission, int opLevel) { + return source.hasPermissionLevel(opLevel); + } } final class FabricPermissionsV0 implements PermissionAccessor { @@ -27,5 +35,10 @@ final class FabricPermissionsV0 implements PermissionAccessor { public boolean hasPermission(ServerPlayerEntity player, String permission) { return Permissions.check(player, permission); } + + @Override + public boolean hasPermission(ServerCommandSource source, String permission, int opLevel) { + return Permissions.check(source, permission, opLevel); + } } }