From 4af31679093eb2f1789256195ead511d57b18808 Mon Sep 17 00:00:00 2001 From: EarthCow <56940983+EarthCow@users.noreply.github.com> Date: Fri, 12 Jun 2026 22:31:05 -0400 Subject: [PATCH] Move connected state into CorePlayer class --- .../common/abstraction/CorePlayer.java | 1 + .../common/listeners/CorePlayerListener.java | 7 +++--- .../common/player/PlayerStateStore.java | 12 --------- .../common/player/PlayerStateStoreTest.java | 25 ------------------- 4 files changed, 4 insertions(+), 41 deletions(-) diff --git a/src/main/java/xyz/earthcow/networkjoinmessages/common/abstraction/CorePlayer.java b/src/main/java/xyz/earthcow/networkjoinmessages/common/abstraction/CorePlayer.java index 59a0600..87aeb30 100644 --- a/src/main/java/xyz/earthcow/networkjoinmessages/common/abstraction/CorePlayer.java +++ b/src/main/java/xyz/earthcow/networkjoinmessages/common/abstraction/CorePlayer.java @@ -11,6 +11,7 @@ @Getter @Setter public abstract class CorePlayer implements CoreCommandSender { // Fields + private boolean connected = false; private CoreBackendServer lastKnownConnectedServer; private boolean disconnecting = false; private String cachedLeaveMessage; diff --git a/src/main/java/xyz/earthcow/networkjoinmessages/common/listeners/CorePlayerListener.java b/src/main/java/xyz/earthcow/networkjoinmessages/common/listeners/CorePlayerListener.java index 20fa79b..02e61bf 100644 --- a/src/main/java/xyz/earthcow/networkjoinmessages/common/listeners/CorePlayerListener.java +++ b/src/main/java/xyz/earthcow/networkjoinmessages/common/listeners/CorePlayerListener.java @@ -87,7 +87,7 @@ public void onPreConnect(@NotNull CorePlayer player, @Nullable String previousSe public void onServerConnected(@NotNull CorePlayer player, @NotNull CoreBackendServer server, @Nullable CoreBackendServer previousServer) { plugin.runTaskAsync(() -> { - if (!stateStore.isConnected(player)) { + if (!player.isConnected()) { handleJoin(player, server); } else { boolean fromLimbo = plugin.hasLimbo() && previousServer == null; @@ -119,7 +119,7 @@ public void onDisconnect(@NotNull CorePlayer player) { private void handleJoin(@NotNull CorePlayer player, @NotNull CoreBackendServer server) { stateStore.loadData(player.getUniqueId(), player.getName()); - stateStore.setConnected(player, true); + player.setConnected(true); player.setLastKnownConnectedServer(server); PremiumVanish pv = plugin.getVanishAPI(); @@ -243,7 +243,7 @@ private boolean shouldSkipSwap(CorePlayer player, String from, String to, boolea private boolean shouldSkipLeave(CorePlayer player) { if (player.getCurrentServer() == null) return true; - if (!stateStore.isConnected(player)) { + if (!player.isConnected()) { plugin.getCoreLogger().debug("Skipping leave for " + player.getName() + " — not marked as connected"); return true; } @@ -306,7 +306,6 @@ private void fireLeaveEvent(CorePlayer player, String serverName, String message private void cleanup(CorePlayer player) { plugin.getPlayerManager().removePlayer(player.getUniqueId()); - stateStore.setConnected(player, false); leaveMessageCache.stopFor(player); } } diff --git a/src/main/java/xyz/earthcow/networkjoinmessages/common/player/PlayerStateStore.java b/src/main/java/xyz/earthcow/networkjoinmessages/common/player/PlayerStateStore.java index 914f7e8..0419078 100644 --- a/src/main/java/xyz/earthcow/networkjoinmessages/common/player/PlayerStateStore.java +++ b/src/main/java/xyz/earthcow/networkjoinmessages/common/player/PlayerStateStore.java @@ -26,7 +26,6 @@ public final class PlayerStateStore { private final Map previousServer = new ConcurrentHashMap<>(); private final Map silentState = new ConcurrentHashMap<>(); - private final Set onlinePlayers = ConcurrentHashMap.newKeySet(); private final Set noJoinMessage = ConcurrentHashMap.newKeySet(); private final Set noLeaveMessage = ConcurrentHashMap.newKeySet(); private final Set noSwapMessage = ConcurrentHashMap.newKeySet(); @@ -101,17 +100,6 @@ private Boolean determineSaveState(Set set, boolean ignoreByDefault, UUID return null; } - // --- Online tracking --- - - public boolean isConnected(CorePlayer player) { - return onlinePlayers.contains(player.getUniqueId()); - } - - public void setConnected(CorePlayer player, boolean connected) { - if (connected) onlinePlayers.add(player.getUniqueId()); - else onlinePlayers.remove(player.getUniqueId()); - } - // --- Previous server --- public String getFrom(CorePlayer player) { diff --git a/src/test/java/xyz/earthcow/networkjoinmessages/common/player/PlayerStateStoreTest.java b/src/test/java/xyz/earthcow/networkjoinmessages/common/player/PlayerStateStoreTest.java index 545f7ef..83e46d8 100644 --- a/src/test/java/xyz/earthcow/networkjoinmessages/common/player/PlayerStateStoreTest.java +++ b/src/test/java/xyz/earthcow/networkjoinmessages/common/player/PlayerStateStoreTest.java @@ -290,31 +290,6 @@ void getSuppressedPlayers_firstJoinMapsToJoinSet() { "FIRST_JOIN should return the same set as JOIN"); } - // ----------------------------------------------------------------------- - // isConnected / setConnected - // ----------------------------------------------------------------------- - - @Test - void setConnected_true_marksPlayerOnline() { - PlayerStateStore stateStore = new PlayerStateStore(plugin, config, store); - stateStore.setConnected(player, true); - assertTrue(stateStore.isConnected(player)); - } - - @Test - void setConnected_false_marksPlayerOffline() { - PlayerStateStore stateStore = new PlayerStateStore(plugin, config, store); - stateStore.setConnected(player, true); - stateStore.setConnected(player, false); - assertFalse(stateStore.isConnected(player)); - } - - @Test - void isConnected_unknownPlayer_returnsFalse() { - PlayerStateStore stateStore = new PlayerStateStore(plugin, config, store); - assertFalse(stateStore.isConnected(player)); - } - // ----------------------------------------------------------------------- // getFrom / setFrom // -----------------------------------------------------------------------