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.world.World;
007
008 import net.minecraftforge.common.EnumPlantType;
009 import net.minecraftforge.common.ForgeDirection;
010 import net.minecraftforge.common.IPlantable;
011
012 public class ItemSeeds extends Item implements IPlantable
013 {
014 /**
015 * The type of block this seed turns into (wheat or pumpkin stems for instance)
016 */
017 private int blockType;
018
019 /** BlockID of the block the seeds can be planted on. */
020 private int soilBlockID;
021
022 public ItemSeeds(int par1, int par2, int par3)
023 {
024 super(par1);
025 this.blockType = par2;
026 this.soilBlockID = par3;
027 this.setCreativeTab(CreativeTabs.tabMaterials);
028 }
029
030 /**
031 * Callback for item usage. If the item does something special on right clicking, he will have one of those. Return
032 * True if something happen and false if it don't. This is for ITEMS, not BLOCKS
033 */
034 public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10)
035 {
036 if (par7 != 1)
037 {
038 return false;
039 }
040 else if (par2EntityPlayer.canPlayerEdit(par4, par5, par6, par7, par1ItemStack) && par2EntityPlayer.canPlayerEdit(par4, par5 + 1, par6, par7, par1ItemStack))
041 {
042 int var11 = par3World.getBlockId(par4, par5, par6);
043 Block soil = Block.blocksList[var11];
044
045 if (soil != null && soil.canSustainPlant(par3World, par4, par5, par6, ForgeDirection.UP, this) && par3World.isAirBlock(par4, par5 + 1, par6))
046 {
047 par3World.setBlockWithNotify(par4, par5 + 1, par6, this.blockType);
048 --par1ItemStack.stackSize;
049 return true;
050 }
051 else
052 {
053 return false;
054 }
055 }
056 else
057 {
058 return false;
059 }
060 }
061
062 @Override
063 public EnumPlantType getPlantType(World world, int x, int y, int z)
064 {
065 return (blockType == Block.netherStalk.blockID ? EnumPlantType.Nether : EnumPlantType.Crop);
066 }
067
068 @Override
069 public int getPlantID(World world, int x, int y, int z)
070 {
071 return blockType;
072 }
073
074 @Override
075 public int getPlantMetadata(World world, int x, int y, int z)
076 {
077 return 0;
078 }
079 }