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