forked from mtcontrib/plantlife_modpack
Limit the number of blossoms or leaves queued for conversion
This commit is contained in:
parent
8348a745f8
commit
4c70d6d160
@ -1,8 +1,6 @@
|
||||
-- helper functions
|
||||
|
||||
minetest.register_globalstep(function(dtime)
|
||||
nature.dtime = dtime
|
||||
if #nature.blossomqueue > 0 and dtime < 0.2 then
|
||||
local function process_blossom_queue_item()
|
||||
local pos = nature.blossomqueue[1][1]
|
||||
local node = nature.blossomqueue[1][2]
|
||||
local replace = nature.blossomqueue[1][3]
|
||||
@ -13,15 +11,42 @@ minetest.register_globalstep(function(dtime)
|
||||
nature:grow_node(pos, replace) -- now actually grow it.
|
||||
table.remove(nature.blossomqueue, 1)
|
||||
end
|
||||
|
||||
minetest.register_globalstep(function(dtime)
|
||||
nature.dtime = dtime
|
||||
if #nature.blossomqueue > 0 and dtime < 0.2 then
|
||||
local i = 1
|
||||
if dtime < 0.1 then
|
||||
i = i + 4
|
||||
end
|
||||
if dtime < 0.05 then
|
||||
i = i + 10
|
||||
end
|
||||
while #nature.blossomqueue > 0 and i > 0 do
|
||||
process_blossom_queue_item()
|
||||
i = i - 1
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
function nature.enqueue_node(pos, node, replace)
|
||||
local idx = #nature.blossomqueue
|
||||
if idx < nature.blossomqueue_max then
|
||||
local enqueue_prob = 0
|
||||
if idx < nature.blossomqueue_max * 0.8 then
|
||||
enqueue_prob = 1
|
||||
else
|
||||
-- Reduce queue growth as it gets closer to its max.
|
||||
enqueue_prob = 1 - (idx - nature.blossomqueue_max * 0.8) / (nature.blossomqueue_max * 0.2)
|
||||
end
|
||||
if enqueue_prob == 1 or math.random(100) <= 100 * enqueue_prob then
|
||||
nature.blossomqueue[idx+1] = {}
|
||||
nature.blossomqueue[idx+1][1] = pos
|
||||
nature.blossomqueue[idx+1][2] = node
|
||||
nature.blossomqueue[idx+1][3] = replace
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function set_young_node(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
|
@ -7,6 +7,7 @@ local current_mod_name = minetest.get_current_modname()
|
||||
|
||||
nature = {}
|
||||
nature.blossomqueue = {}
|
||||
nature.blossomqueue_max = 1000
|
||||
|
||||
nature.blossom_node = "nature:blossom"
|
||||
nature.blossom_leaves = "default:leaves"
|
||||
|
Loading…
Reference in New Issue
Block a user