Изменение рендера стандартной модели игрока

Сообщения
153
Лучшие ответы
1
Реакции
2
Версия Minecraft
1.12.2
Приветствую
Есть необходимость изменить поворот руки игрока когда тот держит мой предмет классика.
Сколько ни перерыл, видимого эффекта я так и не достиг.

Пробовал менять ArmPose руки на ArmPose.EMPTY, эффекта ноль
Java:
@Hook(injectOnExit = true)
@SideOnly(Side.CLIENT)
public static void renderRightArm(RenderPlayer renderPlayer, AbstractClientPlayer entity)
{
    ItemStack itemstack = entity.getHeldItemMainhand();
    ItemStack itemstack1 = entity.getHeldItemOffhand();
    if(itemstack.getItem() instanceof MyItem || itemstack1.getItem() instanceof MyItem) {
        renderPlayer.getMainModel().rightArmPose = ModelBiped.ArmPose.EMPTY;
        renderPlayer.getMainModel().leftArmPose = ModelBiped.ArmPose.EMPTY;    //Дебаг показывает что код исполняется
    }
}
Получилось крутить вот таким способом
Java:
@SideOnly(Side.CLIENT)
public class EventsClient {

    @SubscribeEvent(priority = EventPriority.NORMAL, receiveCanceled = true)
    public void preRender(RenderPlayerEvent.Pre event) {
        event.getRenderer().getMainModel().bipedRightArm.isHidden = true;
    }

    @SubscribeEvent(priority = EventPriority.NORMAL, receiveCanceled = true)
    public void postRender(RenderPlayerEvent.Post event) {
        EntityPlayer player = event.getEntityPlayer();
        event.getRenderer().getMainModel().bipedRightArm.isHidden = false;
        event.getRenderer().getMainModel().bipedRightArm.rotationPointZ = -MathHelper.sin((float) Math.toRadians(player.renderYawOffset)) * 5.0F;
        event.getRenderer().getMainModel().bipedRightArm.rotationPointY = 20;
        event.getRenderer().getMainModel().bipedRightArm.rotationPointX = -MathHelper.cos((float) Math.toRadians(player.renderYawOffset)) * 5.0F;
        event.getRenderer().getMainModel().bipedRightArm.rotateAngleX = (float) 25;
        event.getRenderer().getMainModel().bipedRightArm.rotateAngleY = (float) -Math.toRadians(player.renderYawOffset);
        event.getRenderer().getMainModel().bipedRightArm.rotateAngleZ = (float) 0;
        event.getRenderer().getMainModel().bipedRightArm.renderWithRotation(0.0625F);
        event.getRenderer().getMainModel().bipedRightArm.rotationPointY = 2;
    }
}
Этот код успешно поворачивает руку как мне нужно, но при этом рука не рендерится совсем когда игрок берет в руку какой-нибудь предмет

2019-08-15_17.36.19.png2019-08-15_17.36.30.png

Есть идеи?
 
Сообщения
97
Лучшие ответы
6
Реакции
29
Может потому что у тебя нет кода который отвечает за рендер, когда в руках предмет?
 
Сообщения
153
Лучшие ответы
1
Реакции
2
А что это должен быть за код?)
Она пропадает при любом предмете, я думал рендер игрока покрывает рендер, когда в руках предмет
 
Сообщения
97
Лучшие ответы
6
Реакции
29
Тебе нужно также отрендерить руку, добавить рендер самого предмета, при условии, что предмет в руках != null
 

Ivasik

Porting GrandBombaster
Администратор
Сообщения
2,825
Лучшие ответы
76
Реакции
298
О, лабутена вернулся))
 
Сообщения
153
Лучшие ответы
1
Реакции
2
-__-
Я же так и сделал в коде приведенном выше, нет?
Каким образом в 1.12 добавляется рендер предмета в общем плане? То есть, он же теперь через JSON, нет IItemRender
 
Сообщения
153
Лучшие ответы
1
Реакции
2
Сообщения
153
Лучшие ответы
1
Реакции
2
Вопрос так и не решен(
Может есть какие-нибудь мысли?
 

Ivasik

Porting GrandBombaster
Администратор
Сообщения
2,825
Лучшие ответы
76
Реакции
298
Попробуй рефлексией заменить рендер игрока на свой, тогда в разы будет проще изменить положение рук как тебе хочется. Вроде был мод у крабьих палочек.
 
Сверху