Атака без отдачи у моба

Версия Minecraft
1.7.10
API
Forge
341
14
113
Представляю, как мог надоесть своими вопросами, но есть надежда, что это последний.
У меня есть некий моб-ловшука, который меняет текстуру в зависимости от расстояния до него (спасибо @Mayliquez), что должно предупредить игрока об опасности.
Когда игрок "наступает" на этого моба, моб его бьёт. Но... Из-за отдачи от урона игрока отлетает за пределы действия "ловушки".
Вот от этого "поднимай меня, скотти" нужно избавиться.

Вопрос - как сделать так, чтобы моб бил игрока без отдачи?
 

sk9zist :l

Исправился
981
18
157
Темы уже была... ( @Илья ~ KroxaLimba спрашивал)
Самый простой способ который приходит в голову - это ставить motionX,Y,Z на 0 при ударе. Я так ответил в той теме. Конечно же, есть ещё много других, если этот не подойдёт.
 
Последнее редактирование:

sk9zist :l

Исправился
981
18
157
Java:
    int xyz; // переменная для motion X;Y;Z (можно не создавать, а сразу указывать значение)
    
    @SubscribeEvent
    public void onEntityAttack(AttackEntityEvent event) {
        xyz = 0;
        
        if (event.entityLiving.attackEntityAsMob(твой Энтити)) {
            event.entityPlayer.motionX = xyz;
            event.entityPlayer.motionY = xyz;
            event.entityPlayer.motionZ = xyz;
        }
    }

В теории должно работать, но не уверен.
 

sk9zist :l

Исправился
981
18
157
В теории должно работать, но не уверен.
А зачем ему эвент, если у него свой моб... ?

попробую оба варианта и отпишусь.
Это всё и есть один вариант. Просто @xMafee дал версию в коде
хотя можешь просто ставить entity.setVelocity(0) без лишних строчек
и всё. (При ударе).
 

sk9zist :l

Исправился
981
18
157
я в общем написал, мб ещё кому-то надо будет
Так ты усложнил всё в несколько раз...
Можно сделать как-то так:
Java:
@SubscribeEvent
public void onEntityAttack(AttackEntityEvent event) {
    xyz = 0;
        
    if (event.getAttacker instanceof твой Энтити) {
        event.entityPlayer.setVelocity(0);
    }
}
 
341
14
113
Код:
error: cannot find symbol
symbol: variable getAttacker
location: variable event of type AttackEntityEvent


Код:
error: method setVelocity in class Entity cannot be applied to given types;
event.entityPlayer.setVelocity(0);
required: double,double,double
found: int
reason: actual and formal argument lists differ in length
 
Последнее редактирование:
Сверху