diff --git a/src/main/java/fr/xephi/authme/listener/PlayerListener.java b/src/main/java/fr/xephi/authme/listener/PlayerListener.java index ae29a5fa4..dfe733bba 100644 --- a/src/main/java/fr/xephi/authme/listener/PlayerListener.java +++ b/src/main/java/fr/xephi/authme/listener/PlayerListener.java @@ -193,10 +193,9 @@ public class PlayerListener implements Listener { } } - @EventHandler(priority = EventPriority.LOW) + @EventHandler(priority = EventPriority.NORMAL) public void onPlayerJoin(PlayerJoinEvent event) { final Player player = event.getPlayer(); - teleportationService.teleportNewPlayerToFirstSpawn(player); management.performJoin(player); } @@ -206,7 +205,7 @@ public class PlayerListener implements Listener { // event caused by "logged in from another location". The nicer way, but only for Spigot, would be // to check in the AsyncPlayerPreLoginEvent. To support all servers, we use the less nice way. - @EventHandler(priority = EventPriority.HIGHEST) + @EventHandler(priority = EventPriority.LOW) public void onPlayerLogin(PlayerLoginEvent event) { final Player player = event.getPlayer(); final String name = player.getName(); @@ -239,6 +238,7 @@ public class PlayerListener implements Listener { } antiBot.handlePlayerJoin(player); + teleportationService.teleportNewPlayerToFirstSpawn(player); teleportationService.teleportOnJoin(player); } @@ -261,10 +261,12 @@ public class PlayerListener implements Listener { public void onPlayerKick(PlayerKickEvent event) { // Note #831: Especially for offline CraftBukkit, we need to catch players being kicked because of // "logged in from another location" and to cancel their kick - if (settings.getProperty(RestrictionSettings.FORCE_SINGLE_SESSION) - && event.getReason().contains("You logged in from another location")) { - event.setCancelled(true); - return; + if(settings.getProperty(RestrictionSettings.FORCE_SINGLE_SESSION)) { + String reason = event.getReason(); + if (reason.contains("You logged in from another location")) { + event.setCancelled(true); + return; + } } final Player player = event.getPlayer(); diff --git a/src/main/java/fr/xephi/authme/util/TeleportationService.java b/src/main/java/fr/xephi/authme/util/TeleportationService.java index 25f5b1d11..4b7c76557 100644 --- a/src/main/java/fr/xephi/authme/util/TeleportationService.java +++ b/src/main/java/fr/xephi/authme/util/TeleportationService.java @@ -72,7 +72,7 @@ public class TeleportationService implements Reloadable { return; } - if (settings.getProperty(TELEPORT_UNAUTHED_TO_SPAWN) || mustForceSpawnAfterLogin(player.getWorld().getName())) { + if (settings.getProperty(TELEPORT_UNAUTHED_TO_SPAWN)) { teleportToSpawn(player, playerCache.isAuthenticated(player.getName())); } } @@ -160,15 +160,10 @@ public class TeleportationService implements Reloadable { * @param event the event to emit and according to which to teleport */ private void performTeleportation(final Player player, final AbstractTeleportEvent event) { - bukkitService.scheduleSyncDelayedTask(new Runnable() { - @Override - public void run() { - bukkitService.callEvent(event); - if (player.isOnline() && isEventValid(event)) { - player.teleport(event.getTo()); - } - } - }); + bukkitService.callEvent(event); + if (player.isOnline() && isEventValid(event)) { + player.teleport(event.getTo()); + } } private static boolean isEventValid(AbstractTeleportEvent event) {