From ac91ecc5f6c016ca486b4afdd109ddff54ee3fd2 Mon Sep 17 00:00:00 2001 From: Myles Date: Tue, 21 Aug 2018 18:25:41 +0100 Subject: [PATCH] Ensure client disconnected on Bungee before removing --- .../main/java/us/myles/ViaVersion/BungeePlugin.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/bungee/src/main/java/us/myles/ViaVersion/BungeePlugin.java b/bungee/src/main/java/us/myles/ViaVersion/BungeePlugin.java index a8a66d113..97e3a9c75 100644 --- a/bungee/src/main/java/us/myles/ViaVersion/BungeePlugin.java +++ b/bungee/src/main/java/us/myles/ViaVersion/BungeePlugin.java @@ -12,6 +12,7 @@ import us.myles.ViaVersion.api.Via; import us.myles.ViaVersion.api.ViaAPI; import us.myles.ViaVersion.api.command.ViaCommandSender; import us.myles.ViaVersion.api.configuration.ConfigurationProvider; +import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.platform.TaskId; import us.myles.ViaVersion.api.platform.ViaPlatform; import us.myles.ViaVersion.bungee.commands.BungeeCommand; @@ -167,6 +168,13 @@ public class BungeePlugin extends Plugin implements ViaPlatform, Listener { @EventHandler public void onQuit(PlayerDisconnectEvent e) { - Via.getManager().removePortedClient(e.getPlayer().getUniqueId()); + UserConnection userConnection = Via.getManager().getPortedPlayers().get(e.getPlayer().getUniqueId()); + if (userConnection != null) { + // Only remove if the connection is disconnected (eg. relogin) + if (userConnection.getChannel() == null || !userConnection.getChannel().isOpen()) { + Via.getManager().removePortedClient(e.getPlayer().getUniqueId()); + } + } + } }