From 947ee780627bbf1f24215e09a404848a2398efac Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Sat, 30 Oct 2021 17:18:53 -0700 Subject: [PATCH] unique fulljoinandbypassserver --- .../ajg0702/queue/api/premium/PermissionGetter.java | 2 ++ .../ajg0702/queue/common/queues/QueueServerImpl.java | 4 +++- .../java/us/ajg0702/queue/logic/PremiumLogic.java | 3 ++- .../logic/permissions/PermissionGetterImpl.java | 12 ++++++++++++ 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/us/ajg0702/queue/api/premium/PermissionGetter.java b/api/src/main/java/us/ajg0702/queue/api/premium/PermissionGetter.java index 8960206..8fa62b9 100644 --- a/api/src/main/java/us/ajg0702/queue/api/premium/PermissionGetter.java +++ b/api/src/main/java/us/ajg0702/queue/api/premium/PermissionGetter.java @@ -13,4 +13,6 @@ public interface PermissionGetter { int getServerPriotity(String server, AdaptedPlayer player); boolean hasContextBypass(AdaptedPlayer player, String server); + + boolean hasUniqueFullBypass(AdaptedPlayer player, String server); } diff --git a/common/src/main/java/us/ajg0702/queue/common/queues/QueueServerImpl.java b/common/src/main/java/us/ajg0702/queue/common/queues/QueueServerImpl.java index 2cca6e6..337a3c2 100644 --- a/common/src/main/java/us/ajg0702/queue/common/queues/QueueServerImpl.java +++ b/common/src/main/java/us/ajg0702/queue/common/queues/QueueServerImpl.java @@ -451,7 +451,9 @@ public class QueueServerImpl implements QueueServer { player.hasPermission("ajqueue.joinfull") || player.hasPermission("ajqueue.joinfullserver."+name) || player.hasPermission("ajqueue.joinfullandbypassserver."+name) || - player.hasPermission("ajqueue.joinfullandbypass"); + player.hasPermission("ajqueue.joinfullandbypass") || + (main.isPremium() && main.getLogic().getPermissionGetter().hasUniqueFullBypass(player, name)) + ; } @Override diff --git a/premium/src/main/java/us/ajg0702/queue/logic/PremiumLogic.java b/premium/src/main/java/us/ajg0702/queue/logic/PremiumLogic.java index 4e34411..14dd359 100644 --- a/premium/src/main/java/us/ajg0702/queue/logic/PremiumLogic.java +++ b/premium/src/main/java/us/ajg0702/queue/logic/PremiumLogic.java @@ -41,7 +41,8 @@ public class PremiumLogic implements Logic { player.hasPermission("ajqueue.serverbypass."+server.getName()) || player.hasPermission("ajqueue.joinfullandbypassserver."+server.getName()) || player.hasPermission("ajqueue.joinfullandbypass") || - permissionGetter.hasContextBypass(player, server.getName()) + permissionGetter.hasContextBypass(player, server.getName()) || + (main.isPremium() && main.getLogic().getPermissionGetter().hasUniqueFullBypass(player, server.getName())) ) { if(debug) { logger.info("[priority] "+player.getName()+" bypass"); diff --git a/premium/src/main/java/us/ajg0702/queue/logic/permissions/PermissionGetterImpl.java b/premium/src/main/java/us/ajg0702/queue/logic/permissions/PermissionGetterImpl.java index c2b02d2..9cff1a4 100644 --- a/premium/src/main/java/us/ajg0702/queue/logic/permissions/PermissionGetterImpl.java +++ b/premium/src/main/java/us/ajg0702/queue/logic/permissions/PermissionGetterImpl.java @@ -69,6 +69,18 @@ public class PermissionGetterImpl implements PermissionGetter { return perms.contains("ajqueue.serverbypass."+server); } + @Override + public boolean hasUniqueFullBypass(AdaptedPlayer player, String server) { + if(player.hasPermission("ajqueue.joinfullandbypassserver."+server)) return true; + + if(getSelected() == null) { + return false; + } + List perms = getSelected().getPermissions(player); + perms.removeIf(s -> !s.startsWith("ajqueue.joinfullandbypassserver."+server)); + return perms.size() > 0; + } + private int getHighestPermission(AdaptedPlayer player, String prefix) { if(getSelected() == null) { return -1;