93 lines
3.6 KiB
Text
93 lines
3.6 KiB
Text
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 = minetest.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 minetest.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)
|
|
|
|
|
|
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()
|