    001    package net.minecraft.item;
    002
    003    import net.minecraft.entity.player.EntityPlayer;
    004    import net.minecraft.nbt.NBTTagCompound;
    005    import net.minecraft.nbt.NBTTagList;
    006    import net.minecraft.nbt.NBTTagString;
    007    import net.minecraft.world.World;
    008
    009    public class ItemWritableBook extends Item
    010    {
    011        public ItemWritableBook(int par1)
    012        {
    013            super(par1);
    014            this.setMaxStackSize(1);
    015        }
    016
    017        /**
    018         * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer
    019         */
    020        public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
    021        {
    022            par3EntityPlayer.displayGUIBook(par1ItemStack);
    023            return par1ItemStack;
    024        }
    025
    026        /**
    027         * If this function returns true (or the item is damageable), the ItemStack's NBT tag will be sent to the client.
    028         */
    029        public boolean getShareTag()
    030        {
    031            return true;
    032        }
    033
    034        public static boolean validBookTagPages(NBTTagCompound par0NBTTagCompound)
    035        {
    036            if (par0NBTTagCompound == null)
    037            {
    038                return false;
    039            }
    040            else if (!par0NBTTagCompound.hasKey("pages"))
    041            {
    042                return false;
    043            }
    044            else
    045            {
    046                NBTTagList var1 = (NBTTagList)par0NBTTagCompound.getTag("pages");
    047
    048                for (int var2 = 0; var2 < var1.tagCount(); ++var2)
    049                {
    050                    NBTTagString var3 = (NBTTagString)var1.tagAt(var2);
    051
    052                    if (var3.data == null)
    053                    {
    054                        return false;
    055                    }
    056
    057                    if (var3.data.length() > 256)
    058                    {
    059                        return false;
    060                    }
    061                }
    062
    063                return true;
    064            }
    065        }
    066    }