diff options
Diffstat (limited to 'src/main/java/net/minecraft/server/TileEntitySkull.java')
-rw-r--r-- | src/main/java/net/minecraft/server/TileEntitySkull.java | 61 |
1 files changed, 51 insertions, 10 deletions
diff --git a/src/main/java/net/minecraft/server/TileEntitySkull.java b/src/main/java/net/minecraft/server/TileEntitySkull.java index b241cfee..748f00a6 100644 --- a/src/main/java/net/minecraft/server/TileEntitySkull.java +++ b/src/main/java/net/minecraft/server/TileEntitySkull.java @@ -1,10 +1,16 @@ package net.minecraft.server; +import java.util.UUID; + +import net.minecraft.util.com.google.common.collect.Iterables; +import net.minecraft.util.com.mojang.authlib.GameProfile; +import net.minecraft.util.com.mojang.authlib.properties.Property; + public class TileEntitySkull extends TileEntity { private int a; private int i; - private String j = ""; + private GameProfile j = null; public TileEntitySkull() {} @@ -12,18 +18,32 @@ public class TileEntitySkull extends TileEntity { super.b(nbttagcompound); nbttagcompound.setByte("SkullType", (byte) (this.a & 255)); nbttagcompound.setByte("Rot", (byte) (this.i & 255)); - nbttagcompound.setString("ExtraType", this.j); + if (this.j != null) { + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + + GameProfileSerializer.a(nbttagcompound1, this.j); + nbttagcompound.set("Owner", nbttagcompound1); + } } public void a(NBTTagCompound nbttagcompound) { super.a(nbttagcompound); this.a = nbttagcompound.getByte("SkullType"); this.i = nbttagcompound.getByte("Rot"); - if (nbttagcompound.hasKeyOfType("ExtraType", 8)) { - this.j = nbttagcompound.getString("ExtraType"); + if (this.a == 3) { + if (nbttagcompound.hasKeyOfType("Owner", 10)) { + this.j = GameProfileSerializer.a(nbttagcompound.getCompound("Owner")); + } else if (nbttagcompound.hasKeyOfType("ExtraType", 8) && !UtilColor.b(nbttagcompound.getString("ExtraType"))) { + this.j = new GameProfile((UUID) null, nbttagcompound.getString("ExtraType")); + this.d(); + } } } + public GameProfile getGameProfile() { + return this.j; + } + public Packet getUpdatePacket() { NBTTagCompound nbttagcompound = new NBTTagCompound(); @@ -31,9 +51,34 @@ public class TileEntitySkull extends TileEntity { return new PacketPlayOutTileEntityData(this.x, this.y, this.z, 4, nbttagcompound); } - public void setSkullType(int i, String s) { + public void setSkullType(int i) { this.a = i; - this.j = s; + this.j = null; + } + + public void setGameProfile(GameProfile gameprofile) { + this.a = 3; + this.j = gameprofile; + this.d(); + } + + private void d() { + if (this.j != null && !UtilColor.b(this.j.getName())) { + if (!this.j.isComplete() || !this.j.getProperties().containsKey("textures")) { + GameProfile gameprofile = MinecraftServer.getServer().getUserCache().a(this.j.getName()); + + if (gameprofile != null) { + Property property = (Property) Iterables.getFirst(gameprofile.getProperties().get("textures"), null); + + if (property == null) { + gameprofile = MinecraftServer.getServer().av().fillProfileProperties(gameprofile, true); + } + + this.j = gameprofile; + this.update(); + } + } + } } public int getSkullType() { @@ -49,8 +94,4 @@ public class TileEntitySkull extends TileEntity { return this.i; } // CraftBukkit end - - public String getExtraType() { - return this.j; - } } |