package forestry.api.farming; import net.minecraft.item.ItemStack; import net.minecraft.world.World; /** * IGermling describes a crop or other harvestable object and can be used to inspect item stacks and blocks for matches. */ public interface IFarmable { /** * @param world * @param x * @param y * @param z * @return true if the block at the given location is a "sapling" for this type, i.e. a non-harvestable immature version of the crop. */ boolean isSaplingAt(World world, int x, int y, int z); /** * @param world * @param x * @param y * @param z * @return {@link ICrop} if the block at the given location is a harvestable and mature crop, null otherwise. */ ICrop getCropAt(World world, int x, int y, int z); /** * @param itemstack * @return true if the item is a valid germling (plantable sapling, seed, etc.) for this type. */ boolean isGermling(ItemStack itemstack); /** * @param itemstack * @return true if the item is something that can drop from this type without actually being harvested as a crop. (Apples or sapling from decaying leaves.) */ boolean isWindfall(ItemStack itemstack); /** * Plants a sapling by manipulating the world. The {@link IFarmLogic} should have verified the given location as valid. Called by the {@link IFarmHousing} * which handles resources. * * @param germling * @param world * @param x * @param y * @param z * @return true on success, false otherwise. */ boolean plantSaplingAt(ItemStack germling, World world, int x, int y, int z); }