    001package net.minecraft.item;
    002
    003import net.minecraft.block.Block;
    004import net.minecraft.creativetab.CreativeTabs;
    005import net.minecraft.entity.player.EntityPlayer;
    006import net.minecraft.world.World;
    007
    008import net.minecraftforge.common.EnumPlantType;
    009import net.minecraftforge.common.ForgeDirection;
    010import net.minecraftforge.common.IPlantable;
    011
    012public 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}