слои

Версия Minecraft
1.12.2
Всем привет. Работаю над слоями. Делаю проверку на то что в руке у игрока определённый предмет, и рендерю слой.
Java:
ItemStack stack = player.getHeldItemMainhand();
       if(stack.getItem() == ItemsRegister.SHIELD1) {
           Minecraft.getMinecraft().getRenderItem().renderItem(new ItemStack(ItemsRegister.SHIELD1), player, ItemCameraTransforms.TransformType.FIXED, false);
           GlStateManager.popMatrix();
        
           if(player.isSneaking())
           {
               GlStateManager.rotate(+30F, 1, 0, 0);
               GlStateManager.translate(0, -0.2F, -0.08F);
           }
       }

Всё работает, но когда предмета нету в руках,рендер сходит с ума, рендерит модели инструментов в руках, мобов на спине и тд... Как исправить?


И модель то он рендерит когда предмет в руках, но при приседание не изменяет его наклон, хотя код прописан
Java:
if(player.isSneaking())
           {
               GlStateManager.rotate(+30F, 1, 0, 0);
               GlStateManager.translate(0, -0.2F, -0.08F);
           }
 
Решение
Ну понятно ,смотри

Вот рабочий код ,проверяй
Java:
public class LayerQuiver implements LayerRenderer<EntityPlayer>
{
    @Override
    public void doRenderLayer(EntityPlayer player, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch, float scale)
    {
        ItemStack stack = player.getHeldItemMainhand();
        if(stack.getItem() == ItemsRegister.SHIELD1) {
        
            GlStateManager.pushMatrix();
            //Позиция предмета
            GlStateManager.translate(0, 0.40F, 0.15F);
            //Вращение предмета
            GlStateManager.rotate(180F, 360, 1, 20);
            //Размеры предмета
            GlStateManager.scale(0.85F, 0.85F, 0.85F)...
85
3
3
Всё нормально работает )

Java:
public class Layer implements LayerRenderer<EntityPlayer>
{
    @Override
    public void doRenderLayer(EntityPlayer player, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch, float scale)
    {
        ItemStack stack = player.getHeldItemMainhand();
        if(stack.getItem() == Items.DIAMOND_SWORD) {

            GlStateManager.pushMatrix();
            //Позиция предмета
            GlStateManager.translate(0, 0.25F, 0.15F);
            //Вращение предмета
            GlStateManager.rotate(180F, 0, 0, 20);
            //Размеры предмета
            GlStateManager.scale(0.85F, 0.85F, 0.85F);

            //Условие: Если игрок присел, то мы меняем положение нашего колчана.
            if (player.isSneaking()) {
                GlStateManager.rotate(-30F, 1, 0, 0);
                GlStateManager.translate(0, -0.155F, 0.04F);
            }

            //Рендер предмета(обычный из Minecraft)
            Minecraft.getMinecraft().getRenderItem().renderItem(new ItemStack(Items.DIAMOND_SWORD), player, ItemCameraTransforms.TransformType.FIXED, false);
            GlStateManager.popMatrix();
        }
    }

    @Override
    public boolean shouldCombineTextures()
    {
        return false;
    }
}
1565878826424.png

1565878834543.png
 
кинь полный код своего слоя
Java:
public class LayerQuiver implements LayerRenderer<EntityPlayer>
{
   @Override
   public void doRenderLayer(EntityPlayer player, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch, float scale)
   {
       GlStateManager.pushMatrix();
       //Позиция предмета
       GlStateManager.translate(0, 0.40F, 0.15F);
       //Вращение предмета
       GlStateManager.rotate(180F, 360, 1, 20);
       //Размеры предмета
       GlStateManager.scale(0.85F, 0.85F, 0.85F);
      
       if(player.isSneaking())
       {
           GlStateManager.rotate(+30F, 1, 0, 0);
           GlStateManager.translate(0, -0.2F, -0.08F);
       }
      
       ItemStack stack = player.getHeldItemMainhand();
       if(stack.getItem() == ItemsRegister.SHIELD1) {
           Minecraft.getMinecraft().getRenderItem().renderItem(new ItemStack(ItemsRegister.SHIELD1), player, ItemCameraTransforms.TransformType.FIXED, false);
           GlStateManager.popMatrix();
       }
   }

   @Override
   public boolean shouldCombineTextures()
   {
       return false;
   }
}
 
85
3
3
Ну понятно ,смотри

Вот рабочий код ,проверяй
Java:
public class LayerQuiver implements LayerRenderer<EntityPlayer>
{
    @Override
    public void doRenderLayer(EntityPlayer player, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch, float scale)
    {
        ItemStack stack = player.getHeldItemMainhand();
        if(stack.getItem() == ItemsRegister.SHIELD1) {
        
            GlStateManager.pushMatrix();
            //Позиция предмета
            GlStateManager.translate(0, 0.40F, 0.15F);
            //Вращение предмета
            GlStateManager.rotate(180F, 360, 1, 20);
            //Размеры предмета
            GlStateManager.scale(0.85F, 0.85F, 0.85F);
    
            if(player.isSneaking())
            {
                GlStateManager.rotate(+30F, 1, 0, 0);
                GlStateManager.translate(0, -0.2F, -0.08F);
            }
        
            Minecraft.getMinecraft().getRenderItem().renderItem(new ItemStack(ItemsRegister.SHIELD1), player, ItemCameraTransforms.TransformType.FIXED, false);
            GlStateManager.popMatrix();
        }
    }

    @Override
    public boolean shouldCombineTextures()
    {
        return false;
    }
}
 
Сверху