Разные модели в инвентаре и на земле

Версия Minecraft
1.12.2
Есть ли возможность реализации такой системы: когда предмет находится у игрока в инвентаре, то он имеет одну модель и текстуру, а когда предмет выброшен на землю, то у него другая модель и текстура? Спасибо заранее.
 

jopi

Попрошайка
1,421
30
260
@Factorial есть всегда... Либо сам пиши с 0 XD
Ну в 1.5.2 по крайней мере во так:

Java:
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
    EntityPlayer entity = null;
    boolean flag = false;
    if (data.length > 1 && data[1] instanceof EntityPlayer) {
        entity = (EntityPlayer)data[1];
        int count = entity.getItemInUseDuration();
        if (count > 0) {
            flag = true;
        }
    }

    GL11.glPushMatrix();
    if (type.equals(ItemRenderType.EQUIPPED_FIRST_PERSON)) {
        if (!flag) {
            GL11.glTranslatef(0.2F, 1.5F, 0.8F);
            GL11.glRotatef(-20.0F, 0.0F, 1.0F, 0.0F);
            GL11.glRotatef(-160.0F, 1.0F, 0.0F, 0.0F);
            GL11.glRotatef(-50.0F, 0.0F, 0.0F, 1.0F);
            GL11.glTranslatef(0.3F, 0.1F, -0.1F);
            GL11.glRotatef(30.0F, -1.0F, 0.0F, 0.0F);
            GL11.glRotatef(45.0F, 0.0F, 0.0F, 1.0F);
            GL11.glRotatef(5.0F, 0.0F, 1.0F, 1.0F);
            GL11.glTranslatef(-1.2F, -0.6F, -1.5F);
            GL11.glRotatef(120.0F, 1.0F, 0.0F, 0.0F);
            GL11.glRotatef(-100.0F, 1.0F, 0.0F, 0.0F);
            GL11.glRotatef(-100.0F, 0.0F, 1.0F, 0.0F);
            GL11.glScalef(0.6F, 0.6F, 0.6F);
        } else {
            GL11.glTranslatef(0.2F, 1.5F, 0.8F);
            GL11.glRotatef(-20.0F, 0.0F, 1.0F, 0.0F);
            GL11.glRotatef(-160.0F, 1.0F, 0.0F, 0.0F);
            GL11.glRotatef(-50.0F, 0.0F, 0.0F, 1.0F);
            GL11.glTranslatef(0.3F, 0.1F, -0.1F);
            GL11.glRotatef(30.0F, -1.0F, 0.0F, 0.0F);
            GL11.glRotatef(45.0F, 0.0F, 0.0F, 1.0F);
            GL11.glRotatef(5.0F, 0.0F, 1.0F, 1.0F);
            GL11.glTranslatef(-0.3F, 0.2F, -0.9F);
            GL11.glRotatef(120.0F, 1.0F, 0.0F, 0.0F);
            GL11.glRotatef(-100.0F, 1.0F, 0.0F, 0.0F);
            GL11.glRotatef(-100.0F, 0.0F, 1.0F, 0.0F);
            GL11.glScalef(0.6F, 0.6F, 0.6F);
        }

        GL11.glScalef(0.8F, 0.8F, 0.8F);
        Minecraft.getMinecraft().renderEngine.bindTexture(tex);
        //model.render();
        GL11.glTranslatef(0.0F, 1.5F, 0.0F);
    } else if (type.equals(ItemRenderType.INVENTORY)) {
        GL11.glTranslatef(0.0F, 0.1F, 0.5F);
        GL11.glRotatef(6.0F, 0.0F, 1.0F, 0.0F);
        GL11.glRotatef(150.0F, 1.0F, 0.0F, 0.0F);
        GL11.glRotatef(10.0F, 1.0F, 0.0F, 0.0F);
        GL11.glRotatef(-45.0F, 0.0F, 0.0F, 1.0F);
        GL11.glScalef(0.5F, 0.5F, 0.5F);
        Minecraft.getMinecraft().renderEngine.bindTexture(tex);
        model.render();
    }
    else if (type.equals(ItemRenderType.ENTITY)) {
        GL11.glTranslatef(0.0F, 0.2F, -0.2F);
        GL11.glRotatef(-90.0F, 0.0F, 0.0F, 1.0F);
        GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F);
        GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F);
        GL11.glScalef(0.4F, 0.4F, 0.4F);
        GL11.glTranslatef(0.0F, 0F, 0F);
        Minecraft.getMinecraft().renderEngine.bindTexture(tex);
        model.render();
    }
    else {
        if (!flag) {
            GL11.glTranslatef(-0.3F, 1.5F, -0.3F);
            GL11.glRotatef(250.0F, 0.0F, 0.0F, 1.0F);
            GL11.glRotatef(-160.0F, 0.0F, 1.0F, 0.0F);
            GL11.glTranslatef(-0.1F, 1F, -1F);
            GL11.glRotatef(-40.0F, 1.0F, 0.0F, 0.0F);
            GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F);
            GL11.glTranslatef(-0.3F, 0.0F, -0.2F);
            GL11.glScalef(1.15F, 1.15F, 1.15F);
        } else {
            GL11.glTranslatef(-0.3F, 1.5F, -0.3F);
            GL11.glRotatef(250.0F, 0.0F, 0.0F, 1.0F);
            GL11.glRotatef(-160.0F, 0.0F, 1.0F, 0.0F);
            GL11.glTranslatef(-0.1F, 1F, -1F);
            GL11.glRotatef(-40.0F, 1.0F, 0.0F, 0.0F);
            GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F);
            GL11.glTranslatef(-0.3F, 0.2F, -0.2F);
            GL11.glScalef(1.15F, 1.15F, 1.15F);
        }
    }
    //if(type.equals(ItemRenderType.EQUIPPED_FIRST_PERSON))
    //{
    //GL11.glRotatef(90.0F, 0.0F, 0.0F, 1.0F);
    //GL11.glRotatef(-40.0F, 1.0F, 0.0F, 0.0F);
    //GL11.glTranslatef(-1.0F, 0.5F, 0F);
    //}
    GL11.glScalef(1.5F, 1.5F, 1.5F);
    Minecraft.getMinecraft().renderEngine.bindTexture(tex);
    model.render();
    GL11.glTranslatef(0.0F, 0.6F, 0.0F);
    GL11.glPopMatrix();
}
т.е. через ItemRenderType
P.S. я дурак сразу метод не отправил...
 
Последнее редактирование:
Сверху