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.StatCollector;
010import net.minecraft.world.World;
011
012public 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}