98 lines
2.9 KiB
Java
98 lines
2.9 KiB
Java
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 GameProfile j = null;
|
|
|
|
public TileEntitySkull() {}
|
|
|
|
public void b(NBTTagCompound nbttagcompound) {
|
|
super.b(nbttagcompound);
|
|
nbttagcompound.setByte("SkullType", (byte) (this.a & 255));
|
|
nbttagcompound.setByte("Rot", (byte) (this.i & 255));
|
|
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 (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();
|
|
|
|
this.b(nbttagcompound);
|
|
return new PacketPlayOutTileEntityData(this.x, this.y, this.z, 4, nbttagcompound);
|
|
}
|
|
|
|
public void setSkullType(int i) {
|
|
this.a = i;
|
|
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() {
|
|
return this.a;
|
|
}
|
|
|
|
public void setRotation(int i) {
|
|
this.i = i;
|
|
}
|
|
|
|
// CraftBukkit start - add method
|
|
public int getRotation() {
|
|
return this.i;
|
|
}
|
|
// CraftBukkit end
|
|
}
|