From 1b9c23e52da4c2a55d608404469adeb164f30ca0 Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Tue, 2 Aug 2016 14:29:41 +0200 Subject: [PATCH] Try to fix #831 --- .../xephi/authme/hooks/BungeeCordMessage.java | 5 ----- .../authme/listener/AuthMePlayerListener.java | 20 ++++++++++++++++++- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/main/java/fr/xephi/authme/hooks/BungeeCordMessage.java b/src/main/java/fr/xephi/authme/hooks/BungeeCordMessage.java index 62e7396d..7b736aad 100644 --- a/src/main/java/fr/xephi/authme/hooks/BungeeCordMessage.java +++ b/src/main/java/fr/xephi/authme/hooks/BungeeCordMessage.java @@ -7,14 +7,12 @@ import fr.xephi.authme.cache.auth.PlayerAuth; import fr.xephi.authme.cache.auth.PlayerCache; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.security.crypts.HashedPassword; -import fr.xephi.authme.settings.Settings; import fr.xephi.authme.util.BukkitService; import org.bukkit.entity.Player; import org.bukkit.plugin.messaging.PluginMessageListener; import javax.inject.Inject; - public class BungeeCordMessage implements PluginMessageListener { @Inject @@ -25,9 +23,6 @@ public class BungeeCordMessage implements PluginMessageListener { @Inject private PlayerCache playerCache; - - @Inject - private Settings settings; BungeeCordMessage() { } diff --git a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java index d79132b1..af97975c 100644 --- a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java +++ b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java @@ -206,6 +206,24 @@ public class AuthMePlayerListener implements Listener { // Important: the single session feature works if we use the low priority to the sync handler @EventHandler(priority = EventPriority.LOWEST) + public void onLoginSingleSession(PlayerLoginEvent event) { + if(event.getResult() != PlayerLoginEvent.Result.ALLOWED) { + return; + } + + final Player player = event.getPlayer(); + final String name = player.getName(); + + try { + onJoinVerifier.checkSingleSession(name); + } catch (FailedVerificationException e) { + event.setKickMessage(m.retrieveSingle(e.getReason(), e.getArgs())); + event.setResult(PlayerLoginEvent.Result.KICK_OTHER); + return; + } + } + + @EventHandler(priority = EventPriority.LOW) public void onPlayerLogin(PlayerLoginEvent event) { final Player player = event.getPlayer(); if (validationService.isUnrestricted(player.getName())) { @@ -221,7 +239,7 @@ public class AuthMePlayerListener implements Listener { try { // Fast stuff - onJoinVerifier.checkSingleSession(lowerName); + // onJoinVerifier.checkSingleSession(lowerName); onJoinVerifier.checkIsValidName(name); // Get the auth later as this may cause the single session check to fail