    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}