Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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();
Expand Down Expand Up @@ -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;
}
Expand Down Expand Up @@ -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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ public final class PlayerStateStore {

private final Map<UUID, String> previousServer = new ConcurrentHashMap<>();
private final Map<UUID, Boolean> silentState = new ConcurrentHashMap<>();
private final Set<UUID> onlinePlayers = ConcurrentHashMap.newKeySet();
private final Set<UUID> noJoinMessage = ConcurrentHashMap.newKeySet();
private final Set<UUID> noLeaveMessage = ConcurrentHashMap.newKeySet();
private final Set<UUID> noSwapMessage = ConcurrentHashMap.newKeySet();
Expand Down Expand Up @@ -101,17 +100,6 @@ private Boolean determineSaveState(Set<UUID> 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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
// -----------------------------------------------------------------------
Expand Down
Loading