From 042e2f4a43ef72957eaa7c1181629f80e44e9c44 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Sat, 14 Jan 2023 10:24:57 -0700 Subject: [PATCH 01/14] Fixed offline-time not working (because it was miliseconds instead of seconds) --- .../ajg0702/queue/platforms/bungeecord/server/BungeeServer.java | 2 +- .../ajg0702/queue/platforms/velocity/server/VelocityServer.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/server/BungeeServer.java b/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/server/BungeeServer.java index c414a32..8361efd 100644 --- a/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/server/BungeeServer.java +++ b/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/server/BungeeServer.java @@ -75,7 +75,7 @@ public class BungeeServer implements AdaptedServer { private void markOffline(boolean debug, QueueLogger logger, CompletableFuture future, long sent, @Nullable Throwable e) { long lastOnline = lastSuccessfullPing == null ? 0 : lastSuccessfullPing.getFetchedTime(); - offlineTime = (int) Math.min(sent - lastOnline, Integer.MAX_VALUE); + offlineTime = (int) Math.min(sent - lastOnline, Integer.MAX_VALUE) / 1000; lastOffline = sent; diff --git a/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/server/VelocityServer.java b/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/server/VelocityServer.java index 7fd35df..e42268b 100644 --- a/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/server/VelocityServer.java +++ b/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/server/VelocityServer.java @@ -80,7 +80,7 @@ public class VelocityServer implements AdaptedServer { private void markOffline(boolean debug, QueueLogger logger, CompletableFuture future, long sent, Throwable e) { long lastOnline = lastSuccessfullPing == null ? 0 : lastSuccessfullPing.getFetchedTime(); - offlineTime = (int) Math.min(sent - lastOnline, Integer.MAX_VALUE); + offlineTime = (int) Math.min(sent - lastOnline, Integer.MAX_VALUE) / 1000; lastOffline = sent; From f92f99ec4e66ff4b1cfae6c17c0b97c960a5aeab Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Mon, 16 Jan 2023 09:36:51 -0700 Subject: [PATCH 02/14] Fixed double-sending players with a bypass permission --- .../us/ajg0702/queue/api/premium/Logic.java | 2 ++ .../queue/common/QueueManagerImpl.java | 11 +++++++++-- .../us/ajg0702/queue/logic/FreeLogic.java | 5 +++++ .../us/ajg0702/queue/logic/PremiumLogic.java | 19 +++++++++++-------- 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/api/src/main/java/us/ajg0702/queue/api/premium/Logic.java b/api/src/main/java/us/ajg0702/queue/api/premium/Logic.java index cdebdf4..774f645 100644 --- a/api/src/main/java/us/ajg0702/queue/api/premium/Logic.java +++ b/api/src/main/java/us/ajg0702/queue/api/premium/Logic.java @@ -67,4 +67,6 @@ public interface Logic { return highest; } + + boolean hasAnyBypass(AdaptedPlayer player, String server); } 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 af92142..2a1168d 100644 --- a/common/src/main/java/us/ajg0702/queue/common/QueueManagerImpl.java +++ b/common/src/main/java/us/ajg0702/queue/common/QueueManagerImpl.java @@ -246,8 +246,13 @@ public class QueueManagerImpl implements QueueManager { boolean sendInstant = server.isJoinable(player); boolean sendInstantp = list.size() <= 1 && server.isJoinable(player); boolean timeGood = !main.getConfig().getBoolean("check-last-player-sent-time") || server.getLastSentTime() > Math.floor(main.getTimeBetweenPlayers() * 1000); + boolean alwaysSendInstantly = main.getConfig().getStringList("send-instantly").contains(server.getName()); + boolean hasBypass = main.getLogic().hasAnyBypass(player, server.getName()); - if(main.getConfig().getStringList("send-instantly").contains(server.getName()) || (sendInstant && (sendInstantp && timeGood))) { + boolean sentInstantly = alwaysSendInstantly || (sendInstant && (sendInstantp && timeGood) && !hasBypass); + + Debug.info("should send instantly (" + sentInstantly + "): " + alwaysSendInstantly + " || (" + sendInstant + " && (" + sendInstantp + " && " + timeGood + ") && " + (!hasBypass) + ")"); + if(sentInstantly) { sendPlayers(server); if(!msgs.isEmpty("status.now-in-empty-queue")) { player.sendMessage(msgs.getComponent("status.now-in-empty-queue", @@ -573,7 +578,7 @@ public class QueueManagerImpl implements QueueManager { if(!server.isOnline()) continue; if(server.getQueue().size() == 0) continue; - Debug.info("should send instantly: " + !server.isGroup() + " && " + main.getConfig().getBoolean("send-all-when-back-online") + " && " + server.getServers().get(0).justWentOnline()); + Debug.info("should send when back online: " + !server.isGroup() + " && " + main.getConfig().getBoolean("send-all-when-back-online") + " && " + server.getServers().get(0).justWentOnline()); if(!server.isGroup() && main.getConfig().getBoolean("send-all-when-back-online") && server.getServers().get(0).justWentOnline()) { for(QueuePlayer p : server.getQueue()) { @@ -590,6 +595,7 @@ public class QueueManagerImpl implements QueueManager { if(selected.isFull() && !selected.canJoinFull(p.getPlayer())) continue; player.sendMessage(msgs.getComponent("status.sending-now", "SERVER:"+server.getAlias())); + Debug.info("Calling player.connect for " + player.getName() + "(send when back online)"); player.connect(selected); } continue; @@ -673,6 +679,7 @@ public class QueueManagerImpl implements QueueManager { server.setLastSentTime(System.currentTimeMillis()); + Debug.info("calling nextPlayer.connect on " + nextPlayer.getName()); nextPlayer.connect(selected); selected.addPlayer(); Debug.info(selected.getName()+" player count is now set to "+ selected.getPlayerCount()); diff --git a/common/src/main/java/us/ajg0702/queue/logic/FreeLogic.java b/common/src/main/java/us/ajg0702/queue/logic/FreeLogic.java index 4a94030..3feb389 100644 --- a/common/src/main/java/us/ajg0702/queue/logic/FreeLogic.java +++ b/common/src/main/java/us/ajg0702/queue/logic/FreeLogic.java @@ -27,4 +27,9 @@ public class FreeLogic implements Logic { public PermissionGetter getPermissionGetter() { return null; } + + @Override + public boolean hasAnyBypass(AdaptedPlayer player, String server) { + return false; + } } 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 f7c5e83..bd86144 100644 --- a/premium/src/main/java/us/ajg0702/queue/logic/PremiumLogic.java +++ b/premium/src/main/java/us/ajg0702/queue/logic/PremiumLogic.java @@ -37,14 +37,7 @@ public class PremiumLogic implements Logic { QueueLogger logger = main.getLogger(); boolean debug = main.getConfig().getBoolean("priority-queue-debug"); - if( - player.hasPermission("ajqueue.bypass") || - player.hasPermission("ajqueue.serverbypass."+ queueServer.getName()) || - player.hasPermission("ajqueue.joinfullandbypassserver."+ queueServer.getName()) || - player.hasPermission("ajqueue.joinfullandbypass") || - permissionGetter.hasContextBypass(player, queueServer.getName()) || - (main.isPremium() && main.getLogic().getPermissionGetter().hasUniqueFullBypass(player, queueServer.getName())) - ) { + if(hasAnyBypass(player, queueServer.getName())) { if(debug) { logger.info("[priority] "+player.getName()+" bypass"); } @@ -105,4 +98,14 @@ public class PremiumLogic implements Logic { public boolean playerDisconnectedTooLong(QueuePlayer player) { return player.getTimeSinceOnline() > player.getMaxOfflineTime()*1000L; } + @Override + public boolean hasAnyBypass(AdaptedPlayer player, String server) { + return player.hasPermission("ajqueue.bypass") || + player.hasPermission("ajqueue.serverbypass."+ server) || + player.hasPermission("ajqueue.joinfullandbypassserver."+ server) || + player.hasPermission("ajqueue.joinfullandbypass") || + permissionGetter.hasContextBypass(player, server) || + (QueueMain.getInstance().isPremium() && permissionGetter.hasUniqueFullBypass(player, server)); + } + } From e2f06b09020e83ff9f916ef28d8e4687dba7103d Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Mon, 16 Jan 2023 09:53:53 -0700 Subject: [PATCH 03/14] Fixed status.now-in-queue message being sent to players with bypass permissions --- .../main/java/us/ajg0702/queue/common/QueueManagerImpl.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 2a1168d..ba6ad62 100644 --- a/common/src/main/java/us/ajg0702/queue/common/QueueManagerImpl.java +++ b/common/src/main/java/us/ajg0702/queue/common/QueueManagerImpl.java @@ -249,11 +249,13 @@ public class QueueManagerImpl implements QueueManager { boolean alwaysSendInstantly = main.getConfig().getStringList("send-instantly").contains(server.getName()); boolean hasBypass = main.getLogic().hasAnyBypass(player, server.getName()); - boolean sentInstantly = alwaysSendInstantly || (sendInstant && (sendInstantp && timeGood) && !hasBypass); + boolean sentInstantly = alwaysSendInstantly || (sendInstant && (sendInstantp && timeGood)) || hasBypass; Debug.info("should send instantly (" + sentInstantly + "): " + alwaysSendInstantly + " || (" + sendInstant + " && (" + sendInstantp + " && " + timeGood + ") && " + (!hasBypass) + ")"); if(sentInstantly) { - sendPlayers(server); + if(!hasBypass) { + sendPlayers(server); + } if(!msgs.isEmpty("status.now-in-empty-queue")) { player.sendMessage(msgs.getComponent("status.now-in-empty-queue", "POS:"+pos, From 9e34e895e4c10328491aea48ecf4709ffac2d7e3 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Mon, 6 Feb 2023 10:44:09 -0700 Subject: [PATCH 04/14] =?UTF-8?q?Add=20a=20permission=20to=20the=20base=20?= =?UTF-8?q?manage=20command=20(so=20it=20doesn=E2=80=99t=20autocomplete)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ajg0702/queue/commands/commands/manage/ManageCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/main/java/us/ajg0702/queue/commands/commands/manage/ManageCommand.java b/common/src/main/java/us/ajg0702/queue/commands/commands/manage/ManageCommand.java index fddb210..b32e67a 100644 --- a/common/src/main/java/us/ajg0702/queue/commands/commands/manage/ManageCommand.java +++ b/common/src/main/java/us/ajg0702/queue/commands/commands/manage/ManageCommand.java @@ -60,7 +60,7 @@ public class ManageCommand extends BaseCommand { @Override public String getPermission() { - return null; + return "ajqueue.manage"; } @Override From 9ff42335088ca9144ead1f5bb37e6c79b77b25a9 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Thu, 9 Feb 2023 14:41:43 -0700 Subject: [PATCH 05/14] Fixed queues not being created for duplicated Bungee servers --- .../us/ajg0702/queue/platforms/bungeecord/BungeeMethods.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/BungeeMethods.java b/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/BungeeMethods.java index f8551ff..7ebbd6e 100644 --- a/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/BungeeMethods.java +++ b/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/BungeeMethods.java @@ -127,7 +127,7 @@ public class BungeeMethods implements PlatformMethods { for (ServerInfo serverInfo : proxyServer.getServers().values()) { boolean found = false; for(BungeeServer sv : new ArrayList<>(serverList)) { - if(sv.getHandle().equals(serverInfo)) { + if(sv.getHandle().equals(serverInfo) && sv.getName().equals(serverInfo.getName())) { found = true; break; } @@ -140,7 +140,7 @@ public class BungeeMethods implements PlatformMethods { for(BungeeServer sv : new ArrayList<>(serverList)) { boolean found = false; for (ServerInfo serverInfo : proxyServer.getServers().values()) { - if(sv.getHandle().equals(serverInfo)) { + if(sv.getHandle().equals(serverInfo) && sv.getName().equals(serverInfo.getName())) { found = true; break; } From 5343a31683b292fbe6aef0f9e01c0f20e15ca38b Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Sat, 11 Mar 2023 10:22:08 -0700 Subject: [PATCH 06/14] Fix occasional NPE on bungeecord (if a player is not on a server) --- .../ajg0702/queue/platforms/bungeecord/players/BungeePlayer.java | 1 + 1 file changed, 1 insertion(+) diff --git a/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/players/BungeePlayer.java b/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/players/BungeePlayer.java index dff7d5a..1627d2a 100644 --- a/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/players/BungeePlayer.java +++ b/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/players/BungeePlayer.java @@ -118,6 +118,7 @@ public class BungeePlayer implements AdaptedPlayer, Audience { @Override public String getServerName() { + if(handle.getServer() == null) return null; return handle.getServer().getInfo().getName(); } From a0f5903862a66f2437c230e11d5fd38656d8a2cc Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Sat, 11 Mar 2023 10:25:49 -0700 Subject: [PATCH 07/14] Fix possible error with sending plugin message without a player name --- .../main/java/us/ajg0702/queue/api/players/AdaptedPlayer.java | 3 ++- .../us/ajg0702/queue/platforms/bungeecord/BungeeMethods.java | 4 +++- .../us/ajg0702/queue/platforms/velocity/VelocityMethods.java | 4 +++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/api/src/main/java/us/ajg0702/queue/api/players/AdaptedPlayer.java b/api/src/main/java/us/ajg0702/queue/api/players/AdaptedPlayer.java index e66789e..2ed2baa 100644 --- a/api/src/main/java/us/ajg0702/queue/api/players/AdaptedPlayer.java +++ b/api/src/main/java/us/ajg0702/queue/api/players/AdaptedPlayer.java @@ -3,6 +3,7 @@ package us.ajg0702.queue.api.players; import net.kyori.adventure.audience.Audience; import net.kyori.adventure.text.Component; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import us.ajg0702.queue.api.server.AdaptedServer; import us.ajg0702.queue.api.util.Handle; @@ -76,7 +77,7 @@ public interface AdaptedPlayer extends Handle, Audience { * Gets the player's username * @return the player's username */ - String getName(); + @Nullable String getName(); /** * Kick a player from the proxy diff --git a/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/BungeeMethods.java b/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/BungeeMethods.java index 7ebbd6e..31da45b 100644 --- a/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/BungeeMethods.java +++ b/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/BungeeMethods.java @@ -35,9 +35,11 @@ public class BungeeMethods implements PlatformMethods { public void sendPluginMessage(AdaptedPlayer player, String channel, String... data) { Collection networkPlayers = ProxyServer.getInstance().getPlayers(); if (networkPlayers != null && !networkPlayers.isEmpty()) { + String playerName = player.getName(); + if(playerName == null) return; ByteArrayDataOutput out = ByteStreams.newDataOutput(); out.writeUTF(channel); - out.writeUTF(player.getName()); + out.writeUTF(playerName); for (String s : data) { out.writeUTF(s); diff --git a/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/VelocityMethods.java b/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/VelocityMethods.java index a7e5f05..1be9456 100644 --- a/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/VelocityMethods.java +++ b/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/VelocityMethods.java @@ -41,8 +41,10 @@ public class VelocityMethods implements PlatformMethods { if(player == null) return; Player velocityPlayer = ((VelocityPlayer) player).getHandle(); @SuppressWarnings("UnstableApiUsage") ByteArrayDataOutput out = ByteStreams.newDataOutput(); + String playerName = player.getName(); + if(playerName == null) return; out.writeUTF( channel ); - out.writeUTF(player.getName()); + out.writeUTF(playerName); for(String s : data) { out.writeUTF( s ); } From 014c9ec62f3e1d98a9c9b02d6cdbde07f4660a8d Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Mon, 20 Mar 2023 10:18:37 -0700 Subject: [PATCH 08/14] Fix memory leak related to queue command cooldowns --- .../src/main/java/us/ajg0702/queue/common/EventHandlerImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/common/src/main/java/us/ajg0702/queue/common/EventHandlerImpl.java b/common/src/main/java/us/ajg0702/queue/common/EventHandlerImpl.java index d15af1a..b6860d4 100644 --- a/common/src/main/java/us/ajg0702/queue/common/EventHandlerImpl.java +++ b/common/src/main/java/us/ajg0702/queue/common/EventHandlerImpl.java @@ -179,6 +179,7 @@ public class EventHandlerImpl implements EventHandler { } } main.getQueueManager().clear(player); + QueueCommand.cooldowns.remove(player); } @Override From ee042e31c715b60a4157b92b03e3a9d1fb28fce6 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Sat, 25 Mar 2023 16:50:41 -0700 Subject: [PATCH 09/14] Fixed manually creating PlayerSender not getting messages (spigot side /queue ) --- .../us/ajg0702/queue/api/QueueManager.java | 4 +- .../queue/commands/commands/PlayerSender.java | 177 ++++++++++++++++++ 2 files changed, 179 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/us/ajg0702/queue/api/QueueManager.java b/api/src/main/java/us/ajg0702/queue/api/QueueManager.java index ccc3062..fcc2c41 100644 --- a/api/src/main/java/us/ajg0702/queue/api/QueueManager.java +++ b/api/src/main/java/us/ajg0702/queue/api/QueueManager.java @@ -54,8 +54,8 @@ public interface QueueManager { String getQueuedName(AdaptedPlayer player); /** - * Checks servers that are in bungeecord and adds any it doesnt - * know about. + * Checks servers that are in the proxy and adds any it doesn't + * know about. (and removes any that no longer exist) * * Also creates/edits server groups */ diff --git a/common/src/main/java/us/ajg0702/queue/commands/commands/PlayerSender.java b/common/src/main/java/us/ajg0702/queue/commands/commands/PlayerSender.java index d640008..8f8ab69 100644 --- a/common/src/main/java/us/ajg0702/queue/commands/commands/PlayerSender.java +++ b/common/src/main/java/us/ajg0702/queue/commands/commands/PlayerSender.java @@ -1,5 +1,17 @@ package us.ajg0702.queue.commands.commands; +import net.kyori.adventure.audience.MessageType; +import net.kyori.adventure.bossbar.BossBar; +import net.kyori.adventure.identity.Identified; +import net.kyori.adventure.identity.Identity; +import net.kyori.adventure.inventory.Book; +import net.kyori.adventure.sound.Sound; +import net.kyori.adventure.sound.SoundStop; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.ComponentLike; +import net.kyori.adventure.title.Title; +import net.kyori.adventure.title.TitlePart; +import org.jetbrains.annotations.NotNull; import us.ajg0702.queue.api.commands.ICommandSender; import us.ajg0702.queue.api.players.AdaptedPlayer; @@ -32,4 +44,169 @@ public class PlayerSender implements ICommandSender { public AdaptedPlayer getHandle() { return handle; } + + @Override + public void sendMessage(@NotNull ComponentLike message) { + handle.sendMessage(message); + } + + @Override + public void sendMessage(@NotNull Identified source, @NotNull ComponentLike message) { + handle.sendMessage(source, message); + } + + @Override + public void sendMessage(@NotNull Identity source, @NotNull ComponentLike message) { + handle.sendMessage(source, message); + } + + @Override + public void sendMessage(@NotNull Component message) { + handle.sendMessage(message); + } + + @Override + public void sendMessage(@NotNull Identified source, @NotNull Component message) { + handle.sendMessage(source, message); + } + + @Override + public void sendMessage(@NotNull Identity source, @NotNull Component message) { + handle.sendMessage(source, message); + } + + @Override + public void sendMessage(@NotNull ComponentLike message, @NotNull MessageType type) { + handle.sendMessage(message, type); + } + + @Override + public void sendMessage(@NotNull Identified source, @NotNull ComponentLike message, @NotNull MessageType type) { + handle.sendMessage(source, message, type); + } + + @Override + public void sendMessage(@NotNull Identity source, @NotNull ComponentLike message, @NotNull MessageType type) { + handle.sendMessage(source, message, type); + } + + @Override + public void sendMessage(@NotNull Component message, @NotNull MessageType type) { + handle.sendMessage(message, type); + } + + @Override + public void sendMessage(@NotNull Identified source, @NotNull Component message, @NotNull MessageType type) { + handle.sendMessage(source, message, type); + } + + @Override + public void sendMessage(@NotNull Identity source, @NotNull Component message, @NotNull MessageType type) { + handle.sendMessage(source, message, type); + } + + @Override + public void sendActionBar(@NotNull ComponentLike message) { + handle.sendActionBar(message); + } + + @Override + public void sendActionBar(@NotNull Component message) { + handle.sendActionBar(message); + } + + @Override + public void sendPlayerListHeader(@NotNull ComponentLike header) { + handle.sendPlayerListHeader(header); + } + + @Override + public void sendPlayerListHeader(@NotNull Component header) { + handle.sendPlayerListHeader(header); + } + + @Override + public void sendPlayerListFooter(@NotNull ComponentLike footer) { + handle.sendPlayerListFooter(footer); + } + + @Override + public void sendPlayerListFooter(@NotNull Component footer) { + handle.sendPlayerListFooter(footer); + } + + @Override + public void sendPlayerListHeaderAndFooter(@NotNull ComponentLike header, @NotNull ComponentLike footer) { + handle.sendPlayerListHeaderAndFooter(header, footer); + } + + @Override + public void sendPlayerListHeaderAndFooter(@NotNull Component header, @NotNull Component footer) { + handle.sendPlayerListHeaderAndFooter(header, footer); + } + + @Override + public void showTitle(@NotNull Title title) { + handle.showTitle(title); + } + + @Override + public void sendTitlePart(@NotNull TitlePart part, @NotNull T value) { + handle.sendTitlePart(part, value); + } + + @Override + public void clearTitle() { + handle.clearTitle(); + } + + @Override + public void resetTitle() { + handle.resetTitle(); + } + + @Override + public void showBossBar(@NotNull BossBar bar) { + handle.showBossBar(bar); + } + + @Override + public void hideBossBar(@NotNull BossBar bar) { + handle.hideBossBar(bar); + } + + @Override + public void playSound(@NotNull Sound sound) { + handle.playSound(sound); + } + + @Override + public void playSound(@NotNull Sound sound, double x, double y, double z) { + handle.playSound(sound, x, y, z); + } + + @Override + public void stopSound(@NotNull Sound sound) { + handle.stopSound(sound); + } + + @Override + public void playSound(@NotNull Sound sound, Sound.@NotNull Emitter emitter) { + handle.playSound(sound, emitter); + } + + @Override + public void stopSound(@NotNull SoundStop stop) { + handle.stopSound(stop); + } + + @Override + public void openBook(Book.@NotNull Builder book) { + handle.openBook(book); + } + + @Override + public void openBook(@NotNull Book book) { + handle.openBook(book); + } } From ae2886ca9ff9ed39bf8fb72c7a5a6d120c81d522 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Sun, 26 Mar 2023 09:18:57 -0700 Subject: [PATCH 10/14] Delay proxy check by a few ticks to hopefully make it more reliable --- spigot/src/main/java/us/ajg0702/queue/spigot/SpigotMain.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spigot/src/main/java/us/ajg0702/queue/spigot/SpigotMain.java b/spigot/src/main/java/us/ajg0702/queue/spigot/SpigotMain.java index 443bf70..bb85f41 100644 --- a/spigot/src/main/java/us/ajg0702/queue/spigot/SpigotMain.java +++ b/spigot/src/main/java/us/ajg0702/queue/spigot/SpigotMain.java @@ -221,7 +221,7 @@ public class SpigotMain extends JavaPlugin implements PluginMessageListener,List @EventHandler public void onJoin(PlayerJoinEvent e) { if(hasProxy) return; - Bukkit.getScheduler().runTask(this, () -> sendMessage(e.getPlayer(), "ack", "")); + Bukkit.getScheduler().runTaskLater(this, () -> sendMessage(e.getPlayer(), "ack", ""), 5); } @EventHandler(priority = EventPriority.HIGH) From 90dee39068f7c693d9ced05f5d66dcb9794dc638 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Sun, 26 Mar 2023 09:20:43 -0700 Subject: [PATCH 11/14] If the proxy check fails, ajQueue will no longer "advertise" itself to players (it will just say "the queue plugin" instead of "ajQueue". It will still say "ajQueue" to players with permissions) --- .../src/main/java/us/ajg0702/queue/spigot/Commands.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/spigot/src/main/java/us/ajg0702/queue/spigot/Commands.java b/spigot/src/main/java/us/ajg0702/queue/spigot/Commands.java index 7acad6d..982ec0a 100644 --- a/spigot/src/main/java/us/ajg0702/queue/spigot/Commands.java +++ b/spigot/src/main/java/us/ajg0702/queue/spigot/Commands.java @@ -18,7 +18,14 @@ public class Commands implements CommandExecutor { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if(!pl.hasProxy() && pl.getAConfig().getBoolean("check-proxy-response")) { - sender.sendMessage(color("&cajQueue must also be installed on the proxy!&7 If it has been installed on the proxy, make sure it loaded correctly and try relogging.")); + if(sender instanceof Player) pl.sendMessage((Player) sender, "ack", ""); + sender.sendMessage( + color( + "&c" + + (sender.hasPermission("ajqueue.manage") ? "ajQueue" : "The queue plugin") + + " must also be installed on the proxy!&7 If it has been installed on the proxy, make sure it loaded correctly and try again." + ) + ); return true; } Player player = null; From defaa8021ff47c7835ebcac6c4020d61492bf7a5 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Tue, 28 Mar 2023 15:49:13 -0700 Subject: [PATCH 12/14] [nolist] Add issue template to give a warning when people create issues --- .github/issue_template.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .github/issue_template.md diff --git a/.github/issue_template.md b/.github/issue_template.md new file mode 100644 index 0000000..a6a21ef --- /dev/null +++ b/.github/issue_template.md @@ -0,0 +1,11 @@ + From e59494adf66bea74926f572e6f4d454770a48845 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Sat, 15 Apr 2023 09:24:44 -0700 Subject: [PATCH 13/14] [nolist] fix typo in issue template --- .github/issue_template.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/issue_template.md b/.github/issue_template.md index a6a21ef..331aa5f 100644 --- a/.github/issue_template.md +++ b/.github/issue_template.md @@ -2,10 +2,10 @@ !!! READ BEFORE CREATING A GITHUB ISSUE !!! -GitHub Issues are no the place to get support. Before creating an issue, make sure you have talked to aj and agree that it is appropriate for a GitHub Issue. +GitHub Issues are not the place to get support. Before creating an issue, make sure you have talked to aj and agree that it is appropiate for a GitHub Issue. Even if you are sure it is an issue with the plugin, it could still be a configuration issue. -GitHub Issues that have not been seen by aj before opening (and are not strictly related to development) will be closed with the message "this is not the place to get support" +GitHub Issues that have not been seen by aj before opening (and/or are not strictly about development) will be closed with the message "this is not the place to get support" --> From 126a3374d7e56588bc7a45cdfffd0bb656fba8b3 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Sat, 15 Apr 2023 09:32:50 -0700 Subject: [PATCH 14/14] [nolist] 2.4.0 --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index cd5e4b7..cbbd27b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -12,7 +12,7 @@ repositories { } allprojects { - version = "2.3.1" + version = "2.4.0" group = "us.ajg0702" plugins.apply("java")