Получение сущностью урона от зелья - как отменить?

Версия Minecraft
1.16.5
API
Forge
198
1
24
Хочу сделать так, чтобы мой моб (зомби в костюме химзащиты) не получал урона от зелий. Но отмена события почему-то не работает.
Вот обработчик события:

Сущность получает урон::
@SubscribeEvent
public static void onHurt(LivingHurtEvent event) {
    /* Is this Hazmat Zombie? */
    if (event.getEntity() instanceof Zombie5) {
        if (event.getSource().isMagic()) {
            /* Does hazmat suit protect from potions? */
            if (ConfigHandler.GENERAL.hazmatSuitProtectsFromPotions.get()){
                event.setCanceled(true);
            }
        }
    }
}
Все условия вроде-бы совпадают, но зелье лечения всё равно наносит мобу урон...
 

sk9zist :l

Исправился
981
18
157
Тебе нужно отменять эвент LivingAttackEvent. Он больше подходит для твоей задачи

P.S. Можно по интересуюсь: зачем тебе 'static'? В методе эвента его не должно быть
 
198
1
24
P.S. Можно по интересуюсь: зачем тебе 'static'? В методе эвента его не должно быть

В учебнике:

Приступим к регистрации, для этого нужно: 1. В начале класса добавить аннотацию @Mod.EventBusSubscriber, должно получиться так:

@Mod.EventBusSubscriber
public class EventsHandler
{
//что-то делаем
}

2. Методы должны быть статичными, пример:
@SubscribeEvent
public static void onJoin(EntityJoinWorldEvent event)
{
//Что-то делаем
}
 
7,099
324
1,510
event.getSource().isMagic()
Ты уверен, что урон зельем исцеления по нежити является магическим?
Подебажь и посмотри, какой урон получает зомби при броске в него зелья исцеления

зачем тебе 'static'? В методе эвента его не должно быть
Потому что он использует @EventBusSubscriber
 
Сверху