40 lines
927 B
Lua
Raw Normal View History

-- LUALOCALS < ---------------------------------------------------------
local ipairs, minetest, nodecore
= ipairs, minetest, nodecore
-- LUALOCALS > ---------------------------------------------------------
local hash = minetest.hash_node_position
local oldreg = minetest.register_abm
function minetest.register_abm(def, ...)
if not def.neighbors_invert then return oldreg(def, ...) end
local nnames = def.nodenames
def.nodenames = def.neighbors
def.neighbors = nnames
local oldact = def.action
local dirty
local blocked = {}
function def.action(pos)
if not dirty then
dirty = true
minetest.after(0, function()
blocked = {}
dirty = nil
end)
end
for _, npos in ipairs(nodecore.find_nodes_around(pos, nnames, 1)) do
local key = hash(npos)
if not blocked[key] then
blocked[key] = true
oldact(npos, minetest.get_node(npos))
end
end
end
return oldreg(def, ...)
end