001    package net.minecraft.src;
002    
003    import cpw.mods.fml.common.Side;
004    import cpw.mods.fml.common.asm.SideOnly;
005    import java.util.List;
006    
007    public class ItemEditableBook extends Item
008    {
009        public ItemEditableBook(int par1)
010        {
011            super(par1);
012            this.setMaxStackSize(1);
013        }
014    
015        public static boolean validBookTagContents(NBTTagCompound par0NBTTagCompound)
016        {
017            if (!ItemWritableBook.validBookTagPages(par0NBTTagCompound))
018            {
019                return false;
020            }
021            else if (!par0NBTTagCompound.hasKey("title"))
022            {
023                return false;
024            }
025            else
026            {
027                String var1 = par0NBTTagCompound.getString("title");
028                return var1 != null && var1.length() <= 16 ? par0NBTTagCompound.hasKey("author") : false;
029            }
030        }
031    
032        public String getItemDisplayName(ItemStack par1ItemStack)
033        {
034            if (par1ItemStack.hasTagCompound())
035            {
036                NBTTagCompound var2 = par1ItemStack.getTagCompound();
037                NBTTagString var3 = (NBTTagString)var2.getTag("title");
038    
039                if (var3 != null)
040                {
041                    return var3.toString();
042                }
043            }
044    
045            return super.getItemDisplayName(par1ItemStack);
046        }
047    
048        @SideOnly(Side.CLIENT)
049    
050        /**
051         * allows items to add custom lines of information to the mouseover description
052         */
053        public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4)
054        {
055            if (par1ItemStack.hasTagCompound())
056            {
057                NBTTagCompound var5 = par1ItemStack.getTagCompound();
058                NBTTagString var6 = (NBTTagString)var5.getTag("author");
059    
060                if (var6 != null)
061                {
062                    par3List.add("\u00a77" + String.format(StatCollector.translateToLocalFormatted("book.byAuthor", new Object[] {var6.data}), new Object[0]));
063                }
064            }
065        }
066    
067        /**
068         * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer
069         */
070        public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
071        {
072            par3EntityPlayer.displayGUIBook(par1ItemStack);
073            return par1ItemStack;
074        }
075    
076        /**
077         * If this function returns true (or the item is damageable), the ItemStack's NBT tag will be sent to the client.
078         */
079        public boolean getShareTag()
080        {
081            return true;
082        }
083    
084        @SideOnly(Side.CLIENT)
085        public boolean hasEffect(ItemStack par1ItemStack)
086        {
087            return true;
088        }
089    }