More lag reduction.
This commit is contained in:
parent
02d6c44638
commit
558e778861
12 changed files with 1011 additions and 927 deletions
|
@ -114,76 +114,3 @@ minetest.register_craft({
|
|||
{"flowers:mushroom_brown"}
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
local leaves = {}
|
||||
for _, leaf in pairs(fungal_tree_leaves) do
|
||||
leaves[leaf] = true
|
||||
end
|
||||
|
||||
local get_node_light = minetest.get_node_light
|
||||
local remove_node = minetest.remove_node
|
||||
local set_node = minetest.set_node
|
||||
local get_node_or_nil = minetest.get_node_or_nil
|
||||
|
||||
-- fungal spread
|
||||
minetest.register_abm({
|
||||
nodenames = fungal_tree_leaves,
|
||||
neighbors = {"air", "group:liquid"},
|
||||
interval = 2 * fun_caves.time_factor,
|
||||
chance = 10,
|
||||
catch_up = false,
|
||||
action = function(pos, node)
|
||||
if get_node_light(pos, nil) >= default.LIGHT_MAX - 2 then
|
||||
remove_node(pos)
|
||||
return
|
||||
end
|
||||
|
||||
local grow_pos = {x=pos.x, y=pos.y-1, z=pos.z}
|
||||
local grow_node = get_node_or_nil(grow_pos)
|
||||
if grow_node and grow_node.name == "air" then
|
||||
set_node(grow_pos, {name = node.name})
|
||||
return
|
||||
end
|
||||
|
||||
grow_pos = {x=rand(-1,1)+pos.x, y=rand(-1,1)+pos.y, z=rand(-1,1)+pos.z}
|
||||
grow_node = get_node_or_nil(grow_pos)
|
||||
if grow_node and grow_node.name == "air" and get_node_light(grow_pos, nil) <= fun_caves.light_max then
|
||||
set_node(grow_pos, {name = node.name})
|
||||
return
|
||||
elseif grow_node and leaves[grow_node.name] and grow_node.name ~= node.name then
|
||||
set_node(grow_pos, {name = 'air'})
|
||||
return
|
||||
end
|
||||
|
||||
if rand(40) == 1 then
|
||||
set_node(pos, {name = "fun_caves:fungal_tree_fruit"})
|
||||
return
|
||||
end
|
||||
|
||||
if rand(100) == 1 then
|
||||
set_node(pos, {name = fungal_tree_leaves[rand(#fungal_tree_leaves)]})
|
||||
return
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- new fungi
|
||||
minetest.register_abm({
|
||||
nodenames = {"default:dirt"},
|
||||
neighbors = {"air"},
|
||||
interval = 20 * fun_caves.time_factor,
|
||||
chance = 25,
|
||||
action = function(pos, node)
|
||||
if pos.y > 0 then
|
||||
return
|
||||
end
|
||||
|
||||
local grow_pos = {x=pos.x, y=pos.y+1, z=pos.z}
|
||||
local grow_node = get_node_or_nil(grow_pos)
|
||||
if grow_node and grow_node.name == "air" and (get_node_light(grow_pos, nil) or 99) <= fun_caves.light_max then
|
||||
set_node(grow_pos, {name = fungal_tree_leaves[rand(#fungal_tree_leaves)]})
|
||||
return
|
||||
end
|
||||
end
|
||||
})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue