Проблема с отображением модели от первого лица

Версия Minecraft
1.7.10
API
Forge

dxAugust

Живёт в подвале
135
2
8
Всем привет недавно кодил отображение модели на Minecraft 1.7.10. Для отображения я использовал обычны ItemUse Bow, для того чтобы игрок держал в руках оружие с анимацией прицеливания из лука. Возникла проблема, что я не могу разобраться как настроить так, чтобы вид от первого лица выглядел хорошо. Я пошёл на ужасные костыли путём переворачивания модельки непосредственно в самом редакторе. (В самом низу поста есть скриншот как оно должно выглядеть). Можете пожалуйсто помочь или дать наводку в каком направлении я могу что-то сделать.


Рендер модельки оружия:
    public static final ResourceLocation texture = new ResourceLocation(Reference.MODID, "textures/items/farbric yellow.png");

    @Override
    public boolean handleRenderType(ItemStack is, ItemRenderType type) {
        if (type == ItemRenderType.INVENTORY) return false;
        return true;
    }

    @Override
    public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack is, ItemRendererHelper helper) {
        if (type == ItemRenderType.INVENTORY) return false;
        return true;
    }

    @Override
    public void renderItem(ItemRenderType type, ItemStack is, Object... data) {
        switch(type)
        {
            case EQUIPPED_FIRST_PERSON:
                GL11.glPushMatrix();
                GL11.glRotatef(-225.0F, -6F, 1.5F, -2F);
                Minecraft.getMinecraft().renderEngine.bindTexture(texture);
                GL11.glCallList(ClientProxy.displayList[0]);
                GL11.glPopMatrix();
                break;

            case EQUIPPED:
                GL11.glPushMatrix();
                GL11.glTranslatef(0.1F, 1F, 0.1F);
                Minecraft.getMinecraft().renderEngine.bindTexture(texture);
                GL11.glCallList(ClientProxy.displayList[0]);
                GL11.glPopMatrix();
                break;

            case INVENTORY:
                GL11.glPushMatrix();
                GL11.glTranslatef(0.1F, 0.0F, 0.1F);
                Minecraft.getMinecraft().renderEngine.bindTexture(texture);
                GL11.glCallList(ClientProxy.displayList[0]);
                GL11.glPopMatrix();
                break;

            case ENTITY:
                GL11.glPushMatrix();
                GL11.glTranslatef(0.1F, 0.0F, 0.1F);
                Minecraft.getMinecraft().renderEngine.bindTexture(texture);
                GL11.glCallList(ClientProxy.displayList[0]);
                GL11.glPopMatrix();
                break;

            default:
                break;
        }
    }


Класс предмета:
    public Yboinik()
    {
        this.setUnlocalizedName("testGUN");
        this.setFull3D();
        this.setTextureName(Reference.MODID + ":testgun");
    }

    @Override
    public int getMaxItemUseDuration(ItemStack stack)
    {
        return 2000000000;
    }

    @Override
    public EnumAction getItemUseAction(ItemStack stack)
    {
        return EnumAction.bow;
    }

    @Override
    public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5)
    {
        ((EntityPlayer)par3Entity).setItemInUse(par1ItemStack, this.getMaxItemUseDuration(par1ItemStack));
    }
Безымянный.png
2021-12-18_16.13.24.pngСнимок.PNG
 
Последнее редактирование:

dxAugust

Живёт в подвале
135
2
8
Я пробовал изменять значения в разные стороны (И отрицательные тоже). Так и ничего не помогло :( . От куда строиться ось вращения я бы смог это просто представить. К сожалению я не могу так и понять откуда оно строиться.
 

dxAugust

Живёт в подвале
135
2
8
Поиграйся со значениями и поймёшь, как это всё работает. Менять нужно в кейсе EQUIPPED_FIRST_PERSON
Этот метод я тоже пробовал. Не получается натыкать, оно слишком далеко уходит.
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
Ещё порядок translatef и rotatef тоже имеет значение - на самом деле сложновато словами описать, но если туда-сюда подвигать-покрутить-поскейлить, то понимание что куда и как надо менять придёт, ну или ты в процессе найдёшь нужные цифры)
 

dxAugust

Живёт в подвале
135
2
8
Там вектор настраивается, он и будет осью вращения, то есть x=0 y=1 z=0 будет крутиться по у оси от 0 координат игрока
Его можно настроить в любом редакторе моделей или же вызовом функции GL?
 

dxAugust

Живёт в подвале
135
2
8
Сверху