package erebus.client.render.item;
import cpw.mods.fml.client.FMLClientHandler;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import erebus.ModBlocks;
import erebus.client.render.block.BlockRenderHelper;
import erebus.client.render.tileentity.TileEntityPreservedBlockRenderer;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityList;
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;
@SideOnly(Side.CLIENT)
public class PreservedBlockitemRenderer implements IItemRenderer {
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
return type != ItemRenderType.FIRST_PERSON_MAP;
}
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack stack, ItemRendererHelper helper) {
return true;
}
public void renderItem(ItemRenderType type, ItemStack stack, Object ... data) {
Object renderer = data[0];
if(renderer instanceof RenderBlocks) {
switch(null.$SwitchMap$net$minecraftforge$client$IItemRenderer$ItemRenderType[type.ordinal()]) {
case 1:
this.render(stack, -0.5F, -0.5F, -0.5F, (RenderBlocks)renderer);
break;
case 2:
this.render(stack, 0.0F, 0.0F, 0.0F, (RenderBlocks)renderer);
break;
case 3:
this.render(stack, 0.0F, 0.0F, 0.0F, (RenderBlocks)renderer);
break;
case 4:
this.render(stack, -0.5F, -0.5F, -0.5F, (RenderBlocks)renderer);
}
}
}
private void render(ItemStack stack, float x, float y, float z, RenderBlocks renderer) {
if(stack.hasTagCompound()) {
GL11.glPushMatrix();
Entity wasBlendOn = EntityList.createEntityFromNBT(stack.getTagCompound().getCompoundTag("EntityNBT"), Minecraft.getMinecraft().theWorld);
wasBlendOn.setLocationAndAngles(0.0D, 0.0D, 0.0D, 0.0F, 0.0F);
TileEntityPreservedBlockRenderer.renderTrappedEntity(wasBlendOn, (double)x, (double)y, (double)z, 3);
GL11.glEnable('\u803a');
OpenGlHelper.setActiveTexture(OpenGlHelper.lightmapTexUnit);
GL11.glDisable(3553);
OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit);
GL11.glPopMatrix();
}
GL11.glPushMatrix();
GL11.glTranslatef(x, y, z);
boolean wasBlendOn1 = GL11.glIsEnabled(3042);
if(!wasBlendOn1) {
GL11.glEnable(3042);
GL11.glBlendFunc(770, 771);
}
FMLClientHandler.instance().getClient().renderEngine.bindTexture(TextureMap.locationBlocksTexture);
GL11.glTranslatef(0.5F, 0.5F, 0.5F);
renderer.setRenderBoundsFromBlock(ModBlocks.amber);
BlockRenderHelper.renderSimpleBlock(ModBlocks.amber, stack.getItemDamage() == 0?1:0, renderer);
if(!wasBlendOn1) {
GL11.glDisable(3042);
}
GL11.glPopMatrix();
}
}