Помогите Как работают ивенты?

Bezobrazie

Активный участник
Пользователь
Баллы
46
Имя в Minecraft
MySoulIsCry
У меня есть HashMap которая содержит в себе единицы урана который дал игрок. эта HashMap в отдельном классе менеджере, создаю экземпляр класса менеджера для дальнейшей работы с ним и этот же экземпляр регистрирую как Listener прописал в методах и ивентами пополнение мапы(если уже содержится значение с таким кличем тогда заменяем на сумму из мапы с дамагом который был сейчас если нет то тогда просто добавляю), но вот не задача HashMap при каждом нанесении дамага как будто обнуляется. Подумал что мб нельзя так регистрировать листенер и сделал отдельный класс с ним, класс менеджер же создаю в мейне и получаю в листенере через геттер, но все равно HashMap как будето пустая(тобишь урон в ней не прибавляется с каждым разом)
вот код метода который отвечает за получение дамага в менеджере(Ручаюсь что используется только 1 класс менеджера и больше он не создается)
PHP:
if(e.getEntity() == mag) {
            if(e.getDamager() instanceof Player) {
                Player damager = (Player) e.getDamager();
                if(clanManager.getClanPlayer(damager) != null) {
                    Clan clan = clanManager.getClanPlayer(damager);
                    if(damageMap.containsKey(clan)) {
                        damager.sendMessage("содержится");
                        Double damage = damageMap.get(clan) + e.getFinalDamage();
                        damageMap.replace(clan, damage);
                        damager.sendActionBar("Нанесен урон вашим кланом: " + damage);
                    }else {
                        damager.sendMessage("Не содержится");
                        damageMap.put(clan, e.getFinalDamage());
                        damager.sendActionBar("Нанесен урон вашим кланом: " + e.getFinalDamage());
                    }
                }
            }
        }
sendMessage сделал для дебага, при каждом уроне выводит "Не содержится"
 
Новый экземпляр Clan не создаётся при вызове getClanPlayer?
 
Блин точно это же ссылка. Использую ID клана теперь. Извиняюсь затупил
На будущее - HashMap и HashSet используют методы hashCode() и equals() у проверяемых объектов. Советую почитать, как оверрайдить их.
 
Назад
Верх