001 package net.minecraft.item; 002 003 import net.minecraft.block.Block; 004 import net.minecraft.creativetab.CreativeTabs; 005 import net.minecraft.entity.player.EntityPlayer; 006 import net.minecraft.tileentity.TileEntitySign; 007 import net.minecraft.util.MathHelper; 008 import net.minecraft.world.World; 009 010 public class ItemSign extends Item 011 { 012 public ItemSign(int par1) 013 { 014 super(par1); 015 this.maxStackSize = 16; 016 this.setCreativeTab(CreativeTabs.tabDecorations); 017 } 018 019 /** 020 * Callback for item usage. If the item does something special on right clicking, he will have one of those. Return 021 * True if something happen and false if it don't. This is for ITEMS, not BLOCKS 022 */ 023 public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) 024 { 025 if (par7 == 0) 026 { 027 return false; 028 } 029 else if (!par3World.getBlockMaterial(par4, par5, par6).isSolid()) 030 { 031 return false; 032 } 033 else 034 { 035 if (par7 == 1) 036 { 037 ++par5; 038 } 039 040 if (par7 == 2) 041 { 042 --par6; 043 } 044 045 if (par7 == 3) 046 { 047 ++par6; 048 } 049 050 if (par7 == 4) 051 { 052 --par4; 053 } 054 055 if (par7 == 5) 056 { 057 ++par4; 058 } 059 060 if (!par2EntityPlayer.canPlayerEdit(par4, par5, par6, par7, par1ItemStack)) 061 { 062 return false; 063 } 064 else if (!Block.signPost.canPlaceBlockAt(par3World, par4, par5, par6)) 065 { 066 return false; 067 } 068 else 069 { 070 if (par7 == 1) 071 { 072 int var11 = MathHelper.floor_double((double)((par2EntityPlayer.rotationYaw + 180.0F) * 16.0F / 360.0F) + 0.5D) & 15; 073 par3World.setBlockAndMetadataWithNotify(par4, par5, par6, Block.signPost.blockID, var11); 074 } 075 else 076 { 077 par3World.setBlockAndMetadataWithNotify(par4, par5, par6, Block.signWall.blockID, par7); 078 } 079 080 --par1ItemStack.stackSize; 081 TileEntitySign var12 = (TileEntitySign)par3World.getBlockTileEntity(par4, par5, par6); 082 083 if (var12 != null) 084 { 085 par2EntityPlayer.displayGUIEditSign(var12); 086 } 087 088 return true; 089 } 090 } 091 } 092 }