Тряска экрана при получении урона

Версия Minecraft
1.7.10
161
12
90
Всем привет. Давно уже хочу это сделать, и никак не могу понять где и как это пофиксить.
Сделал свой кастомный реген хп, все вроде должно быть хорошо. Но по какой-то причине произвольно у игрока трясётся экран. Можно как-то эту тряску отключить?
Заранее спасибо.
P.S Там даже не совсем тряска, там именно анимация получения урона.
ss.png
 
Решение
Java:
@SideOnly(Side.CLIENT)
    @Hook(returnCondition = ReturnCondition.ALWAYS)
    public static void hurtCameraEffect(EntityRenderer e, float f)
    {
        Minecraft mc = Minecraft.getMinecraft();
        EntityLivingBase entitylivingbase = mc.renderViewEntity;
        float f1 = (float)entitylivingbase.hurtTime - f;
        float f2;

        
        if (f1 >= 0.0F)
        {
            f1 /= (float)entitylivingbase.maxHurtTime;
            f1 = MathHelper.sin(f1 * f1 * f1 * f1 * (float)Math.PI);
            f2 = entitylivingbase.attackedAtYaw;
            GL11.glRotatef(0, 0.0F, 1.0F, 0.0F);
            GL11.glRotatef(0 * 14.0F, 0.0F, 0.0F, 1.0F);
            GL11.glRotatef(0, 0.0F, 1.0F, 0.0F);
        }
    }

У меня такой...
161
12
90
Последнее редактирование:
1,173
28
168
Java:
@SideOnly(Side.CLIENT)
    @Hook(returnCondition = ReturnCondition.ALWAYS)
    public static void hurtCameraEffect(EntityRenderer e, float f)
    {
        Minecraft mc = Minecraft.getMinecraft();
        EntityLivingBase entitylivingbase = mc.renderViewEntity;
        float f1 = (float)entitylivingbase.hurtTime - f;
        float f2;

        
        if (f1 >= 0.0F)
        {
            f1 /= (float)entitylivingbase.maxHurtTime;
            f1 = MathHelper.sin(f1 * f1 * f1 * f1 * (float)Math.PI);
            f2 = entitylivingbase.attackedAtYaw;
            GL11.glRotatef(0, 0.0F, 1.0F, 0.0F);
            GL11.glRotatef(0 * 14.0F, 0.0F, 0.0F, 1.0F);
            GL11.glRotatef(0, 0.0F, 1.0F, 0.0F);
        }
    }

У меня такой хук есть на отключение тряски экрана, если нужно
 
7,099
324
1,509
161
12
90
У тя в коде его нигде нету
Говорю же, последствия, значит осталось после старого кода.
На самом то деле вроде как разобрался, в чем причина. Завтра перепроверю, и отпишу.
 
161
12
90
Все перепроверил, и да. Проблема была в том что я хотел игрока хилить каждый тик. Но оказывается это так не работает. Майн просто на такое не рассчитан. Пришлось делать 2 раза в секунду.

P.S. Лучший ответ отдам @fane4qa. Хук прям кстати будет(сам буду пользоваться), особенно если посмотреть на название.
 
19
1
Используй в ивенте с двухсторонней обработкой. Покраснение на персонаже тоже пропадет. Hook не нужен.

@SubscribeEvent
@SideOnly(Side.CLIENT)
public void hurtTime(TickEvent.PlayerTickEvent event) {
if (event.player instanceof EntityLivingBase) {
EntityLivingBase entity = (EntityLivingBase) event.player;
entity.hurtTime = 0;
}
}
 
19
1
Все перепроверил, и да. Проблема была в том что я хотел игрока хилить каждый тик. Но оказывается это так не работает. Майн просто на такое не рассчитан. Пришлось делать 2 раза в секунду.

P.S. Лучший ответ отдам @fane4qa. Хук прям кстати будет(сам буду пользоваться), особенно если посмотреть на название.

Используй в ивенте с двухсторонней обработкой. Hook необязателен, если тебе это так режет глаза.

@SubscribeEvent
@SideOnly(Side.CLIENT)
public void tick(TickEvent.PlayerTickEvent event) {
event.player.hurtTime = 0;
}
 
Последнее редактирование:
929
30
66
Вставь правильно код.
В общем какой-то костыль, hurtTime не только для покачивания и покраснения сделан, самое адекватное решение это хук, и убирай не нужный тебе функционал.
 
Сверху