From a72e3f67c107b2cf0dd03191292bd559215c3d4b Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Thu, 21 Oct 2021 13:23:00 -0700 Subject: [PATCH] manually add one to player count when balancing players --- .../java/us/ajg0702/queue/api/queues/QueueServer.java | 5 +++++ .../us/ajg0702/queue/api/server/AdaptedServerPing.java | 5 +++++ .../java/us/ajg0702/queue/common/QueueManagerImpl.java | 1 + .../us/ajg0702/queue/common/queues/QueueServerImpl.java | 6 ++++++ .../platforms/bungeecord/server/BungeeServerPing.java | 9 ++++++++- .../platforms/velocity/server/VelocityServerPing.java | 9 ++++++++- 6 files changed, 33 insertions(+), 2 deletions(-) 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 6114f1e..c17b1d8 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 @@ -245,6 +245,11 @@ public interface QueueServer { */ boolean canJoinFull(AdaptedPlayer player); + /** + * Adds one to the player count for a server (temporarily until the next server ping) + */ + void addPlayer(AdaptedServer server); + /** * elliot is bad diff --git a/api/src/main/java/us/ajg0702/queue/api/server/AdaptedServerPing.java b/api/src/main/java/us/ajg0702/queue/api/server/AdaptedServerPing.java index 8257d97..4f5b9e8 100644 --- a/api/src/main/java/us/ajg0702/queue/api/server/AdaptedServerPing.java +++ b/api/src/main/java/us/ajg0702/queue/api/server/AdaptedServerPing.java @@ -28,4 +28,9 @@ public interface AdaptedServerPing extends Handle { * @return The maximum number of players that can join */ int getMaxPlayers(); + + /** + * Temporarly adds one player to the player count + */ + void addPlayer(); } 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 a49337b..dc336d5 100644 --- a/common/src/main/java/us/ajg0702/queue/common/QueueManagerImpl.java +++ b/common/src/main/java/us/ajg0702/queue/common/QueueManagerImpl.java @@ -608,6 +608,7 @@ public class QueueManagerImpl implements QueueManager { } server.setLastSentTime(System.currentTimeMillis()); nextPlayer.connect(selected); + server.addPlayer(selected); } } 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 2eb8fec..2cca6e6 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 @@ -453,4 +453,10 @@ public class QueueServerImpl implements QueueServer { player.hasPermission("ajqueue.joinfullandbypassserver."+name) || player.hasPermission("ajqueue.joinfullandbypass"); } + + @Override + public void addPlayer(AdaptedServer server) { + if(!pings.containsKey(server)) throw new IllegalArgumentException("Server is not in this group!"); + pings.get(server).addPlayer(); + } } diff --git a/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/server/BungeeServerPing.java b/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/server/BungeeServerPing.java index 9175344..381937a 100644 --- a/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/server/BungeeServerPing.java +++ b/platforms/bungeecord/src/main/java/us/ajg0702/queue/platforms/bungeecord/server/BungeeServerPing.java @@ -28,9 +28,11 @@ public class BungeeServerPing implements AdaptedServerPing { return desc.toPlainText(); } + int add = 0; + @Override public int getPlayerCount() { - return handle.getPlayers().getOnline(); + return handle.getPlayers().getOnline()+add; } @Override @@ -38,6 +40,11 @@ public class BungeeServerPing implements AdaptedServerPing { return handle.getPlayers().getMax(); } + @Override + public void addPlayer() { + add++; + } + @Override public ServerPing getHandle() { return handle; diff --git a/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/server/VelocityServerPing.java b/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/server/VelocityServerPing.java index acc57ae..ae5b6be 100644 --- a/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/server/VelocityServerPing.java +++ b/platforms/velocity/src/main/java/us/ajg0702/queue/platforms/velocity/server/VelocityServerPing.java @@ -22,9 +22,11 @@ public class VelocityServerPing implements AdaptedServerPing { return PlainTextComponentSerializer.plainText().serialize(handle.getDescriptionComponent()); } + int add = 0; + @Override public int getPlayerCount() { - return handle.getPlayers().map(ServerPing.Players::getOnline).orElse(0); + return handle.getPlayers().map(ServerPing.Players::getOnline).orElse(0)+add; } @Override @@ -32,6 +34,11 @@ public class VelocityServerPing implements AdaptedServerPing { return handle.getPlayers().map(ServerPing.Players::getMax).orElse(0); } + @Override + public void addPlayer() { + add++; + } + @Override public ServerPing getHandle() { return handle;