LivingHurtEvent

Версия Minecraft
1.7.10
101
0
Считываю статы предметов из лора и хочу нанести урон существу исходя из статов в лоре. Статы удачно считываются, проверено много раз. Но урон на сервере не меняется. Не работает именно event.ammount = dmg, хотя dmg вполне себе рабочее число.

Пробовал в сингле простую тычку сделать с event.ammount = 2 и всё сработало как должно.

Код:
@SubscribeEvent
    public void onPlayerDamage(LivingHurtEvent event)
    {
        if (event.source.getSourceOfDamage() instanceof EntityPlayer)
        {
            EntityPlayer p = (EntityPlayer) event.source.getSourceOfDamage();
            int dmg = DamageSystem.getDamage(p);
            event.ammount = dmg;
            System.out.println("Damage: " + event.ammount); //Выводит правильно, но урона наносит столько же, сколько и предмет сам по себе(меч 6, палка 1, рука 1 и т.д.).
        }
    }

Что я недочёл? Я так понимаю дело именно в сервере(мод на нём установлен).
 
101
0
svk2140 написал(а):
Конечно не меняется, лор то на клиенте :)

Нет ж. Я говорю, что моя строчка

Код:
System.out.println("Damage: " + event.ammount);

выводит в консоли сервера правильно

Код:
[17:35:40 INFO]: Damage: 10.0

То есть event.ammount меняется, но урон не увеличился сам.
 
2,505
81
397
И что, даже в рекурсию не зашло?
attackEntityFrom -> damageEntity -> LivingHurtEvent -> ...
Либо я плохо посмотрел


Отлаживай брекпоинтами. Посмотри, что возвращает ForgeHooks.onLivingHurt (это инициатор события) в методе damageEntity
 
608
5
15
;D

У меня с этим ивентом тоже плохие воспоминания. Когда я ставил e.ammount = 0 всё работало, а когда. допустим e.ammount /= 2, то хоть e.ammount и менялся, но урон не делился на 2. Магия.
 
Сверху