package net.minecraft.item; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import java.util.List; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagString; import net.minecraft.util.StatCollector; import net.minecraft.world.World; public class ItemEditableBook extends Item { public ItemEditableBook(int par1) { super(par1); this.setMaxStackSize(1); } public static boolean validBookTagContents(NBTTagCompound par0NBTTagCompound) { if (!ItemWritableBook.validBookTagPages(par0NBTTagCompound)) { return false; } else if (!par0NBTTagCompound.hasKey("title")) { return false; } else { String var1 = par0NBTTagCompound.getString("title"); return var1 != null && var1.length() <= 16 ? par0NBTTagCompound.hasKey("author") : false; } } public String getItemDisplayName(ItemStack par1ItemStack) { if (par1ItemStack.hasTagCompound()) { NBTTagCompound var2 = par1ItemStack.getTagCompound(); NBTTagString var3 = (NBTTagString)var2.getTag("title"); if (var3 != null) { return var3.toString(); } } return super.getItemDisplayName(par1ItemStack); } @SideOnly(Side.CLIENT) /** * allows items to add custom lines of information to the mouseover description */ public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) { if (par1ItemStack.hasTagCompound()) { NBTTagCompound var5 = par1ItemStack.getTagCompound(); NBTTagString var6 = (NBTTagString)var5.getTag("author"); if (var6 != null) { par3List.add("\u00a77" + String.format(StatCollector.translateToLocalFormatted("book.byAuthor", new Object[] {var6.data}), new Object[0])); } } } /** * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer */ public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { par3EntityPlayer.displayGUIBook(par1ItemStack); return par1ItemStack; } /** * If this function returns true (or the item is damageable), the ItemStack's NBT tag will be sent to the client. */ public boolean getShareTag() { return true; } @SideOnly(Side.CLIENT) public boolean hasEffect(ItemStack par1ItemStack) { return true; } }