From 25e692eb50090be646b8eaa5582aed24f76cd7ac Mon Sep 17 00:00:00 2001 From: Vaan1310 <61906290+Intybyte@users.noreply.github.com> Date: Sat, 22 Feb 2025 17:28:34 +0100 Subject: [PATCH] Feature/pipe or permissions (#418) * Add pipe OR handling for permissions --- .../co/aikar/commands/CommandManager.java | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/co/aikar/commands/CommandManager.java b/core/src/main/java/co/aikar/commands/CommandManager.java index 4eb16e2b..6dccfe64 100644 --- a/core/src/main/java/co/aikar/commands/CommandManager.java +++ b/core/src/main/java/co/aikar/commands/CommandManager.java @@ -329,12 +329,29 @@ public abstract class CommandManager< if (permission == null || permission.isEmpty()) { return true; } - for (String perm : ACFPatterns.COMMA.split(permission)) { - if (!perm.isEmpty() && !issuer.hasPermission(perm)) { - return false; + + //handle commas as an AND operation + if (permission.contains(",")) { + for (String perm : ACFPatterns.COMMA.split(permission)) { + if (!perm.isEmpty() && !issuer.hasPermission(perm)) { + return false; + } } + return true; } - return true; + + //handle pipe as an OR operation + if (permission.contains("|")) { + for (String perm : ACFPatterns.PIPE.split(permission)) { + if (!perm.isEmpty() && issuer.hasPermission(perm)) { + return true; + } + } + return false; + } + + //if none are used just test the permission itself + return issuer.hasPermission(permission); } public synchronized RootCommand getRootCommand(@NotNull String cmd) {