diff --git a/proxy/src/main/java/com/velocitypowered/proxy/VelocityServer.java b/proxy/src/main/java/com/velocitypowered/proxy/VelocityServer.java index 52a850e53..e0f250f9a 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/VelocityServer.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/VelocityServer.java @@ -291,9 +291,10 @@ public class VelocityServer implements ProxyServer { return true; } - public void unregisterConnection(ConnectedPlayer connection) { - connectionsByName.remove(connection.getUsername().toLowerCase(Locale.US), connection); - connectionsByUuid.remove(connection.getUniqueId(), connection); + public boolean unregisterConnection(ConnectedPlayer connection) { + boolean name = connectionsByName.remove(connection.getUsername().toLowerCase(Locale.US), connection); + boolean uuid = connectionsByUuid.remove(connection.getUniqueId(), connection); + return name && uuid; } @Override diff --git a/proxy/src/main/java/com/velocitypowered/proxy/connection/client/ConnectedPlayer.java b/proxy/src/main/java/com/velocitypowered/proxy/connection/client/ConnectedPlayer.java index e06cdacfa..d76070057 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/connection/client/ConnectedPlayer.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/connection/client/ConnectedPlayer.java @@ -432,8 +432,9 @@ public class ConnectedPlayer implements MinecraftConnectionAssociation, Player { if (connectedServer != null) { connectedServer.disconnect(); } - server.unregisterConnection(this); - server.getEventManager().fireAndForget(new DisconnectEvent(this)); + if (server.unregisterConnection(this)) { + server.getEventManager().fireAndForget(new DisconnectEvent(this)); + } } @Override