Я пытаюсь обнаружить cps в bukkit, но он не работает должным образом, когда я нажимаю 5 раз в течение 5 секунд, что должно вывести, что мой cps был 1, это не так, я не получаю ошибок в консоли, Я попытался добавить вещи, которые посылали игроку сообщение, чтобы я мог видеть, что не выполнялось, и каждые 5 секунд он действительно выполнял, что это было 5 секунд, но ничего больше, поэтому каждые 5 секунд он пытается выполнить повторяющуюся задачу, Я никогда не использовал ConcurrentHashMap раньше, я предполагаю, что я использую ConcurrentHashMap неправильно, поэтому кто-то может сказать мне, что я сделал неправильно?
Вот код:
public class AutoClick implements Listener {
ConcurrentHashMap<Player, Double> clicksmap = new ConcurrentHashMap<Player, Double>();
@EventHandler
public void onInteract(PlayerInteractEvent e) {
Player p = (Player) e.getPlayer();
if (e.getAction() == Action.LEFT_CLICK_AIR || e.getAction() == Action.LEFT_CLICK_BLOCK) {
if (!(clicksmap.contains(p))) {
clicksmap.put(p, (double) 1);
} else {
Double c = clicksmap.get(p) + 1;
clicksmap.put(p, c);
}
}
}
@EventHandler
public void PlayerJoin(PlayerJoinEvent e) {
Player p = (Player) e.getPlayer();
Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(Main.plugin, new Runnable() {
public void run() {
if (clicksmap.contains(p)) {
double clicks = clicksmap.get(p);
double cps = clicks / 5;
p.sendMessage("Your CPS Was " + cps);
clicksmap.remove(p);
}
}
}, 0, 100);
}
}```