forked from mtcontrib/plantlife_modpack
		
	Limit the number of blossoms or leaves queued for conversion
This commit is contained in:
		@@ -1,8 +1,6 @@
 | 
				
			|||||||
-- helper functions
 | 
					-- helper functions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
minetest.register_globalstep(function(dtime)
 | 
					local function process_blossom_queue_item()
 | 
				
			||||||
	nature.dtime = dtime
 | 
					 | 
				
			||||||
	if #nature.blossomqueue > 0 and dtime < 0.2 then
 | 
					 | 
				
			||||||
	local pos  = nature.blossomqueue[1][1]
 | 
						local pos  = nature.blossomqueue[1][1]
 | 
				
			||||||
	local node = nature.blossomqueue[1][2]
 | 
						local node = nature.blossomqueue[1][2]
 | 
				
			||||||
	local replace = nature.blossomqueue[1][3]
 | 
						local replace = nature.blossomqueue[1][3]
 | 
				
			||||||
@@ -12,15 +10,42 @@ minetest.register_globalstep(function(dtime)
 | 
				
			|||||||
	end
 | 
						end
 | 
				
			||||||
	nature:grow_node(pos, replace) -- now actually grow it.
 | 
						nature:grow_node(pos, replace) -- now actually grow it.
 | 
				
			||||||
	table.remove(nature.blossomqueue, 1)
 | 
						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
 | 
				
			||||||
end)
 | 
					end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function nature.enqueue_node(pos, node, replace)
 | 
					function nature.enqueue_node(pos, node, replace)
 | 
				
			||||||
	local idx = #nature.blossomqueue
 | 
						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] = {}
 | 
				
			||||||
			nature.blossomqueue[idx+1][1] = pos
 | 
								nature.blossomqueue[idx+1][1] = pos
 | 
				
			||||||
			nature.blossomqueue[idx+1][2] = node
 | 
								nature.blossomqueue[idx+1][2] = node
 | 
				
			||||||
			nature.blossomqueue[idx+1][3] = replace
 | 
								nature.blossomqueue[idx+1][3] = replace
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
local function set_young_node(pos)
 | 
					local function set_young_node(pos)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,6 +7,7 @@ local current_mod_name = minetest.get_current_modname()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
nature = {}
 | 
					nature = {}
 | 
				
			||||||
nature.blossomqueue = {}
 | 
					nature.blossomqueue = {}
 | 
				
			||||||
 | 
					nature.blossomqueue_max = 1000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
nature.blossom_node = "nature:blossom"
 | 
					nature.blossom_node = "nature:blossom"
 | 
				
			||||||
nature.blossom_leaves = "default:leaves"
 | 
					nature.blossom_leaves = "default:leaves"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user