From 3ad858fc866d6ccd58d4f523946bd9582afdd88e Mon Sep 17 00:00:00 2001 From: B3CKDOOR Date: Sat, 20 Dec 2025 11:07:43 +0100 Subject: [PATCH] Add Bypass permission --- .../org/projectpersistence/queue/Queue.java | 31 ++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/projectpersistence/queue/Queue.java b/src/main/java/org/projectpersistence/queue/Queue.java index 269447c..5ae2457 100644 --- a/src/main/java/org/projectpersistence/queue/Queue.java +++ b/src/main/java/org/projectpersistence/queue/Queue.java @@ -109,7 +109,13 @@ public class Queue { public void onPostLogin(PostLoginEvent event) { Player player = event.getPlayer(); - // Check if player is admin - they bypass everything + // bypass permission skips queue entirely + if (player.hasPermission("queue.bypass")) { + connectToMainServer(player, true, true); + return; + } + + // Existing admin bypass – kept for compatibility if (player.hasPermission("queue.admin")) { connectToMainServer(player, true, true); return; @@ -147,6 +153,16 @@ public class Queue { if (serverName.equals(queueServerName)) { server.getScheduler() .buildTask(this, () -> { + // Bypass players go to front of queue if server is down + if (player.hasPermission("queue.bypass")) { + if (!mainServerOnline) { + addToQueueFront(player); + } else { + connectToMainServer(player, true, true); + } + return; + } + // Admins go to front of queue if server is down if (player.hasPermission("queue.admin")) { if (!mainServerOnline) { @@ -344,9 +360,16 @@ public class Queue { Optional nextPlayer = server.getPlayer(nextPlayerId); if (nextPlayer.isPresent()) { - // Check if player is admin - boolean isAdmin = nextPlayer.get().hasPermission("queue.admin"); - connectToMainServer(nextPlayer.get(), false, isAdmin); + boolean isAdmin = nextPlayer.get().hasPermission("queue.admin"); + boolean isBypass = nextPlayer.get().hasPermission("queue.bypass"); + + connectToMainServer( + nextPlayer.get(), + false, // not a priority pull + isAdmin, // true only for real admins + isBypass // true only for queue.bypass holders + ); + if (!isAdmin) { currentPlayers++; }