ConcurrentHashMaps (Bukkit CPS Counter) - PullRequest
       34

ConcurrentHashMaps (Bukkit CPS Counter)

0 голосов
/ 14 апреля 2020

Я пытаюсь обнаружить 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);
    }
}```
...