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 }