Farming API
-----------

The farming API allows you to easily register plants and hoes.

`farming.register_hoe(name, hoe definition)`
 * Register a new hoe, see [#hoe definition]

`farming.register_plant(name, Plant definition)`
 * Register a new growing plant, see [#Plant definition]

`farming.registered_plants[name] = definition`
 * Table of registered plants, indexed by plant name
    'crop' holds name of growing crop node minus _step-number at end
    'seed' has name of seed required to plant crop
    'minlight' min light level needed to grow
    'maxlight' max light level needed to grow
    'steps' number of steps crop has in growth cycle
    'trellis' name of trellis node (e.g. "farming:trellis"), default: nil

### Hoe Definition

	{
		description = "My Hoe",                -- Description for tooltip
		inventory_image = "unknown_item.png",  -- Image to be used as wield- and inventory image
		max_uses = 30,                         -- Uses until destroyed
		material = "",                         -- Material for recipes
		recipe = {                             -- Craft recipe, if material isn't used
			{"air", "air", "air"},
			{"", "group:stick", ""},
			{"", "group:stick", ""},
		}
	}

### Plant definition

	{
		description = "My Plant",              -- Description of seed item
		inventory_image = "unknown_item.png",  -- Image to be used as seed's wield- and inventory image
		steps = 8,                             -- How many steps the plant has to grow, until it can be harvested
		-- ^ Always provide a plant texture for each step, format: modname_plantname_i.png (i = stepnumber)
		minlight = 13,                         -- Minimum light to grow
		maxlight = core.LIGHT_MAX           -- Maximum light to grow
		can_grow = function(pos)               -- Called every growth tick to check if plant can grow returning True if needs are met (optional, defaults to checking for wet soil below plant).
	}

Note: Any crops registered with the above function will use the new growing routines, also if crops are manually added with the {growing=1} group they will also grow.

### Crop functions

If a mod registers nodes to be used as crops using the {growing=1} group then an additional function can be used for custom growth checks instead of the standard 'are we above wet soil'.

growth_check = function(pos, [node_name]) [DEPRECATED for above can_grow function]
	-- check surrounding for jungle tree
	if core.find_node_near(pos, 1, {"default:jungletree"}) then
		return true -- place next growth stage
	end
	return false -- condition not met, skip next growth stage until next check
end,

### Scythe items that will not drop

This is a function to add items to a list that scythes will not drop, e.g. farming:trellis or farming:beanpole.

farming.add_to_scythe_not_drops(item_name)

### Start timer function

A handy function that starts a crops timer with a randomly selected time set by using
stage_length setting.  This is mostly used for special functions or 3rd party mods.

farming.start_seed_timer(pos)


### Eatable

A quick function to add {eatable='hp', flammable=2, food='type'} groups to a food item, food_type is generally 2 for food, 3 for drink and 1 for other/unsure to tie in with other games and mods.

farming.add_eatable(item, hp, food_type)


Node Sounds
-----------

Farming Redo will detect wether the Default mod or MineClone/VoxeLibre mod is active and
store whichever sound set is available inside the following to save any other farming
mods from having to detect it themselves:

farming.node_sound_defaults()
farming.node_sound_stone_defaults()
farming.node_sound_dirt_defaults()
farming.node_sound_sand_defaults()
farming.node_sound_gravel_defaults()
farming.node_sound_wood_defaults()
farming.node_sound_leaves_defaults()
farming.node_sound_ice_defaults()
farming.node_sound_metal_defaults()
farming.node_sound_water_defaults()
farming.node_sound_snow_defaults()
farming.node_sound_glass_defaults()
