package buildcraft.api.crops; import java.util.List; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public interface ICropHandler { /** * Check if an item is a seed. * * @param stack * @return true if the item can be planted. */ boolean isSeed(ItemStack stack); /** * Check if the item can be planted. You can assume canSustainPlant() will * only be called if isSeed() returned true. * * @param world * @param seed * @param x * @param y * @param z * @return true if the item can be planted at (x, y, z). */ boolean canSustainPlant(World world, ItemStack seed, int x, int y, int z); /** * Plant the item in the block. You can assume plantCrop() will only be * called if canSustainPlant() returned true. * * @param world * @param player * @param seed * @param x * @param y * @param z * @return true if the item was planted at (x, y, z). */ boolean plantCrop(World world, EntityPlayer player, ItemStack seed, int x, int y, int z); /** * Check if a crop is mature and can be harvested. * * @param blockAccess * @param block * @param meta * @param x * @param y * @param z * @return true if the block at (x, y, z) is mature and can be harvested. */ boolean isMature(IBlockAccess blockAccess, Block block, int meta, int x, int y, int z); /** * Harvest the crop. You can assume harvestCrop() will only be called if * isMature() returned true. * * @param world * @param x * @param y * @param z * @param drops * a list to return the harvest's drops. * @return true if the block was successfully harvested. */ boolean harvestCrop(World world, int x, int y, int z, List<ItemStack> drops); }