Урон

Версия Minecraft
1.12.2

sk9zist :l

Исправился
981
18
158
1) Как отменять весь урон, который приходиться получать игроку в различных случаях. Например, если отменять LivingHurtEvent - будет отменяться только урон, полученный от любого entity. Как отменять урон, получаемый, например от динамита?

Доп. вопрос: Как отбрасывать игрока назад? К примеру, как будто тебя спереди ударил мечом невидимый игрока (хотя нет никакого игрока) и ты откинулся назад?
 
Динамит тоже ентити. Тем более этот евент вызывается, когда сущность получила урон, неважно как.
Доп.ответ: посмотри, как игрок отбрасывается при ударе и сделай тоже самое, только там где тебе нужно.

P.S. Слушай, а ты хоть что-то попытался сам сделать?
 
Динамит тоже ентити
Во время взрыва (зажигания) - да.
вызывается, когда сущность получила урон, неважно как.
Я знав,
ааа но меня взрывает динамит, может это потому, что я стою прям в нём, во время его взрыва?

хоть что-то попытался сам сделать?
ну, я искал другие эвенты чтобы отменять урон, и, искал где отбрасываеться игрок в кодах игры!

посмотри, как игрок отбрасывается при ударе
Можете пожалуйста сказать где это...(
 
Можете пожалуйста сказать где это...
Класс EntityLivingBase строка 1352. Метод knonkback();

Насчёт урона.
А вы точно отменяете событие? Проверяли ли на других предметах (кактус, или что-то другое)?
 
Если юзать и отменять LivingHurtEvent, то по энтити будет идти анимация урона, но урон не будет проходить. Если этого не надо, то лучше использовать LivingAttackEvent, по той же аналогии. (Но это еще не все их различия) И да, там есть DamageSource, в котором есть .isExplosion() или же, посмотрев все, что тебе доступно в ивенте, ты найдешь методы для получения энтити, которое в данный момент атакует жертву. Откидывать игрока можно там же
 
Так, e.getEntityLiving().knockBack(to, 1, 5, 5); (честно не понял что за значения тут надо ставить)
В эвенте. - Работает. А если делаю тут:
какойто-итем.java:
@Override
    public boolean hitEntity(ItemStack stack, EntityLivingBase target, EntityLivingBase attacker) {
        attacker.knockBack(attacker, 1, 5, 5);
        return super.hitEntity(stack, target, attacker);
    }
То ничошеньки не работает, подскажите как решить
 
Последнее редактирование:
to, x,y,z
Отброс можно делать только в определенное время. У него есть таймер который не дает это делать когда захочется. У каждого EntityLiving (EntityMob) есть свойство, которое отвечает за кулдаун. Представь если бы скелет в тебя стрелял и ты каждый раз отскакивал назад, так ты бы улетел за тридевять земель..
А вообще Java стоит подучить, тут она конечно не помогла бы... но в целом, ты бы и сам мог найти это..
видимо надо снова тутор делать

Как отменять урон, получаемый, например от динамита?
Проверяй кто его наносит.. DamageSource вроде, и если это динамит, setCanceled(true);
 
Отброс можно делать только в определенное время. У него есть таймер который не дает это делать когда захочется. У каждого EntityLiving (EntityMob) есть свойство, которое отвечает за кулдаун.
Кулдаун на урон, а не на отбрасывание. Его не отбрасывает из-за того что он в аргументы передал самого себя, метод тупо не знает в какую сторону его откидывать, ибо высчитывает с какой стороны нанесли урон.
Надо так, наверное: target.knockBack(attacker, 1, 5, 5);

P.S Насчет языка я уже предупреждал, судя по твоим сообщениям ты вообще не чаешь что ты делаешь. Грядет профилактический бан)
 
Надо так, наверное: target.knockBack(attacker, 1, 5, 5);
Я так сделал первый раз... Но изменил ибо подумал, что оно просто генерирует отбрасывание в какую-либо сторону. А это оказываеться оно изменяет отбрасывание со стороны атакуемого.. Ну или как-то так :)
Спасибо! Тема решена!
 
Назад
Сверху