From 3374e3102fce8ed87623999d2fac84efcfdc6290 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Wed, 15 Dec 2021 17:19:32 -0700 Subject: [PATCH 1/3] retain online & whitelisted states when reloading servers --- .../java/us/ajg0702/queue/api/queues/QueueServer.java | 8 ++++++++ .../java/us/ajg0702/queue/common/QueueManagerImpl.java | 3 +++ .../us/ajg0702/queue/common/queues/QueueServerImpl.java | 5 +++++ 3 files changed, 16 insertions(+) diff --git a/api/src/main/java/us/ajg0702/queue/api/queues/QueueServer.java b/api/src/main/java/us/ajg0702/queue/api/queues/QueueServer.java index d80eb89..dba7633 100644 --- a/api/src/main/java/us/ajg0702/queue/api/queues/QueueServer.java +++ b/api/src/main/java/us/ajg0702/queue/api/queues/QueueServer.java @@ -256,6 +256,14 @@ public interface QueueServer { */ void addPlayer(AdaptedServer server); + /** + * Sets if this server is online. + * Note that this is overrided by the pinger, so if you set + * this, it will most likely be temporary + * @param online whether the server is online or not + */ + void setOnline(boolean online); + /** * elliot is bad diff --git a/common/src/main/java/us/ajg0702/queue/common/QueueManagerImpl.java b/common/src/main/java/us/ajg0702/queue/common/QueueManagerImpl.java index f9a7c6a..85afa69 100644 --- a/common/src/main/java/us/ajg0702/queue/common/QueueManagerImpl.java +++ b/common/src/main/java/us/ajg0702/queue/common/QueueManagerImpl.java @@ -49,6 +49,9 @@ public class QueueManagerImpl implements QueueManager { if(previousServer != null) { queueServer.setPaused(previousServer.isPaused()); queueServer.setLastSentTime(previousServer.getLastSentTime()); + queueServer.setOnline(previousServer.isOnline()); + queueServer.setWhitelisted(previousServer.isWhitelisted()); + queueServer.setWhitelistedPlayers(previousServer.getWhitelistedPlayers()); } result.add(queueServer); } 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 c4d4934..9ed1208 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 @@ -468,4 +468,9 @@ public class QueueServerImpl implements QueueServer { if(!pings.containsKey(server)) throw new IllegalArgumentException("Server is not in this group!"); pings.get(server).addPlayer(); } + + @Override + public void setOnline(boolean online) { + this.online = online; + } } From e07fb4cc51c9587afd3ab47d7519f1d411e5bcb4 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Wed, 15 Dec 2021 20:57:24 -0700 Subject: [PATCH 2/3] handle plugin messages async on bungee --- .../queue/platforms/bungeecord/BungeeQueue.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/BungeeQueue.java b/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/BungeeQueue.java index b37400c..e548178 100644 --- a/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/BungeeQueue.java +++ b/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/BungeeQueue.java @@ -3,6 +3,7 @@ package us.ajg0702.queue.platforms.bungeecord; import net.kyori.adventure.platform.bungeecord.BungeeAudiences; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.serializer.bungeecord.BungeeComponentSerializer; +import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.event.*; import net.md_5.bungee.api.plugin.Listener; @@ -30,6 +31,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +@SuppressWarnings("unused") public class BungeeQueue extends Plugin implements Listener, Implementation { private QueueMain main; @@ -106,7 +108,13 @@ public class BungeeQueue extends Plugin implements Listener, Implementation { if(!(e.getReceiver() instanceof ProxiedPlayer)) return; - main.getEventHandler().handleMessage(new BungeePlayer((ProxiedPlayer) e.getReceiver()), e.getData()); + ProxyServer.getInstance().getScheduler().runAsync(this, () -> + main.getEventHandler() + .handleMessage( + new BungeePlayer((ProxiedPlayer) e.getReceiver()), + e.getData() + ) + ); } @EventHandler From 8587f47d24714f2167157f5dad372bfef86db642 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Thu, 16 Dec 2021 09:44:28 -0700 Subject: [PATCH 3/3] fix `require-permission` not being respected in / commands --- .../commands/commands/SlashServer/SlashServerCommand.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/common/src/main/java/us/ajg0702/queue/commands/commands/SlashServer/SlashServerCommand.java b/common/src/main/java/us/ajg0702/queue/commands/commands/SlashServer/SlashServerCommand.java index c625e80..061e9d6 100644 --- a/common/src/main/java/us/ajg0702/queue/commands/commands/SlashServer/SlashServerCommand.java +++ b/common/src/main/java/us/ajg0702/queue/commands/commands/SlashServer/SlashServerCommand.java @@ -45,6 +45,10 @@ public class SlashServerCommand extends BaseCommand { sender.sendMessage(getMessages().getComponent("errors.player-only")); return; } + if(main.getConfig().getBoolean("require-permission") && !sender.hasPermission("ajqueue.queue."+args[0])) { + sender.sendMessage(getMessages().getComponent("noperm")); + return; + } main.getQueueManager().addToQueue(main.getPlatformMethods().senderToPlayer(sender), server); }