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    }