- Баллы
- 61
Здравствуйте. Я пишу плагин на различные классы, и в данный момент пишу класс "Колдуна". У него есть свои заклинания, которые можно использовать раз в какое-то время (например, 1 раз в 40 секунд). Когда игрок пишет заклинание, идёт проверка на то, существует ли игрок в ArrayList, и если нет, то накладывает на игрока эффект и добавляет в тот самый ArrayList. А после этого включает таймер, который через определённое время удалит игрока из ArrayList. Проблема в том, что после выполнения заклинания, я могу сразу же использовать его повторно, хотя время перед использованием команды ещё не прошло. Вот код:
Т.е при проверке ArrayList, игрок там не обнаруживается, и заклинание снова используется. В чём может быть проблема? Заранее спасибо
Код:
@EventHandler
public void magicWords(PlayerChatEvent c) {
Player p = (Player) c.getPlayer();
ArrayList<String> delays = new ArrayList<String>();
String lang = plugin.getConfig().getString("language");
File players = new File(plugin.getDataFolder() + File.separator + "players.yml");
FileConfiguration classes = YamlConfiguration.loadConfiguration(players);
List<String> wizards = classes.getStringList("wizards");
if(wizards.contains(p.getName())) {
if(c.getMessage().equalsIgnoreCase("avazeda")) {
if(!delays.contains(p.getName())) {
PotionEffect protection = new PotionEffect(PotionEffectType.DAMAGE_RESISTANCE, 300, 0);
p.addPotionEffect(protection);
delays.add(p.getName());
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
public void run() {
delays.remove(p.getName());
p.sendMessage("removed");
}
}, 800L);
} else {
if(lang.equals("en")) {
p.sendMessage(ChatColor.BLUE + "" + ChatColor.BOLD + "[JoClass] " + ChatColor.GOLD + "" + ChatColor.BOLD + "You should wait 40s before using this spell again");
} else if(lang.equals("ru")) {
p.sendMessage(ChatColor.BLUE + "" + ChatColor.BOLD + "[JoClass] " + ChatColor.GOLD + "" + ChatColor.BOLD + "Вы должны подождать 40сек перед тем, как использовать это заклинание снова");
}
}
}
}
}