package net.minecraft.client.renderer.tileentity; import com.mojang.authlib.GameProfile; import com.mojang.authlib.minecraft.MinecraftProfileTexture; import com.mojang.authlib.minecraft.MinecraftProfileTexture.Type; import java.util.Map; import java.util.UUID; import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelHumanoidHead; import net.minecraft.client.model.ModelSkeletonHead; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.resources.DefaultPlayerSkin; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntitySkull; import net.minecraft.util.EnumFacing; import net.minecraft.util.ResourceLocation; public class TileEntitySkullRenderer extends TileEntitySpecialRenderer { private static final ResourceLocation field_147537_c = new ResourceLocation("textures/entity/skeleton/skeleton.png"); private static final ResourceLocation field_147534_d = new ResourceLocation("textures/entity/skeleton/wither_skeleton.png"); private static final ResourceLocation field_147535_e = new ResourceLocation("textures/entity/zombie/zombie.png"); private static final ResourceLocation field_147532_f = new ResourceLocation("textures/entity/creeper/creeper.png"); public static TileEntitySkullRenderer instance; private final ModelSkeletonHead field_178467_h = new ModelSkeletonHead(0, 0, 64, 32); private final ModelSkeletonHead field_178468_i = new ModelHumanoidHead(); private static final String __OBFID = "CL_00000971"; public void func_180542_a(TileEntitySkull p_180542_1_, double p_180542_2_, double p_180542_4_, double p_180542_6_, float p_180542_8_, int p_180542_9_) { EnumFacing var10 = EnumFacing.getFront(p_180542_1_.getBlockMetadata() & 7); this.renderSkull((float)p_180542_2_, (float)p_180542_4_, (float)p_180542_6_, var10, (float)(p_180542_1_.getSkullRotation() * 360) / 16.0F, p_180542_1_.getSkullType(), p_180542_1_.getPlayerProfile(), p_180542_9_); } public void setRendererDispatcher(TileEntityRendererDispatcher p_147497_1_) { super.setRendererDispatcher(p_147497_1_); instance = this; } public void renderSkull(float p_180543_1_, float p_180543_2_, float p_180543_3_, EnumFacing p_180543_4_, float p_180543_5_, int p_180543_6_, GameProfile p_180543_7_, int p_180543_8_) { ModelSkeletonHead var9 = this.field_178467_h; if (p_180543_8_ >= 0) { this.bindTexture(DESTROY_STAGES[p_180543_8_]); GlStateManager.matrixMode(5890); GlStateManager.pushMatrix(); GlStateManager.scale(4.0F, 2.0F, 1.0F); GlStateManager.translate(0.0625F, 0.0625F, 0.0625F); GlStateManager.matrixMode(5888); } else { switch (p_180543_6_) { case 0: default: this.bindTexture(field_147537_c); break; case 1: this.bindTexture(field_147534_d); break; case 2: this.bindTexture(field_147535_e); var9 = this.field_178468_i; break; case 3: var9 = this.field_178468_i; ResourceLocation var10 = DefaultPlayerSkin.func_177335_a(); if (p_180543_7_ != null) { Minecraft var11 = Minecraft.getMinecraft(); Map var12 = var11.getSkinManager().loadSkinFromCache(p_180543_7_); if (var12.containsKey(Type.SKIN)) { var10 = var11.getSkinManager().loadSkin((MinecraftProfileTexture)var12.get(Type.SKIN), Type.SKIN); } else { UUID var13 = EntityPlayer.getUUID(p_180543_7_); var10 = DefaultPlayerSkin.func_177334_a(var13); } } this.bindTexture(var10); break; case 4: this.bindTexture(field_147532_f); } } GlStateManager.pushMatrix(); GlStateManager.disableCull(); if (p_180543_4_ != EnumFacing.UP) { switch (TileEntitySkullRenderer.SwitchEnumFacing.field_178458_a[p_180543_4_.ordinal()]) { case 1: GlStateManager.translate(p_180543_1_ + 0.5F, p_180543_2_ + 0.25F, p_180543_3_ + 0.74F); break; case 2: GlStateManager.translate(p_180543_1_ + 0.5F, p_180543_2_ + 0.25F, p_180543_3_ + 0.26F); p_180543_5_ = 180.0F; break; case 3: GlStateManager.translate(p_180543_1_ + 0.74F, p_180543_2_ + 0.25F, p_180543_3_ + 0.5F); p_180543_5_ = 270.0F; break; case 4: default: GlStateManager.translate(p_180543_1_ + 0.26F, p_180543_2_ + 0.25F, p_180543_3_ + 0.5F); p_180543_5_ = 90.0F; } } else { GlStateManager.translate(p_180543_1_ + 0.5F, p_180543_2_, p_180543_3_ + 0.5F); } float var14 = 0.0625F; GlStateManager.enableRescaleNormal(); GlStateManager.scale(-1.0F, -1.0F, 1.0F); GlStateManager.enableAlpha(); var9.render((Entity)null, 0.0F, 0.0F, 0.0F, p_180543_5_, 0.0F, var14); GlStateManager.popMatrix(); if (p_180543_8_ >= 0) { GlStateManager.matrixMode(5890); GlStateManager.popMatrix(); GlStateManager.matrixMode(5888); } } public void renderTileEntityAt(TileEntity p_180535_1_, double p_180535_2_, double p_180535_4_, double p_180535_6_, float p_180535_8_, int p_180535_9_) { this.func_180542_a((TileEntitySkull)p_180535_1_, p_180535_2_, p_180535_4_, p_180535_6_, p_180535_8_, p_180535_9_); } static final class SwitchEnumFacing { static final int[] field_178458_a = new int[EnumFacing.values().length]; private static final String __OBFID = "CL_00002468"; static { try { field_178458_a[EnumFacing.NORTH.ordinal()] = 1; } catch (NoSuchFieldError var4) { ; } try { field_178458_a[EnumFacing.SOUTH.ordinal()] = 2; } catch (NoSuchFieldError var3) { ; } try { field_178458_a[EnumFacing.WEST.ordinal()] = 3; } catch (NoSuchFieldError var2) { ; } try { field_178458_a[EnumFacing.EAST.ordinal()] = 4; } catch (NoSuchFieldError var1) { ; } } } }