diff --git a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java index 892de53d..ca15b12f 100644 --- a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java +++ b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java @@ -39,6 +39,7 @@ import org.bukkit.event.inventory.InventoryOpenEvent; import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.event.player.AsyncPlayerPreLoginEvent; import org.bukkit.event.player.PlayerBedEnterEvent; +import org.bukkit.event.player.PlayerChatEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerFishEvent; @@ -55,6 +56,9 @@ import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.event.player.PlayerShearEntityEvent; import javax.inject.Inject; + +import java.util.Iterator; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.regex.Pattern; @@ -89,6 +93,7 @@ public class AuthMePlayerListener implements Listener { @Inject private ValidationService validationService; + /* private void handleChat(AsyncPlayerChatEvent event) { if (settings.getProperty(RestrictionSettings.ALLOW_CHAT)) { return; @@ -106,6 +111,7 @@ public class AuthMePlayerListener implements Listener { } } } + */ private void sendLoginOrRegisterMessage(final Player player) { bukkitService.runTaskAsynchronously(new Runnable() { @@ -144,6 +150,33 @@ public class AuthMePlayerListener implements Listener { sendLoginOrRegisterMessage(event.getPlayer()); } + // I think it should be sync! -sgdc3 + @SuppressWarnings("deprecation") + @EventHandler(ignoreCancelled = true, priority = EventPriority.LOW) + public void onPlayerNormalChat(PlayerChatEvent event) { + if (settings.getProperty(RestrictionSettings.ALLOW_CHAT)) { + return; + } + + final Player player = event.getPlayer(); + if (shouldCancelEvent(player)) { + event.setCancelled(true); + // TODO: a spambot calls this too often, too may threads checking if auth is available. + // Possible solution: add a cooldown. + // sendLoginOrRegisterMessage(player); + } else if (settings.getProperty(RestrictionSettings.HIDE_CHAT)) { + Set recipients = event.getRecipients(); + Iterator iter = recipients.iterator(); + if(iter.hasNext()) { + Player p = iter.next(); + if(PlayerCache.getInstance().isAuthenticated(p.getName())) { + iter.remove(); + } + } + } + } + + /* @EventHandler(ignoreCancelled = true, priority = EventPriority.NORMAL) public void onPlayerNormalChat(AsyncPlayerChatEvent event) { handleChat(event); @@ -168,6 +201,7 @@ public class AuthMePlayerListener implements Listener { public void onPlayerLowChat(AsyncPlayerChatEvent event) { handleChat(event); } + */ @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST) public void onPlayerMove(PlayerMoveEvent event) { diff --git a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener19.java b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener19.java index f5b073cc..6cfe854c 100644 --- a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener19.java +++ b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener19.java @@ -1,26 +1,24 @@ package fr.xephi.authme.listener; +/* import fr.xephi.authme.settings.NewSetting; import fr.xephi.authme.settings.SpawnLoader; -import fr.xephi.authme.settings.properties.RestrictionSettings; - -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.spigotmc.event.player.PlayerSpawnLocationEvent; - import javax.inject.Inject; +*/ +import org.bukkit.event.Listener; /** * Listener of player events for events introduced in Minecraft 1.9. */ public class AuthMePlayerListener19 implements Listener { + /* @Inject private SpawnLoader spawnLoader; @Inject private NewSetting settings; + */ /* WTF was that? We need to check all the settings before moving the player to the spawn! *