package net.minecraft.tileentity;
import com.google.common.collect.Iterables;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
import java.util.UUID;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTUtil;
import net.minecraft.network.Packet;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.StringUtils;
public class TileEntitySkull extends TileEntity
{
private int skullType;
private int skullRotation;
private GameProfile playerProfile = null;
private static final String __OBFID = "CL_00000364";
public void writeToNBT(NBTTagCompound compound)
{
super.writeToNBT(compound);
compound.setByte("SkullType", (byte)(this.skullType & 255));
compound.setByte("Rot", (byte)(this.skullRotation & 255));
if (this.playerProfile != null)
{
NBTTagCompound var2 = new NBTTagCompound();
NBTUtil.writeGameProfile(var2, this.playerProfile);
compound.setTag("Owner", var2);
}
}
public void readFromNBT(NBTTagCompound compound)
{
super.readFromNBT(compound);
this.skullType = compound.getByte("SkullType");
this.skullRotation = compound.getByte("Rot");
if (this.skullType == 3)
{
if (compound.hasKey("Owner", 10))
{
this.playerProfile = NBTUtil.readGameProfileFromNBT(compound.getCompoundTag("Owner"));
}
else if (compound.hasKey("ExtraType", 8))
{
String var2 = compound.getString("ExtraType");
if (!StringUtils.isNullOrEmpty(var2))
{
this.playerProfile = new GameProfile((UUID)null, var2);
this.func_152109_d();
}
}
}
}
public GameProfile getPlayerProfile()
{
return this.playerProfile;
}
/**
* Overriden in a sign to provide the text.
*/
public Packet getDescriptionPacket()
{
NBTTagCompound var1 = new NBTTagCompound();
this.writeToNBT(var1);
return new S35PacketUpdateTileEntity(this.pos, 4, var1);
}
public void setType(int type)
{
this.skullType = type;
this.playerProfile = null;
}
public void setPlayerProfile(GameProfile playerProfile)
{
this.skullType = 3;
this.playerProfile = playerProfile;
this.func_152109_d();
}
private void func_152109_d()
{
this.playerProfile = updateGameprofile(this.playerProfile);
this.markDirty();
}
public static GameProfile updateGameprofile(GameProfile input)
{
if (input != null && !StringUtils.isNullOrEmpty(input.getName()))
{
if (input.isComplete() && input.getProperties().containsKey("textures"))
{
return input;
}
else if (MinecraftServer.getServer() == null)
{
return input;
}
else
{
GameProfile var1 = MinecraftServer.getServer().getPlayerProfileCache().getGameProfileForUsername(input.getName());
if (var1 == null)
{
return input;
}
else
{
Property var2 = (Property)Iterables.getFirst(var1.getProperties().get("textures"), (Object)null);
if (var2 == null)
{
var1 = MinecraftServer.getServer().getMinecraftSessionService().fillProfileProperties(var1, true);
}
return var1;
}
}
}
else
{
return input;
}
}
public int getSkullType()
{
return this.skullType;
}
public void setSkullRotation(int rotation)
{
this.skullRotation = rotation;
}
}