From a67d84ef3f2b2ec5c28f09474ad7b422395352cb Mon Sep 17 00:00:00 2001 From: games647 Date: Thu, 18 Aug 2016 20:15:43 +0200 Subject: [PATCH] Fix race condition in bungee<->bukkit --- .../fastlogin/bukkit/listener/BungeeCordListener.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/BungeeCordListener.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/BungeeCordListener.java index 33293a46..4e900fc1 100644 --- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/BungeeCordListener.java +++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/BungeeCordListener.java @@ -42,7 +42,7 @@ public class BungeeCordListener implements PluginMessageListener { } @Override - public void onPluginMessageReceived(String channel, Player player, byte[] message) { + public void onPluginMessageReceived(String channel, final Player player, byte[] message) { if (!channel.equals(plugin.getName())) { return; } @@ -75,6 +75,7 @@ public class BungeeCordListener implements PluginMessageListener { BukkitLoginSession playerSession = new BukkitLoginSession(playerName, true); playerSession.setVerified(true); plugin.getSessions().put(id, playerSession); + Bukkit.getScheduler().runTaskAsynchronously(plugin, new ForceLoginTask(plugin, player)); } else if ("AUTO_REGISTER".equalsIgnoreCase(subchannel)) { Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { @Override @@ -82,10 +83,11 @@ public class BungeeCordListener implements PluginMessageListener { BukkitAuthPlugin authPlugin = plugin.getAuthPlugin(); try { //we need to check if the player is registered on Bukkit too - if (authPlugin != null && !authPlugin.isRegistered(playerName)) { + if (authPlugin == null || !authPlugin.isRegistered(playerName)) { BukkitLoginSession playerSession = new BukkitLoginSession(playerName, false); playerSession.setVerified(true); plugin.getSessions().put(id, playerSession); + new ForceLoginTask(plugin, player).run(); } } catch (Exception ex) { plugin.getLogger().log(Level.SEVERE, "Failed to query isRegistered", ex); @@ -93,8 +95,6 @@ public class BungeeCordListener implements PluginMessageListener { } }); } - - Bukkit.getScheduler().runTaskAsynchronously(plugin, new ForceLoginTask(plugin, player)); } } }