package com.minebans.minebansantispam.checks; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import com.minebans.minebansantispam.MineBansAntiSpam; import com.minebans.minebansantispam.data.PlayerData; public class PlayerMessageChecker implements Listener { private MineBansAntiSpam plugin; public PlayerMessageChecker(MineBansAntiSpam plugin){ this.plugin = plugin; } private boolean checkMessage(Player player, String message){ String playerName = player.getName(); if (!plugin.dataManager.gotDataFor(playerName)){ return false; } PlayerData playerData = plugin.dataManager.getPlayerData(playerName); if (player.getLocation().equals(playerData.joinLocation)){ player.sendMessage(ChatColor.RED + "You cannot send chat messages until you have left your join location"); return true; } if (message.replaceAll("[^a-zA-Z0-9]", "").equalsIgnoreCase(playerData.lastMessageCleaned)){ player.sendMessage(ChatColor.RED + "You cannot repeat your last message."); return true; } return false; } @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) public void onPlayerChat(AsyncPlayerChatEvent event){ if (this.checkMessage(event.getPlayer(), event.getMessage())){ event.setCancelled(true); } } @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) public void onPlayerCommand(PlayerCommandPreprocessEvent event){ if (this.checkMessage(event.getPlayer(), event.getMessage())){ event.setCancelled(true); } } }