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 }