    001package net.minecraft.item;
    002
    003import net.minecraft.entity.player.EntityPlayer;
    004import net.minecraft.nbt.NBTTagCompound;
    005import net.minecraft.nbt.NBTTagList;
    006import net.minecraft.nbt.NBTTagString;
    007import net.minecraft.world.World;
    008
    009public 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 nbttaglist = (NBTTagList)par0NBTTagCompound.getTag("pages");
    047
    048            for (int i = 0; i < nbttaglist.tagCount(); ++i)
    049            {
    050                NBTTagString nbttagstring = (NBTTagString)nbttaglist.tagAt(i);
    051
    052                if (nbttagstring.data == null)
    053                {
    054                    return false;
    055                }
    056
    057                if (nbttagstring.data.length() > 256)
    058                {
    059                    return false;
    060                }
    061            }
    062
    063            return true;
    064        }
    065    }
    066}