From 5046ddc5f3beae38db13afea9a8e5829d1648a11 Mon Sep 17 00:00:00 2001 From: EarthCow <56940983+EarthCow@users.noreply.github.com> Date: Sat, 30 May 2026 12:11:36 -0400 Subject: [PATCH 1/2] Velocity get CorePlayer directly & debug log identity check --- .../networkjoinmessages/velocity/VelocityMain.java | 2 +- .../velocity/listeners/PlayerListener.java | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/java/xyz/earthcow/networkjoinmessages/velocity/VelocityMain.java b/src/main/java/xyz/earthcow/networkjoinmessages/velocity/VelocityMain.java index 3ea6adb4..7cf69bc0 100644 --- a/src/main/java/xyz/earthcow/networkjoinmessages/velocity/VelocityMain.java +++ b/src/main/java/xyz/earthcow/networkjoinmessages/velocity/VelocityMain.java @@ -106,7 +106,7 @@ public void onProxyInitialization(ProxyInitializeEvent event) { velocityLogger.info("Successfully hooked into PremiumVanish!"); } - proxy.getEventManager().register(this, new PlayerListener(core.getCorePlayerListener())); + proxy.getEventManager().register(this, new PlayerListener(core.getCorePlayerListener(), velocityLogger)); registerCommands(); diff --git a/src/main/java/xyz/earthcow/networkjoinmessages/velocity/listeners/PlayerListener.java b/src/main/java/xyz/earthcow/networkjoinmessages/velocity/listeners/PlayerListener.java index 43ab428f..937fcc60 100644 --- a/src/main/java/xyz/earthcow/networkjoinmessages/velocity/listeners/PlayerListener.java +++ b/src/main/java/xyz/earthcow/networkjoinmessages/velocity/listeners/PlayerListener.java @@ -7,15 +7,18 @@ import xyz.earthcow.networkjoinmessages.common.abstraction.CorePlayer; import xyz.earthcow.networkjoinmessages.common.listeners.CorePlayerListener; import xyz.earthcow.networkjoinmessages.velocity.VelocityMain; +import xyz.earthcow.networkjoinmessages.velocity.abstraction.VelocityLogger; import xyz.earthcow.networkjoinmessages.velocity.abstraction.VelocityPlayer; import xyz.earthcow.networkjoinmessages.velocity.abstraction.VelocityServer; public class PlayerListener { private final CorePlayerListener corePlayerListener; + private final VelocityLogger logger; - public PlayerListener(CorePlayerListener corePlayerListener) { + public PlayerListener(CorePlayerListener corePlayerListener, VelocityLogger logger) { this.corePlayerListener = corePlayerListener; + this.logger = logger; } @Subscribe @@ -36,11 +39,12 @@ public void onServerConnected(ServerConnectedEvent event) { @Subscribe public void onDisconnect(DisconnectEvent event) { // Check that the player disconnected is not a duplicate user session (the same account tries to join the server while already joined) - CorePlayer corePlayer = VelocityMain.getInstance().getOrPutPlayer(new VelocityPlayer(event.getPlayer())); - if (corePlayer.getConnectionIdentity() != System.identityHashCode(event.getPlayer())) { + CorePlayer corePlayer = VelocityMain.getInstance().getPlayerManager().getPlayer(event.getPlayer().getUniqueId()); + if (corePlayer == null || corePlayer.getConnectionIdentity() != System.identityHashCode(event.getPlayer())) { + logger.debug("Ignoring disconnect event for " + (corePlayer == null ? "null" : corePlayer.getName()) + + " (" + event.getPlayer().getUsername() + ") - null or duplicate player identity"); return; } - corePlayerListener.onDisconnect(corePlayer); } } From 85513956aa2e20f02568f4afe11edc17d919abe2 Mon Sep 17 00:00:00 2001 From: EarthCow <56940983+EarthCow@users.noreply.github.com> Date: Sat, 30 May 2026 12:16:57 -0400 Subject: [PATCH 2/2] Bungee get CorePlayer directly & debug log identity check --- .../networkjoinmessages/bungee/BungeeMain.java | 2 +- .../bungee/listeners/PlayerListener.java | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/java/xyz/earthcow/networkjoinmessages/bungee/BungeeMain.java b/src/main/java/xyz/earthcow/networkjoinmessages/bungee/BungeeMain.java index 2398af88..bbd1391a 100644 --- a/src/main/java/xyz/earthcow/networkjoinmessages/bungee/BungeeMain.java +++ b/src/main/java/xyz/earthcow/networkjoinmessages/bungee/BungeeMain.java @@ -75,7 +75,7 @@ public void onEnable() { getProxy() .getPluginManager() - .registerListener(this, new PlayerListener(core.getCorePlayerListener())); + .registerListener(this, new PlayerListener(core.getCorePlayerListener(), bungeeLogger)); getProxy() .getPluginManager() diff --git a/src/main/java/xyz/earthcow/networkjoinmessages/bungee/listeners/PlayerListener.java b/src/main/java/xyz/earthcow/networkjoinmessages/bungee/listeners/PlayerListener.java index 2aca76fb..b9a49f67 100644 --- a/src/main/java/xyz/earthcow/networkjoinmessages/bungee/listeners/PlayerListener.java +++ b/src/main/java/xyz/earthcow/networkjoinmessages/bungee/listeners/PlayerListener.java @@ -8,6 +8,7 @@ import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.event.EventHandler; import xyz.earthcow.networkjoinmessages.bungee.BungeeMain; +import xyz.earthcow.networkjoinmessages.bungee.abstraction.BungeeLogger; import xyz.earthcow.networkjoinmessages.bungee.abstraction.BungeePlayer; import xyz.earthcow.networkjoinmessages.bungee.abstraction.BungeeServer; import xyz.earthcow.networkjoinmessages.common.abstraction.CorePlayer; @@ -16,9 +17,11 @@ public class PlayerListener implements Listener { private final CorePlayerListener corePlayerListener; + private final BungeeLogger logger; - public PlayerListener(CorePlayerListener corePlayerListener) { + public PlayerListener(CorePlayerListener corePlayerListener, BungeeLogger logger) { this.corePlayerListener = corePlayerListener; + this.logger = logger; } @EventHandler @@ -42,8 +45,10 @@ public void onServerConnected(ServerConnectedEvent e) { @EventHandler public void onDisconnect(PlayerDisconnectEvent event) { // Check that the player disconnected is not a duplicate user session (the same account tries to join the server while already joined) - CorePlayer corePlayer = BungeeMain.getInstance().getOrPutPlayer(new BungeePlayer(event.getPlayer())); - if (corePlayer.getConnectionIdentity() != System.identityHashCode(event.getPlayer())) { + CorePlayer corePlayer = BungeeMain.getInstance().getPlayerManager().getPlayer(event.getPlayer().getUniqueId()); + if (corePlayer == null || corePlayer.getConnectionIdentity() != System.identityHashCode(event.getPlayer())) { + logger.debug("Ignoring disconnect event for " + (corePlayer == null ? "null" : corePlayer.getName()) + + " (" + event.getPlayer().getName() + ") - null or duplicate player identity"); return; }