Package thaumic.tinkerer.client.render.item

Source Code of thaumic.tinkerer.client.render.item.RenderGenericSeeds

package thaumic.tinkerer.client.render.item;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.renderer.ItemRenderer;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraftforge.client.IItemRenderer;
import org.lwjgl.opengl.GL11;
import thaumcraft.api.aspects.Aspect;
import thaumic.tinkerer.common.ThaumicTinkerer;
import thaumic.tinkerer.common.item.ItemInfusedSeeds;

import javax.swing.*;

/**
* Created by pixlepix on 8/6/14.
*/
public class RenderGenericSeeds implements IItemRenderer {

    private static RenderItem renderItem = new RenderItem();

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

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

    @Override
    public void renderItem(ItemRenderType type, ItemStack itemstack, Object... data) {
        GL11.glPushAttrib(GL11.GL_COLOR_BUFFER_BIT);
        GL11.glEnable(GL11.GL_BLEND);
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        ItemInfusedSeeds item = (ItemInfusedSeeds) itemstack.getItem();
        IIcon icon = item.getIconIndex(itemstack);
        Aspect aspect = item.getAspect(itemstack);
        if (type == ItemRenderType.INVENTORY) {
            renderItemInInventory(itemstack, aspect, icon);
        } else if (type == ItemRenderType.EQUIPPED || type == ItemRenderType.EQUIPPED_FIRST_PERSON) {
            renderItemInEquipped(itemstack, aspect, icon);
        } else {
            EntityItem entityItem = (EntityItem) data[1];
            if (entityItem.worldObj == null) {
                float angle = (Minecraft.getSystemTime() % 8000L) / 8000.0F * 360.0F;
                GL11.glPushMatrix();
                GL11.glRotatef(angle, 0.0F, 1.0F, 0.0F);
                GL11.glTranslatef(-0.2F, -0.5F, 0.0F);
                renderItemAsEntity(itemstack, aspect, icon);
                GL11.glPopMatrix();
            } else {
                renderItemAsEntity(itemstack, aspect, icon);
            }
        }

        GL11.glDisable(GL11.GL_BLEND);
        GL11.glPopAttrib();
    }

    private void renderItemInInventory(ItemStack itemstack, Aspect aspect, IIcon icon) {
        setColorForAspect(aspect);
        GL11.glColor3f(1.0F, 1.0F, 1.0F);
        drawTexturedRectUV(0, 0, 0, 16, 16, icon);
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
    }

    private void renderItemInEquipped(ItemStack itemstack, Aspect aspect, IIcon icon) {
        Tessellator tessellator = Tessellator.instance;
        setColorForAspect(aspect);
        ItemRenderer.renderItemIn2D(tessellator, icon.getMaxU(), icon.getMinV(), icon.getMinU(), icon.getMaxV(), icon.getIconWidth(), icon.getIconHeight(), 0.0625F);
        GL11.glColor3f(1.0F, 1.0F, 1.0F);
    }

    private void renderItemAsEntity(ItemStack itemstack, Aspect aspect, IIcon icon) {
        GL11.glPushMatrix();
        setColorForAspect(aspect);
        GL11.glColor3f(1.0F, 1.0F, 1.0F);
        drawTextureIn3D(icon);
        GL11.glPopMatrix();
    }

    private void drawTextureIn3D(IIcon texture) {
        Tessellator tesselator = Tessellator.instance;
        float scale = 0.7F;
        GL11.glPushMatrix();
        GL11.glScalef(scale, scale, scale);
        ItemRenderer.renderItemIn2D(tesselator, texture.getMaxU(), texture.getMinV(), texture.getMinU(), texture.getMaxV(), texture.getIconWidth(), texture.getIconHeight(), .05F);
        GL11.glPopMatrix();
    }

    private void drawTexturedRectUV(float x, float y, float z, int w, int h, IIcon icon) {
        Tessellator tesselator = Tessellator.instance;
        tesselator.startDrawingQuads();
        tesselator.addVertexWithUV(x, y + h, z, icon.getMinU(), icon.getMaxV());
        tesselator.addVertexWithUV(x + w, y + h, z, icon.getMaxU(), icon.getMaxV());
        tesselator.addVertexWithUV(x + w, y, z, icon.getMaxU(), icon.getMinV());
        tesselator.addVertexWithUV(x, y, z, icon.getMinU(), icon.getMinV());
        tesselator.draw();
    }

    private void setColorForAspect(Aspect aspect) {
        //if(!aspect.isPrimal()){
        //    float r = (aspect.getColor() >> 16 & 0xFF) / 255.0F;
        //    float g = (aspect.getColor() >> 8 & 0xFF) / 255.0F;
        //    float b = (aspect.getColor() & 0xFF) / 255.0F;
        //    GL11.glColor3f(r, g, b);
        //}
    }
}
TOP

Related Classes of thaumic.tinkerer.client.render.item.RenderGenericSeeds

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.