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