package net.minecraft.server; import java.util.List; import javax.annotation.Nullable; public class TileEntityBanner extends TileEntity implements INamableTileEntity { private String a; public EnumColor color; public NBTTagList patterns; private boolean h; private List<EnumBannerPatternType> i; private List<EnumColor> j; private String k; public TileEntityBanner() { this.color = EnumColor.BLACK; } public void a(ItemStack itemstack, boolean flag) { this.patterns = null; NBTTagCompound nbttagcompound = itemstack.d("BlockEntityTag"); if (nbttagcompound != null && nbttagcompound.hasKeyOfType("Patterns", 9)) { this.patterns = nbttagcompound.getList("Patterns", 10).d(); // CraftBukkit start while (this.patterns.size() > 20) { this.patterns.remove(20); } // CraftBukkit end } this.color = flag ? d(itemstack) : ItemBanner.c(itemstack); this.i = null; this.j = null; this.k = ""; this.h = true; this.a = itemstack.hasName() ? itemstack.getName() : null; } public String getName() { return this.hasCustomName() ? this.a : "banner"; } public boolean hasCustomName() { return this.a != null && !this.a.isEmpty(); } public IChatBaseComponent getScoreboardDisplayName() { return (IChatBaseComponent) (this.hasCustomName() ? new ChatComponentText(this.getName()) : new ChatMessage(this.getName(), new Object[0])); } public NBTTagCompound save(NBTTagCompound nbttagcompound) { super.save(nbttagcompound); nbttagcompound.setInt("Base", this.color.getInvColorIndex()); if (this.patterns != null) { nbttagcompound.set("Patterns", this.patterns); } if (this.hasCustomName()) { nbttagcompound.setString("CustomName", this.a); } return nbttagcompound; } public void a(NBTTagCompound nbttagcompound) { super.a(nbttagcompound); if (nbttagcompound.hasKeyOfType("CustomName", 8)) { this.a = nbttagcompound.getString("CustomName"); } this.color = EnumColor.fromInvColorIndex(nbttagcompound.getInt("Base")); this.patterns = nbttagcompound.getList("Patterns", 10); // CraftBukkit start while (this.patterns.size() > 20) { this.patterns.remove(20); } // CraftBukkit end this.i = null; this.j = null; this.k = null; this.h = true; } @Nullable public PacketPlayOutTileEntityData getUpdatePacket() { return new PacketPlayOutTileEntityData(this.position, 6, this.d()); } public NBTTagCompound d() { return this.save(new NBTTagCompound()); } public static int b(ItemStack itemstack) { NBTTagCompound nbttagcompound = itemstack.d("BlockEntityTag"); return nbttagcompound != null && nbttagcompound.hasKey("Patterns") ? nbttagcompound.getList("Patterns", 10).size() : 0; } public static void c(ItemStack itemstack) { NBTTagCompound nbttagcompound = itemstack.d("BlockEntityTag"); if (nbttagcompound != null && nbttagcompound.hasKeyOfType("Patterns", 9)) { NBTTagList nbttaglist = nbttagcompound.getList("Patterns", 10); if (!nbttaglist.isEmpty()) { nbttaglist.remove(nbttaglist.size() - 1); if (nbttaglist.isEmpty()) { itemstack.getTag().remove("BlockEntityTag"); if (itemstack.getTag().isEmpty()) { itemstack.setTag((NBTTagCompound) null); } } } } } public ItemStack l() { ItemStack itemstack = ItemBanner.a(this.color, this.patterns); if (this.hasCustomName()) { itemstack.g(this.getName()); } return itemstack; } public static EnumColor d(ItemStack itemstack) { NBTTagCompound nbttagcompound = itemstack.d("BlockEntityTag"); return nbttagcompound != null && nbttagcompound.hasKey("Base") ? EnumColor.fromInvColorIndex(nbttagcompound.getInt("Base")) : EnumColor.BLACK; } }