nodecore-cd2025/mods/nc_tree/leafdecay.lua
Aaron Suen ab754e6d6e Leaf decay fixes, reinstate /growtrees.
Make growing leaves decay the same way
that normal ones do if the trunk is removed
before leaves finish spreading.
2020-01-16 21:43:07 -05:00

56 lines
1.2 KiB
Lua

-- LUALOCALS < ---------------------------------------------------------
local minetest, nodecore
= minetest, nodecore
-- LUALOCALS > ---------------------------------------------------------
local modname = minetest.get_current_modname()
local function leafcheck(pos)
return nodecore.scan_flood(pos, 5, function(p)
local n = minetest.get_node(p).name
if n == modname .. ":tree"
or n == modname .. ":tree_bud"
or n == "ignore" then
return true
end
if n == modname .. ":leaves"
or n == modname .. ":leaves_bud" then
return
end
return false
end
)
end
nodecore.register_limited_abm({
label = "Leaf Decay",
interval = 1,
chance = 10,
limited_max = 100,
limited_alert = 1000,
nodenames = {modname .. ":leaves"},
action = function(pos)
if not leafcheck(pos) then
return nodecore.leaf_decay(pos)
end
end
})
nodecore.register_limited_abm({
label = "Growing Leaf Decay",
interval = 1,
chance = 10,
limited_max = 100,
limited_alert = 1000,
nodenames = {modname .. ":leaves_bud"},
action = function(pos, node)
if not leafcheck(pos) then
return nodecore.leaf_decay(pos, {
name = modname .. ":leaves",
param = node.param,
param2 = 0
})
end
end
})