Помогите Не срабатывает триггер "EntityDamageEvent".

Mafia888

Активный участник
Пользователь
Баллы
61
Имя в Minecraft
NyashMyash99
Доброго времени суток, форумчане)

Вопрос не совсем в категорию "для новичков", но надеюсь что кто-то сталкивался с подобным и сможет подсказать решение...

Задача стояла тривиальная - отловить удар по сущности, однако в ходе дебага выяснилось, что все события урона по сущностям ( наследуемые от EntityDamageEvent, например
EntityDamageByEntityEvent ) просто не вызываются, встаёт вопрос - почему?
Код слушателя прикладывать смысла нет, даже на стандартном бродкасте сообщения не работает.

Проблема точно не в:
- Регистрации слушателя: EventHandler присутствует, класс регистрируются, другие типы событий в этом же классе работают.
- Флагах региона: Пробовал в том числе на чистом мире, где "__global__" не имеет посторонних флагов.
- Режиме игры: Пробовал ударить сущность во всех режимах.
- Типе сущности: Коровы не триггерят события точно так же, как и стойки для брони.
- Приоритетах слушателя: Пробовал все, от LOWEST до MONITOR, в том числе добавляя ignoreCancelled.

С похожей проблемой ( отсутствие вызова события ) я уже сталкивался, когда пытался отловить взрыв блока головой Визера, пока на сервере стоял "/gamerule mobGriefing false", но в текущей ситуации нельзя отменить урон по сущностям при помощи gamerule, так что вариант отпадает.

Версия сервера: Paper 1.16.5.
Плагины: Citizens, FAWE, HackedCore, HackedServer, HolographicDisplays, Multiverse-Core, Plugman, ProtocolLib, Vault, ViaVersion, ViaBackwards, WorldGuard, различные самописы.
 
Последнее редактирование:
Решение вопроса без гадания здесь возможно исключительно на опыте, если человек с подобным уже сталкивался и знает, где конкретно может быть проблема, ибо логичных решений со стороны кода нет.

Варианта два:
1. Это какая-то настройка сервера, про которую я не знаю --> кто-то с опытом настройки файлов серверов ответит быстрее, чем я буду перебирать 200 аргументов.
2. Это настройка какого-то плагина, следствие аналогичное ( хотя вариант маловероятный, настройки скорее всего стандартные ).
 
Ты пробовал хотя бы подобное ?
@EventHandler
public void handleEntityDamageByEntityEvent(EntityDamageByEntityEvent e) {
if(e.getDamager() instanceof Player)
((Player)e.getDamager()).sendMessage("1);
}
}
 
Ты пробовал хотя бы подобное ?
@EventHandler
public void handleEntityDamageByEntityEvent(EntityDamageByEntityEvent e) {
if(e.getDamager() instanceof Player)
((Player)e.getDamager()).sendMessage("1);
}
}

Полагаю, что за три часа дебага я не только это "хотя-бы" попробовал)
Mafia888 сказал(а):
Код слушателя прикладывать смысла нет, даже на стандартном бродкасте сообщения не работает
Mafia888 сказал(а):
EventHandler присутствует, класс регистрируются...
Mafia888 сказал(а):
...в ходе дебага выяснилось, что все события урона по сущностям ... не вызываются
 
Последнее редактирование:
Полагаю, что за три часа дебага я не только это "хотя-бы" попробовал)
Пересоздавать проект пробовал ? Попробуй сменить ядро на пару версий ниже/выше, в противном случае переустанови идею.
 
Доброго времени суток, форумчане)

Вопрос не совсем в категорию "для новичков", но надеюсь что кто-то сталкивался с подобным и сможет подсказать решение...

Задача стояла тривиальная - отловить удар по сущности, однако в ходе дебага выяснилось, что все события урона по сущностям ( наследуемые от EntityDamageEvent, например
EntityDamageByEntityEvent ) просто не вызываются, встаёт вопрос - почему?
Код слушателя прикладывать смысла нет, даже на стандартном бродкасте сообщения не работает.

Проблема точно не в:
- Регистрации слушателя: EventHandler присутствует, класс регистрируются, другие типы событий в этом же классе работают.
- Флагах региона: Пробовал в том числе на чистом мире, где "__global__" не имеет посторонних флагов.
- Режиме игры: Пробовал ударить сущность во всех режимах.
- Типе сущности: Коровы не триггерят события точно так же, как и стойки для брони.
- Приоритетах слушателя: Пробовал все, от LOWEST до MONITOR, в том числе добавляя ignoreCancelled.

С похожей проблемой ( отсутствие вызова события ) я уже сталкивался, когда пытался отловить взрыв блока головой Визера, пока на сервере стоял "/gamerule mobGriefing false", но в текущей ситуации нельзя отменить урон по сущностям при помощи gamerule, так что вариант отпадает.

Версия сервера: Paper 1.16.5.
Плагины: Citizens, FAWE, HackedCore, HackedServer, HolographicDisplays, Multiverse-Core, Plugman, ProtocolLib, Vault, ViaVersion, ViaBackwards, WorldGuard, различные самописы.
Проверь на пустом сервере с тем же ядром.
Если событие срабатывает - вероятно, дело в плагинах; бинарным поиском отыщи проблемный плагин (поставь половину - если все равно срабатывает, ставь другую; если перестало - удали половину из установленных; повторять до одного плагина).
Если не срабатывает - попробуй обновить ядро. Если после обновления все равно не работает - дело в коде. В таком случае попробуй закинуть слушатель урона в отдельный класс, а там уже по обстоятельствам нужно смотреть.
 
Назад
Верх