diff --git a/init.lua b/init.lua index 984b6b3..cb86de9 100644 --- a/init.lua +++ b/init.lua @@ -1,21 +1,24 @@ local time = tonumber(os.clock())+10 local lastpos = vector.zero or {x=0, y=0, z=0} local last_tab +local always_test local function get_nodes(pos) - local rnd_pos = vector.round(pos) - local t = tonumber(os.clock()) - local tmp = vector.equals(rnd_pos, lastpos) - if tmp - and t-time < 10 then - return last_tab - end - if not tmp then - time = t+10 - else + if not always_test then + local rnd_pos = vector.round(pos) + local t = tonumber(os.clock()) + if vector.equals(rnd_pos, lastpos) + and t-time < 10 then + return last_tab + end time = t + lastpos = rnd_pos + local near_objects = minetest.get_objects_inside_radius(pos, 1) + if #near_objects >= 2 then + always_test = true + minetest.after(10, function() always_test = false end) + end end - lastpos = rnd_pos local tab,n = {},1 for i = -1,1,2 do for _,p in pairs({ @@ -26,7 +29,9 @@ local function get_nodes(pos) n = n+1 end end - last_tab = tab + if not always_test then + last_tab = tab + end return tab end