Crie um cooldown para cada jogador!
Confira o código:
package br.com.seuplugin; import java.util.HashMap; import org.bukkit.Bukkit; import org.bukkit.plugin.Plugin; /**Classe para banir temporáriamente um player, baseado no nome do player, e em segundos. * @author FabioZumbi12 * */ public class TempBan { static HashMap<String,Integer> tempban = new HashMap<String,Integer>(); /**Tempbane um player. Use esse método no seu comando. * @param p Nome do player * @param tempo Tempo do ban em segundos. * @param pl instancia do seu plugin. * @return true se o player ainda não foi banido e foi banido agora. Ou false se ele ja estava tempbanido. */ public static boolean addTempBan(String p, int tempo, Plugin pl){ if (!isTempBanned(p)){ int taskId = runTempban(p, tempo, pl); tempban.put(p, taskId); return true; } return false; } /**Adiciona o player á lista de tempbanidos. Use esse método no seu comando. * Irá retornar true se o player ainda não tiver banido, ou false se ja tiver banido. Bom para enviar mensagem dizendo que o player ja ta banido. * @param p Nome do player * @param pl Instancia do seu plugin. * @return true se ja estiver banido e foi desbanido, ou false se o player não estava tempbanido. */ public static boolean delTempBan(String p, Plugin pl){ if (isTempBanned(p)){ Bukkit.getScheduler().cancelTask(tempban.get(p)); tempban.remove(p); return true; } return false; } private static int runTempban(final String p, int tempo, final Plugin pl){ int taskid = Bukkit.getScheduler().scheduleSyncDelayedTask(pl, new Runnable() { public void run() { if (isTempBanned(p)){ delTempBan(p, pl); } } },tempo*20); return taskid; } /**Verifica se o player ta banido. * Use esse metodo ao player se logar, para impedi-lo de se logar se tiver banido. * @param p Nome do player * @return true se tiver, false se não tiver banido */ public static boolean isTempBanned(String p){ return tempban.containsKey(p); } }
Classe Exemplo ( De Uso ) :
@Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { // - /comando <player> <tempo> if (args.length == 2){ TempBan.addTempBan(args[0], Integer.parseInt(args[1], plugin.getInstance())); } return true; } @EventHandler public void onPreLogin(AsyncPlayerPreLoginEvent e){ String p = e.getName(); if (TempBan.isTempBanned(p)){ e.setKickMessage("Você esta temporariamente banido!"); e.setLoginResult(Result.KICK_OTHER); } }
È isso, As Classes Pode Ser Usada Pra Tempban, Kits e etc ...
Créditos: FabioZumbi12