Package mods.railcraft.client.render.carts

Source Code of mods.railcraft.client.render.carts.RenderItemLocomotive

/*
* Copyright (c) CovertJaguar, 2014 http://railcraft.info
*
* This code is the property of CovertJaguar
* and may only be used with explicit written
* permission unless otherwise specified on the
* license page at http://railcraft.info/wiki/info:license.
*/
package mods.railcraft.client.render.carts;

import mods.railcraft.api.carts.locomotive.IRenderer;
import mods.railcraft.api.carts.locomotive.LocomotiveModelRenderer;
import mods.railcraft.api.carts.locomotive.LocomotiveRenderType;
import mods.railcraft.common.carts.EntityLocomotive;
import mods.railcraft.common.carts.ItemLocomotive;
import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.IItemRenderer;
import org.lwjgl.opengl.GL11;

/**
*
* @author CovertJaguar <http://www.railcraft.info/>
*/
public class RenderItemLocomotive implements IItemRenderer, IRenderer {

    private final LocomotiveRenderType renderType;
    private final EntityLocomotive entity;

    public RenderItemLocomotive(LocomotiveRenderType renderType, EntityLocomotive entity) {
        this.renderType = renderType;
        this.entity = entity;
    }

    @Override
    public boolean handleRenderType(ItemStack stack, ItemRenderType type) {
        switch (type) {
            case INVENTORY:
                String rendererTag = ItemLocomotive.getModel(stack);
                LocomotiveModelRenderer renderer = renderType.getRenderer(rendererTag);
                if (renderer == null || !renderer.renderItemIn3D())
                    return false;
            case ENTITY:
            case EQUIPPED:
            case EQUIPPED_FIRST_PERSON:
                return true;
            default:
                return false;
        }
    }

    @Override
    public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack stack, ItemRendererHelper helper) {
        switch (helper) {
            case ENTITY_ROTATION:
            case ENTITY_BOBBING:
            case INVENTORY_BLOCK:
                return true;
            default:
                return false;
        }
    }

    @Override
    public void renderItem(ItemRenderType type, ItemStack stack, Object... data) {
        GL11.glPushMatrix();
        switch (type) {
            case EQUIPPED_FIRST_PERSON:
                GL11.glTranslatef(0.5F, 0.4F, 0f);
                GL11.glRotatef(20.0F, 0.0F, 0.0F, 1.0F);
                GL11.glRotatef(-10.0F, 1.0F, 0.0F, 0.0F);
                render(stack, 0.6F);
                break;
            case EQUIPPED:
                GL11.glTranslatef(0.5F, 0.5F, 0f);
                GL11.glRotatef(-35.0F, 0.0F, 1.0F, 0.0F);
                GL11.glRotatef(40.0F, 0.0F, 0.0F, 1.0F);
                GL11.glRotatef(-45.0F, 1.0F, 0.0F, 0.0F);
                render(stack, 0.6F);
                break;
            case ENTITY:
            case INVENTORY:
                GL11.glTranslatef(0F, -0.1F, 0f);
                GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F);
                render(stack, 0.8F);
                break;
        }
        GL11.glPopMatrix();
    }

    @Override
    public void bindTex(ResourceLocation texture) {
        Minecraft.getMinecraft().renderEngine.bindTexture(texture);
    }

    private void render(ItemStack stack, float scale) {
        GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
        GL11.glEnable(GL11.GL_DEPTH_TEST);
        GL11.glEnable(GL11.GL_LIGHTING);
        GL11.glEnable(GL11.GL_BLEND);
        GL11.glEnable(GL11.GL_CULL_FACE);
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);

        GL11.glScalef(scale, scale, scale);

        entity.rotationYaw = 0;
        entity.rotationPitch = 0;
        entity.setModel(ItemLocomotive.getModel(stack));
        entity.setPrimaryColor(ItemLocomotive.getPrimaryColor(stack).ordinal());
        entity.setSecondaryColor(ItemLocomotive.getSecondaryColor(stack).ordinal());

        LocomotiveRenderer.INSTANCE.render(this, entity, 1.0F, 1.0F);

        GL11.glPopAttrib();
    }

}
TOP

Related Classes of mods.railcraft.client.render.carts.RenderItemLocomotive

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.