ab754e6d6e
Make growing leaves decay the same way that normal ones do if the trunk is removed before leaves finish spreading.
56 lines
1.2 KiB
Lua
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
|
|
})
|