package tv.mineinthebox.essentials.events.ban;
import java.util.HashMap;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import tv.mineinthebox.essentials.xEssentials;
import tv.mineinthebox.essentials.enums.PermissionKey;
import tv.mineinthebox.essentials.interfaces.EventTemplate;
public class HumanSpamCommandEvent extends EventTemplate implements Listener {
private final HashMap<String, String> cmdmsg1 = new HashMap<String, String>();
private final HashMap<String, String> cmdmsg2 = new HashMap<String, String>();
public HumanSpamCommandEvent(xEssentials pl) {
super(pl, "HumanCommandSpam");
}
@EventHandler
public void slowcmdSpamCheck(PlayerCommandPreprocessEvent e) {
final Player p = (Player) e.getPlayer();
if(e.getMessage().startsWith("/") && !e.getPlayer().hasPermission(PermissionKey.IGNORE_HUMAN_SPAM.getPermission())) {
if(cmdmsg2.containsKey(e.getPlayer().getName())) {
if(cmdmsg2.get(e.getPlayer().getName()).equalsIgnoreCase(e.getMessage())) {
e.getPlayer().kickPlayer(pl.getConfiguration().getBanConfig().getHumanSpamBanMessage());
cmdmsg2.remove(e.getPlayer().getName());
} else {
cmdmsg2.remove(e.getPlayer().getName());
}
} else if(cmdmsg1.containsKey(e.getPlayer().getName())) {
if(cmdmsg1.get(e.getPlayer().getName()).equalsIgnoreCase(e.getMessage())) {
cmdmsg1.remove(e.getPlayer().getName());
cmdmsg2.put(e.getPlayer().getName(), e.getMessage());
sendMessage(e.getPlayer(), ChatColor.RED + "Warning if you post one more time the same message you will be kicked!");
} else {
cmdmsg1.put(e.getPlayer().getName(), e.getMessage());
}
} else {
cmdmsg1.put(e.getPlayer().getName(), e.getMessage());
}
Bukkit.getScheduler().scheduleSyncDelayedTask(pl, new Runnable() {
@Override
public void run() {
if(cmdmsg1.containsKey(p.getPlayer().getName())) {
cmdmsg1.remove(p.getPlayer().getName());
} else if(cmdmsg2.containsKey(p.getPlayer().getName())) {
cmdmsg2.remove(p.getPlayer().getName());
}
}
}, 300);
}
}
}