/* * 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; import java.util.Random; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.entity.item.EntityItem; import net.minecraft.item.ItemStack; import net.minecraftforge.client.IItemRenderer; import net.minecraftforge.client.IItemRenderer.ItemRenderType; import net.minecraftforge.client.IItemRenderer.ItemRendererHelper; import org.lwjgl.opengl.GL11; public class ItemRenderer implements IItemRenderer { private IInvRenderer renderer; private final Random rand = new Random(); public ItemRenderer(IInvRenderer renderer) { this.renderer = renderer; } @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) { return true; } @Override public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { switch (helper) { case EQUIPPED_BLOCK: case BLOCK_3D: case ENTITY_BOBBING: case ENTITY_ROTATION: case INVENTORY_BLOCK: return true; default: return false; } } @Override public void renderItem(ItemRenderType type, ItemStack item, Object... data) { switch (type) { case EQUIPPED: case EQUIPPED_FIRST_PERSON: GL11.glTranslatef(0.5f, 0.5f, 0.5f); renderer.renderItem((RenderBlocks) data[0], item, type); break; case INVENTORY: renderer.renderItem((RenderBlocks) data[0], item, type); break; case ENTITY: renderEntity((RenderBlocks) data[0], (EntityItem) data[1]); break; } } protected void renderEntity(RenderBlocks render, EntityItem item) { rand.setSeed(187L); byte num = 1; ItemStack stack = item.getEntityItem(); if (stack.stackSize > 1) num = 2; if (stack.stackSize > 5) num = 3; if (stack.stackSize > 20) num = 4; // float scale = 0.5F; // // GL11.glScalef(scale, scale, scale); if (render.useInventoryTint) { int color = stack.getItem().getColorFromItemStack(stack, 0); float r = (float) (color >> 16 & 255) / 255.0F; float g = (float) (color >> 8 & 255) / 255.0F; float b = (float) (color & 255) / 255.0F; GL11.glColor4f(r, g, b, 1.0F); } // for (int ii = 0; ii < num; ++ii) { // GL11.glPushMatrix(); // // if (ii > 0) { // float x = (rand.nextFloat() * 2.0F - 1.0F) * 0.2F / scale; // float y = (rand.nextFloat() * 2.0F - 1.0F) * 0.2F / scale; // float z = (rand.nextFloat() * 2.0F - 1.0F) * 0.2F / scale; // GL11.glTranslatef(x, y, z); // } renderer.renderItem(render, stack, ItemRenderType.ENTITY); // GL11.glPopMatrix(); // } } }