mirror of
https://github.com/sys4-fr/server-nalc.git
synced 2025-12-19 16:25:47 +01:00
initial commit
subgame + mods
This commit is contained in:
117
mods/moretrees/leafdecay.lua
Executable file
117
mods/moretrees/leafdecay.lua
Executable file
@@ -0,0 +1,117 @@
|
||||
-- leaf decay
|
||||
|
||||
-- this function is based on the default leafdecay code
|
||||
local process_drops = function(pos, name)
|
||||
local drops = minetest.get_node_drops(name)
|
||||
for _,dropitem in ipairs(drops) do
|
||||
if dropitem ~= name
|
||||
or (string.find(name, "leaves") and moretrees.decay_leaves_as_items) then
|
||||
local newpos = {
|
||||
x=pos.x + math.random() - 0.5,
|
||||
y=pos.y + math.random() - 0.5,
|
||||
z=pos.z + math.random() - 0.5
|
||||
}
|
||||
minetest.add_item(newpos, dropitem)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if moretrees.enable_leafdecay then
|
||||
for i in ipairs(moretrees.treelist) do
|
||||
local treename = moretrees.treelist[i][1]
|
||||
if treename ~= "jungletree" and treename ~= "fir" and treename ~= "palm" then
|
||||
minetest.register_abm({
|
||||
nodenames = "moretrees:"..treename.."_leaves",
|
||||
interval = moretrees.leafdecay_delay,
|
||||
chance = moretrees.leafdecay_chance,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
if minetest.find_node_near(pos, moretrees.leafdecay_radius, { "ignore", "moretrees:"..treename.."_trunk" }) then return end
|
||||
process_drops(pos, node.name)
|
||||
minetest.remove_node(pos)
|
||||
nodeupdate(pos)
|
||||
end
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {"moretrees:jungletree_leaves_red","moretrees:jungletree_leaves_green","moretrees:jungletree_leaves_yellow"},
|
||||
interval = moretrees.leafdecay_delay,
|
||||
chance = moretrees.leafdecay_chance,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
if minetest.find_node_near(pos, moretrees.leafdecay_radius, {"ignore", "default:jungletree", "moretrees:jungletree_trunk"}) then return end
|
||||
process_drops(pos, node.name)
|
||||
minetest.remove_node(pos)
|
||||
nodeupdate(pos)
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {"moretrees:fir_leaves", "moretrees:fir_leaves_bright"},
|
||||
interval = moretrees.leafdecay_delay,
|
||||
chance = moretrees.leafdecay_chance,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
if minetest.find_node_near(pos, moretrees.leafdecay_radius, { "ignore", "moretrees:fir_trunk" }) then return end
|
||||
process_drops(pos, node.name)
|
||||
minetest.remove_node(pos)
|
||||
nodeupdate(pos)
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = "moretrees:palm_leaves",
|
||||
interval = moretrees.leafdecay_delay,
|
||||
chance = moretrees.leafdecay_chance,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
if minetest.find_node_near(pos, moretrees.palm_leafdecay_radius, { "ignore", "moretrees:palm_trunk" }) then return end
|
||||
process_drops(pos, node.name)
|
||||
minetest.remove_node(pos)
|
||||
nodeupdate(pos)
|
||||
end
|
||||
})
|
||||
end
|
||||
|
||||
if moretrees.enable_default_leafdecay then
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = "default:leaves",
|
||||
interval = moretrees.default_leafdecay_delay,
|
||||
chance = moretrees.default_leafdecay_chance,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
if minetest.find_node_near(pos, moretrees.default_leafdecay_radius, { "ignore", "default:tree" }) then return end
|
||||
process_drops(pos, node.name)
|
||||
minetest.remove_node(pos)
|
||||
nodeupdate(pos)
|
||||
end
|
||||
})
|
||||
end
|
||||
|
||||
-- Decay apple tree blossoms from nature_classic mod
|
||||
if minetest.get_modpath("nature_classic") then
|
||||
minetest.register_abm({
|
||||
nodenames = "moretrees:apple_blossoms",
|
||||
interval = moretrees.default_leafdecay_delay,
|
||||
chance = moretrees.default_leafdecay_chance,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
if minetest.find_node_near(pos, moretrees.leafdecay_radius, { "ignore", "moretrees:apple_tree_trunk" }) then return end
|
||||
process_drops(pos, "moretrees:apple_tree_leaves")
|
||||
minetest.remove_node(pos)
|
||||
nodeupdate(pos)
|
||||
end
|
||||
})
|
||||
end
|
||||
|
||||
if moretrees.enable_default_jungle_leafdecay then
|
||||
minetest.register_abm({
|
||||
nodenames = "default:jungleleaves",
|
||||
interval = moretrees.default_jungle_leafdecay_delay,
|
||||
chance = moretrees.default_jungle_leafdecay_chance,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
if minetest.find_node_near(pos, moretrees.default_jungle_leafdecay_radius, { "ignore", "default:jungletree" }) then return end
|
||||
process_drops(pos, node.name)
|
||||
minetest.remove_node(pos)
|
||||
nodeupdate(pos)
|
||||
end
|
||||
})
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user