- Баллы
- 61
Здравствуйте. Пишу плагин на классы, и мне нужно делать проверку, было ли игроку уже отправлено данное сообщение, или ещё нет. Я решил использовать для этого HashMap, хотя ранее ими никогда не пользовался. Проблема в том, что когда я делаю проверку на существование ключа (я делал её разными способами, не только как показано ниже), то в итоге ничего не находит. Хотя по сути, после проверки, если ничего не находит, должны добавляться значения false для ключей, но это не работает. Возможно я что-то делаю не так? Заранее спасибо!
P.S: Я начал делать проверку изначально из-за того, что в консоли выдавало ошибку NullPointerExpection на строке, где я проверял, какое значение (true или false) у ключей.
P.S: Я начал делать проверку изначально из-за того, что в консоли выдавало ошибку NullPointerExpection на строке, где я проверял, какое значение (true или false) у ключей.
Код:
BukkitScheduler scheduler = getServer().getScheduler();
scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
@Override
public void run() {
List<Player> p = getServer().getWorld("world").getPlayers();
HashMap<String, Boolean> toldVN = new HashMap<String, Boolean>();
HashMap<String, Boolean> toldVM = new HashMap<String, Boolean>();
HashMap<String, Boolean> toldVD = new HashMap<String, Boolean>();
for (Player player : p) {
player.sendMessage("0 работает");
if(toldVN.get(player.getName()) != null && toldVM.get(player.getName()) != null && toldVD.get(player.getName()) != null) {
player.sendMessage("1 работает");
if(player.getWorld().getTime() >= 13500 && player.getWorld().getTime() <= 21500) {
player.sendMessage("2 работает");
if(toldVN.get(player.getName()) == false || toldVN.get(player.getName()) == null) {
player.sendMessage("3 работает");
player.sendMessage(ChatColor.DARK_RED + "" + ChatColor.BOLD + "Ночь наступает. Вампиры просыпаются.");
player.setAllowFlight(true);
toldVN.put(player.getName(), true);
if(toldVM.get(player.getName()) == true) toldVM.replace(player.getName(), false);
if(toldVD.get(player.getName()) == true) toldVD.replace(player.getName(), false);
}
} else if(player.getWorld().getTime() >=21501 && player.getWorld().getTime() <= 22500) {
if(toldVM.get(player.getName()) == false || toldVM.get(player.getName()) == null) {
player.sendMessage(ChatColor.DARK_RED + "" + ChatColor.BOLD + "Будьте осторожнее, скоро наступит день!");
if(toldVN.get(player.getName()) == true) toldVN.replace(player.getName(), false);
if(toldVD.get(player.getName()) == true) toldVD.replace(player.getName(), false);
}
} else {
if(toldVD.get(player.getName()) == false || toldVD.get(player.getName()) == null) {
player.sendMessage(ChatColor.DARK_RED + "" + ChatColor.BOLD + "День наступил. Вампиры устают.");
player.setAllowFlight(false);
if(toldVM.get(player.getName()) == true) toldVM.replace(player.getName(), false);
if(toldVN.get(player.getName()) == true) toldVN.replace(player.getName(), false);
}
}
} else if(toldVN.get(player.getName()) == null && toldVM.get(player.getName()) == null && toldVD.get(player.getName()) == null) {
toldVN.put(player.getName(), false);
toldVM.put(player.getName(), false);
toldVD.put(player.getName(), false);
}
}
}
}, 0L, 100L);
