From 12533a90f67fb8891eb802b76943e512ce8c617a Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Sun, 19 Jun 2016 10:40:20 +0200 Subject: [PATCH] Join/PreLogin event listener changes --- .../authme/listener/AuthMePlayerListener.java | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java index 84fff695..dfd519e1 100644 --- a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java +++ b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java @@ -192,31 +192,28 @@ public class AuthMePlayerListener implements Listener { @EventHandler(priority = EventPriority.LOW) public void onPlayerJoin(PlayerJoinEvent event) { final Player player = event.getPlayer(); - if (player != null) { - // Schedule login task so works after the prelogin - // (Fix found by Koolaid5000) - bukkitService.runTask(new Runnable() { - @Override - public void run() { - management.performJoin(player); - } - }); - } + management.performJoin(player); } // Note ljacqu 20160528: AsyncPlayerPreLoginEvent is not fired by all servers in offline mode // e.g. CraftBukkit does not. So we need to run crucial things in onPlayerLogin, too + + // Note sgdc3 20160619: No performance improvements if we do the same thing on the Sync method + // let's try to remove this, about the single session issue, + // i tried to use the low priority to the sync handler + + /* @EventHandler(priority = EventPriority.HIGHEST) public void onPreLogin(AsyncPlayerPreLoginEvent event) { final String name = event.getName().toLowerCase(); - final boolean isAuthAvailable = dataSource.isAuthAvailable(event.getName()); + //final boolean isAuthAvailable = dataSource.isAuthAvailable(event.getName()); try { // Potential performance improvement: make checkAntiBot not require `isAuthAvailable` info and use // "checkKickNonRegistered" as last -> no need to query the DB before checking antibot / name - onJoinVerifier.checkAntibot(name, isAuthAvailable); - onJoinVerifier.checkKickNonRegistered(isAuthAvailable); - onJoinVerifier.checkIsValidName(name); + // onJoinVerifier.checkAntibot(name, isAuthAvailable); + // onJoinVerifier.checkKickNonRegistered(isAuthAvailable); + // onJoinVerifier.checkIsValidName(name); // Note #760: Single session must be checked here - checking with PlayerLoginEvent is too late and // the first connection will have been kicked. This means this feature doesn't work on CraftBukkit. onJoinVerifier.checkSingleSession(name); @@ -225,8 +222,9 @@ public class AuthMePlayerListener implements Listener { event.setLoginResult(AsyncPlayerPreLoginEvent.Result.KICK_OTHER); } } + */ - @EventHandler(priority = EventPriority.HIGHEST) + @EventHandler(priority = EventPriority.LOW) public void onPlayerLogin(PlayerLoginEvent event) { final Player player = event.getPlayer(); if (Utils.isUnrestricted(player)) { @@ -242,6 +240,7 @@ public class AuthMePlayerListener implements Listener { final boolean isAuthAvailable = (auth != null); try { + onJoinVerifier.checkSingleSession(name); onJoinVerifier.checkAntibot(name, isAuthAvailable); onJoinVerifier.checkKickNonRegistered(isAuthAvailable); onJoinVerifier.checkIsValidName(name);