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