001package net.minecraft.item;
002
003import net.minecraft.block.Block;
004import net.minecraft.entity.player.EntityPlayer;
005import net.minecraft.world.World;
006import net.minecraftforge.common.EnumPlantType;
007import net.minecraftforge.common.ForgeDirection;
008import net.minecraftforge.common.IPlantable;
009
010public class ItemSeedFood extends ItemFood implements IPlantable
011{
012    /** Block ID of the crop this seed food should place. */
013    private int cropId;
014
015    /** Block ID of the soil this seed food should be planted on. */
016    private int soilId;
017
018    public ItemSeedFood(int par1, int par2, float par3, int par4, int par5)
019    {
020        super(par1, par2, par3, false);
021        this.cropId = par4;
022        this.soilId = par5;
023    }
024
025    /**
026     * Callback for item usage. If the item does something special on right clicking, he will have one of those. Return
027     * True if something happen and false if it don't. This is for ITEMS, not BLOCKS
028     */
029    public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10)
030    {
031        if (par7 != 1)
032        {
033            return false;
034        }
035        else if (par2EntityPlayer.canPlayerEdit(par4, par5, par6, par7, par1ItemStack) && par2EntityPlayer.canPlayerEdit(par4, par5 + 1, par6, par7, par1ItemStack))
036        {
037            int i1 = par3World.getBlockId(par4, par5, par6);
038            Block soil = Block.blocksList[i1];
039
040            if (soil != null && soil.canSustainPlant(par3World, par4, par5, par6, ForgeDirection.UP, this) && par3World.isAirBlock(par4, par5 + 1, par6))
041            {
042                par3World.func_94575_c(par4, par5 + 1, par6, this.cropId);
043                --par1ItemStack.stackSize;
044                return true;
045            }
046            else
047            {
048                return false;
049            }
050        }
051        else
052        {
053            return false;
054        }
055    }
056
057    @Override
058    public EnumPlantType getPlantType(World world, int x, int y, int z)
059    {
060        return EnumPlantType.Crop;
061    }
062
063    @Override
064    public int getPlantID(World world, int x, int y, int z)
065    {
066        return cropId;
067    }
068
069    @Override
070    public int getPlantMetadata(World world, int x, int y, int z)
071    {
072        return 0;
073    }
074}