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 public String getItemDisplayName(ItemStack par1ItemStack) 033 { 034 if (par1ItemStack.hasTagCompound()) 035 { 036 NBTTagCompound var2 = par1ItemStack.getTagCompound(); 037 NBTTagString var3 = (NBTTagString)var2.getTag("title"); 038 039 if (var3 != null) 040 { 041 return var3.toString(); 042 } 043 } 044 045 return super.getItemDisplayName(par1ItemStack); 046 } 047 048 @SideOnly(Side.CLIENT) 049 050 /** 051 * allows items to add custom lines of information to the mouseover description 052 */ 053 public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) 054 { 055 if (par1ItemStack.hasTagCompound()) 056 { 057 NBTTagCompound var5 = par1ItemStack.getTagCompound(); 058 NBTTagString var6 = (NBTTagString)var5.getTag("author"); 059 060 if (var6 != null) 061 { 062 par3List.add("\u00a77" + String.format(StatCollector.translateToLocalFormatted("book.byAuthor", new Object[] {var6.data}), new Object[0])); 063 } 064 } 065 } 066 067 /** 068 * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer 069 */ 070 public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) 071 { 072 par3EntityPlayer.displayGUIBook(par1ItemStack); 073 return par1ItemStack; 074 } 075 076 /** 077 * If this function returns true (or the item is damageable), the ItemStack's NBT tag will be sent to the client. 078 */ 079 public boolean getShareTag() 080 { 081 return true; 082 } 083 084 @SideOnly(Side.CLIENT) 085 public boolean hasEffect(ItemStack par1ItemStack) 086 { 087 return true; 088 } 089 }