From 242b4a240fb1c29add92d3835bdfbcd765648db6 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Thu, 29 Jun 2023 12:36:53 -0500 Subject: [PATCH] Added plus-level-fallback to allow some leveled permissions on ajQueuePlus to work without a supported permission plugin --- common/src/main/resources/config.yml | 10 ++++- .../logic/permissions/hooks/BuiltInHook.java | 38 ++++++++++++++++++- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/common/src/main/resources/config.yml b/common/src/main/resources/config.yml index 1025256..a9c6f07 100644 --- a/common/src/main/resources/config.yml +++ b/common/src/main/resources/config.yml @@ -350,6 +350,12 @@ include-server-switch-in-cooldown: false # If ajQueue is pinging your backend servers too often, raise this number minimum-ping-time: 1.0 +# In ajQueuePlus, if your permission plugin isn't yet supported, you can use this workaround to +# be able to use levels 1-10 for priority, or 15, 30, 60, and 120 for stayqueued +# If you want more levels than that, contact aj to add support for your permission plugin if possible. +# Does nothing if you are not on ajQueuePlus, or if you have a supported permission plugin +plus-level-fallback: false + # Should we print some extra stuff to the console that might help aj diagnose some issues? debug: false @@ -364,5 +370,5 @@ debug: false -# Dont touch this number please -config-version: 36 +# Don't touch this number please +config-version: 37 diff --git a/premium/src/main/java/us/ajg0702/queue/logic/permissions/hooks/BuiltInHook.java b/premium/src/main/java/us/ajg0702/queue/logic/permissions/hooks/BuiltInHook.java index 1ea1391..e134a03 100644 --- a/premium/src/main/java/us/ajg0702/queue/logic/permissions/hooks/BuiltInHook.java +++ b/premium/src/main/java/us/ajg0702/queue/logic/permissions/hooks/BuiltInHook.java @@ -5,6 +5,8 @@ import us.ajg0702.queue.common.QueueMain; import us.ajg0702.queue.api.premium.PermissionHook; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; public class BuiltInHook implements PermissionHook { @@ -26,9 +28,41 @@ public class BuiltInHook implements PermissionHook { @Override public List getPermissions(AdaptedPlayer player) { - if(main.getPlatformMethods().getImplementationName().equals("velocity")) { - return new ArrayList<>(); + if(main.getConfig().getBoolean("plus-level-fallback")) { + List hasPermissions = new ArrayList<>(); + for (String fallbackPermission : fallbackPermissions) { + if(player.hasPermission(fallbackPermission)) { + hasPermissions.add(fallbackPermission); + } + } + if(!main.getPlatformMethods().getImplementationName().equals("velocity")) { + hasPermissions.addAll(player.getPermissions()); + } + return hasPermissions; } + + + if(main.getPlatformMethods().getImplementationName().equals("velocity")) { + return Collections.emptyList(); + } + return player.getPermissions(); } + + private final List fallbackPermissions = Arrays.asList( + "ajqueue.priority.1", + "ajqueue.priority.2", + "ajqueue.priority.3", + "ajqueue.priority.4", + "ajqueue.priority.5", + "ajqueue.priority.6", + "ajqueue.priority.7", + "ajqueue.priority.8", + "ajqueue.priority.9", + "ajqueue.priority.10", + "ajqueue.stayqueued.15", + "ajqueue.stayqueued.30", + "ajqueue.stayqueued.60", + "ajqueue.stayqueued.120" + ); }