Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос Как сделать визуальную ротацию

  • Автор темы Автор темы Vavster
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
29 Ноя 2024
Сообщения
97
Реакции
1
Всем даров, крч вопрос касается визуальной ротации на эликах, через LivingEntity сделал себе неплохой таргет-воздуха но не знаю как сделать виз ротацию, вообщем я про вот эту хуйню

Для сервера мы смотрит на таргет киллки
Для игрока мы просто можем спокойно крутить головой

Если кто может дайте плэз пример кода
, так же могу дать несколько отрывкой таргет воздуха чтоб вы хелпанули, если чо мой дс v.rank

забыл уточнить база expenis 3.1
 
Бля, пацан ты обычный гпт пастерок. тебя в хуй не ставят)
с чего ты взял что я юзаю гпт, пофиксить ошибки в коде я и сам могу, ну про пастера ты прав
Я просто задал вопрос как сделать виз.ротацию для элитра таргета, вы блять налетели, такие крутые селф кодеры
 
с чего ты взял что я юзаю гпт, пофиксить ошибки в коде я и сам могу, ну про пастера ты прав
Я просто задал вопрос как сделать виз.ротацию для элитра таргета, вы блять налетели, такие крутые селф кодеры
Ты не можешь класс найти о чем вообще можно говорить
 
Дублирую свой ответ с этой темы: (Fabric, Yarn, 1.21.1-1.21.4)
Вот пример реализации
Миксины для подмены ротации на стороне сервера
ClientPlayerEntityMixin.java:
Expand Collapse Copy
    /* ClientPlayerEntityMixin.java */


    // Твоя фейк ротация (yaw, pitch)
    // Rotation fakeRotation = new Rotation(0, 0),
    // isRotating() это флаг созданный для того, чтобы понимать вращается ли сейчас голова или нет
    @Redirect(method = "sendMovementPackets", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;getYaw()F"))
    public float onSendMovementPacketsYaw(ClientPlayerEntity instance) {
        if (isRotating()) {
            return fakeRotation.getYaw();
        }

        // возвращаем оригинальный яв
        return instance.getYaw();
    }


    @Redirect(method = "sendMovementPackets", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;getPitch()F"))
    public float onSendMovementPacketsPitch(ClientPlayerEntity instance) {
        if (isRotating()) {
            return fakePitch.getPitch();
        }

        // возвращаем оригинальный питч
        return instance.getPitch();
    }
}


Миксины для отображения нашей подмененной ротации на модельке игрока:
LivingEntityRendererMixin.java:
Expand Collapse Copy
    /* LivingEntityRendererMixin.java */

    // Твоя фейк ротация (yaw, pitch)
    // Rotation fakeRotation = new Rotation(0, 0),

    // isRotating() это флаг созданный для того, чтобы понимать вращается ли сейчас голова или нет
    @ModifyVariable(method = "render(Lnet/minecraft/entity/LivingEntity;FFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", ordinal = 2, at = @At(value = "STORE", ordinal = 0))
    public float changeYaw(float oldValue, LivingEntity entity) {
        if (entity.equals(mc.player) && isRotating()) {
            return fakeRotation.getYaw()
        }
        return oldValue;
    }


    @ModifyVariable(method = "render(Lnet/minecraft/entity/LivingEntity;FFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", ordinal = 3, at = @At(value = "STORE", ordinal = 0))
    public float changeHeadYaw(float oldValue, LivingEntity entity) {
        if (entity.equals(mc.player) && isRotating()) {
            return fakeRotation.getYaw();
        }
        return oldValue;
    }


    @ModifyVariable(method = "render(Lnet/minecraft/entity/LivingEntity;FFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", ordinal = 5, at = @At(value = "STORE", ordinal = 3))
    public float changePitch(float oldValue, LivingEntity entity) {
        if (entity.equals(mc.player) && isRotating() {
            return fakeRotation.getPitch();
        }
        return oldValue;
    }
}
 
Назад
Сверху Снизу