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        /**
033         * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer
034         */
035        public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
036        {
037            par3EntityPlayer.displayGUIBook(par1ItemStack);
038            return par1ItemStack;
039        }
040    
041        @SideOnly(Side.CLIENT)
042        public String getItemDisplayName(ItemStack par1ItemStack)
043        {
044            if (par1ItemStack.hasTagCompound())
045            {
046                NBTTagCompound var2 = par1ItemStack.getTagCompound();
047                NBTTagString var3 = (NBTTagString)var2.getTag("title");
048    
049                if (var3 != null)
050                {
051                    return var3.toString();
052                }
053            }
054    
055            return super.getItemDisplayName(par1ItemStack);
056        }
057    
058        @SideOnly(Side.CLIENT)
059    
060        /**
061         * allows items to add custom lines of information to the mouseover description
062         */
063        public void addInformation(ItemStack par1ItemStack, List par2List)
064        {
065            if (par1ItemStack.hasTagCompound())
066            {
067                NBTTagCompound var3 = par1ItemStack.getTagCompound();
068                NBTTagString var4 = (NBTTagString)var3.getTag("author");
069    
070                if (var4 != null)
071                {
072                    par2List.add("\u00a77" + String.format(StatCollector.translateToLocalFormatted("book.byAuthor", new Object[] {var4.data}), new Object[0]));
073                }
074            }
075        }
076    
077        /**
078         * If this function returns true (or the item is damageable), the ItemStack's NBT tag will be sent to the client.
079         */
080        public boolean getShareTag()
081        {
082            return true;
083        }
084    
085        @SideOnly(Side.CLIENT)
086        public boolean hasEffect(ItemStack par1ItemStack)
087        {
088            return true;
089        }
090    }