package net.minecraft.client.renderer.tileentity;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.model.ModelSkeletonHead;
import net.minecraft.client.renderer.ImageBufferDownload;
import net.minecraft.entity.Entity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntitySkull;
import net.minecraft.util.StringUtils;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
@SideOnly(Side.CLIENT)
public class TileEntitySkullRenderer extends TileEntitySpecialRenderer
{
public static TileEntitySkullRenderer skullRenderer;
private ModelSkeletonHead field_82396_c = new ModelSkeletonHead(0, 0, 64, 32);
private ModelSkeletonHead field_82395_d = new ModelSkeletonHead(0, 0, 64, 64);
/**
* Render a skull tile entity.
*/
public void renderTileEntitySkullAt(TileEntitySkull par1TileEntitySkull, double par2, double par4, double par6, float par8)
{
this.func_82393_a((float)par2, (float)par4, (float)par6, par1TileEntitySkull.getBlockMetadata() & 7, (float)(par1TileEntitySkull.func_82119_b() * 360) / 16.0F, par1TileEntitySkull.getSkullType(), par1TileEntitySkull.getExtraType());
}
/**
* Associate a TileEntityRenderer with this TileEntitySpecialRenderer
*/
public void setTileEntityRenderer(TileEntityRenderer par1TileEntityRenderer)
{
super.setTileEntityRenderer(par1TileEntityRenderer);
skullRenderer = this;
}
public void func_82393_a(float par1, float par2, float par3, int par4, float par5, int par6, String par7Str)
{
ModelSkeletonHead modelskeletonhead = this.field_82396_c;
switch (par6)
{
case 0:
default:
this.bindTextureByName("/mob/skeleton.png");
break;
case 1:
this.bindTextureByName("/mob/skeleton_wither.png");
break;
case 2:
this.bindTextureByName("/mob/zombie.png");
modelskeletonhead = this.field_82395_d;
break;
case 3:
if (par7Str != null && par7Str.length() > 0)
{
String s1 = "http://skins.minecraft.net/MinecraftSkins/" + StringUtils.stripControlCodes(par7Str) + ".png";
if (!skullRenderer.tileEntityRenderer.renderEngine.hasImageData(s1))
{
skullRenderer.tileEntityRenderer.renderEngine.obtainImageData(s1, new ImageBufferDownload());
}
this.bindTextureByURL(s1, "/mob/char.png");
}
else
{
this.bindTextureByName("/mob/char.png");
}
break;
case 4:
this.bindTextureByName("/mob/creeper.png");
}
GL11.glPushMatrix();
GL11.glDisable(GL11.GL_CULL_FACE);
if (par4 != 1)
{
switch (par4)
{
case 2:
GL11.glTranslatef(par1 + 0.5F, par2 + 0.25F, par3 + 0.74F);
break;
case 3:
GL11.glTranslatef(par1 + 0.5F, par2 + 0.25F, par3 + 0.26F);
par5 = 180.0F;
break;
case 4:
GL11.glTranslatef(par1 + 0.74F, par2 + 0.25F, par3 + 0.5F);
par5 = 270.0F;
break;
case 5:
default:
GL11.glTranslatef(par1 + 0.26F, par2 + 0.25F, par3 + 0.5F);
par5 = 90.0F;
}
}
else
{
GL11.glTranslatef(par1 + 0.5F, par2, par3 + 0.5F);
}
float f4 = 0.0625F;
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
GL11.glScalef(-1.0F, -1.0F, 1.0F);
GL11.glEnable(GL11.GL_ALPHA_TEST);
modelskeletonhead.render((Entity)null, 0.0F, 0.0F, 0.0F, par5, 0.0F, f4);
GL11.glPopMatrix();
}
public void renderTileEntityAt(TileEntity par1TileEntity, double par2, double par4, double par6, float par8)
{
this.renderTileEntitySkullAt((TileEntitySkull)par1TileEntity, par2, par4, par6, par8);
}
}