mirror of
https://github.com/minetest/minetest_game.git
synced 2025-06-29 21:30:26 +02:00
Leafdecay: Node timer based implementation, API
This implements a node-timer based leafdecay mechanism, and exposes an API to use it in mods. The API is documented in game_api.txt. `default.register_leafdecay(leafdecaydef)` `leafdecaydef` is a table, with following members: { trunks = { "default:tree"}, -- nodes considered trunks leaves = { "default:leaves", "default:apple"}, -- nodes considered leaves radius = 3, -- activates leafdecay this far from the trunk } The algorithm will drop `leaves` items in the area if no `trunks` are found in the `trunk_radius` sized area around the position of the leaf. If a node listed in `leaves` has a group `leafdecay_drop > 0`, then the item is dropped, otherwise the item is removed but not dropped. The algorithm also implements a value `default.leafdecay_speed` (default 15) which can be modified to increase or decrease of the leaf decay. The algorithm will vary the actual speed a bit to introduce randomness. Leaf decay is randomized by 0.1 seconds to reduce the chance that decay happens many times on the same second interval. This requires nodetimer_interval to be set to values lower than 1.0 to have an effect. The leaves will decay between 2 and 10 seconds after digging the trunk, and happen at non-integer second intervals. -- The API was added by sofar.
This commit is contained in:
@ -2072,3 +2072,57 @@ minetest.register_node("default:cloud", {
|
||||
sounds = default.node_sound_defaults(),
|
||||
groups = {not_in_creative_inventory = 1},
|
||||
})
|
||||
|
||||
--
|
||||
-- register trees for leafdecay
|
||||
--
|
||||
|
||||
if minetest.get_mapgen_setting("mg_name") == "v6" then
|
||||
default.register_leafdecay({
|
||||
trunks = {"default:tree"},
|
||||
leaves = {"default:apple", "default:leaves"},
|
||||
radius = 2,
|
||||
})
|
||||
|
||||
default.register_leafdecay({
|
||||
trunks = {"default:jungletree"},
|
||||
leaves = {"default:jungleleaves"},
|
||||
radius = 3,
|
||||
})
|
||||
|
||||
default.register_leafdecay({
|
||||
trunks = {"default:pine_tree"},
|
||||
leaves = {"default:pine_needles"},
|
||||
radius = 3,
|
||||
})
|
||||
else
|
||||
default.register_leafdecay({
|
||||
trunks = {"default:tree"},
|
||||
leaves = {"default:apple", "default:leaves"},
|
||||
radius = 3,
|
||||
})
|
||||
|
||||
default.register_leafdecay({
|
||||
trunks = {"default:jungletree"},
|
||||
leaves = {"default:jungleleaves"},
|
||||
radius = 2,
|
||||
})
|
||||
|
||||
default.register_leafdecay({
|
||||
trunks = {"default:pine_tree"},
|
||||
leaves = {"default:pine_needles"},
|
||||
radius = 2,
|
||||
})
|
||||
end
|
||||
|
||||
default.register_leafdecay({
|
||||
trunks = {"default:acacia_tree"},
|
||||
leaves = {"default:acacia_leaves"},
|
||||
radius = 2,
|
||||
})
|
||||
|
||||
default.register_leafdecay({
|
||||
trunks = {"default:aspen_tree"},
|
||||
leaves = {"default:aspen_leaves"},
|
||||
radius = 3,
|
||||
})
|
||||
|
Reference in New Issue
Block a user