[1.7.2]Отображение предметов с пользовательской моделью

183
1
5
День добрый. Хочу изменить модель предмета, на свою модель в формате .obj (Wavefront).

В главном классе регистрирую рендер
Код:
MinecraftForgeClient.registerItemRenderer(this.someItem, new CustomItemRenderer());
Код CustomItemRenderer.java
Код:
public class CustomItemRenderer implements IItemRenderer {

private IModelCustom model;

public CustomItemRenderer(){
    ResourceLocation modelres = new ResourceLocation("xmod:object.obj");
    model = AdvancedModelLoader.loadModel(modelres);
}

@Override
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
    switch(type)
    {
        case EQUIPPED: return true;
        default: return false;
    }
}

@Override
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper)
{
    return false;
}

@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data)
{    
    switch(type)
    {
    case EQUIPPED:
        {
            GL11.glPushMatrix();
            boolean isFirstPerson = false;
            if(data[1] !=null & data[1] instanceof EntityPlayer)
            {
                ResourceLocation textureimg = new ResourceLocation("xmod:textures/items/object.png");
                Minecraft.getMinecraft().renderEngine.bindTexture(textureimg);             
                
                if(!((EntityPlayer)data[1] == Minecraft.getMinecraft().renderViewEntity && Minecraft.getMinecraft().gameSettings.thirdPersonView == 0 && !((Minecraft.getMinecraft().currentScreen instanceof GuiInventory || Minecraft.getMinecraft().currentScreen instanceof GuiContainerCreative) && RenderManager.instance.playerViewY == 180.0F)))
                {
                    GL11.glTranslatef(0.25F, 1.0F, 0.0F);
                    GL11.glRotatef(40F, 1F, 0F, 0F);
                    GL11.glRotatef(40F, -10F, 1F, 0F);
                    GL11.glRotatef(-330F, 0F, 0F, 1F);
                }
                else
                {
                    isFirstPerson = true;
                    GL11.glTranslatef(0.7F, 1.2F, -0.0F);
                    GL11.glRotatef(150F, 1F, 0F, 0F);
                    GL11.glRotatef(80F, -1F, 1F, 0F);
                    GL11.glRotatef(-90F, 1F, 0F, 1F);
                }
            GL11.glScalef(0.35F, 0.35F, 0.35F);
            model.renderAll();
            GL11.glPopMatrix();
            
        }
            
    }
    default:
        break;
}
}
}
Проблема в том, что модель не отображается будучи выброшена на землю и от первого лица. Без понятия как исправить.
 
А зачем эта фигня?

Код:
boolean isFirstPerson = false;
            if(data[1] !=null & data[1] instanceof EntityPlayer)
            {
                ResourceLocation textureimg = new ResourceLocation("xmod:textures/items/object.png");
                Minecraft.getMinecraft().renderEngine.bindTexture(textureimg);             
                
                if(!((EntityPlayer)data[1] == Minecraft.getMinecraft().renderViewEntity && Minecraft.getMinecraft().gameSettings.thirdPersonView == 0 && !((Minecraft.getMinecraft().currentScreen instanceof GuiInventory || Minecraft.getMinecraft().currentScreen instanceof GuiContainerCreative) && RenderManager.instance.playerViewY == 180.0F)))
                {
 
Это по древнему тутору от айчуна(когда никто не знал о IItemRenderer и охреневали с его 3д-шного порталгана).
 
Код:
switch(type)
    {
    case EQUIPPED:
        //blah
        break;
И подолжаем: INVENTORY, EQUIPPED_FIRST_PERSON, ENTITY и так далее. И в зависимости от типа вращаем да двигаем как надо, а потом рендерим.
 
anti344 написал(а):
Код:
switch(type)
    {
    case EQUIPPED:
        //blah
        break;
И подолжаем: INVENTORY, EQUIPPED_FIRST_PERSON, ENTITY и так далее. И в зависимости от типа вращаем да двигаем как надо, а потом рендерим.
Благодарю
 
Назад
Сверху