Support powering of opaque blocks (WIP)

This commit is contained in:
Wuzzy 2018-01-13 02:20:07 +01:00
parent c4ec520986
commit f72717e8de
4 changed files with 83 additions and 39 deletions

View file

@ -81,6 +81,13 @@ mesecon.queue:add_function("receptor_on", function (pos, rules)
for _, rulename in ipairs(rulenames) do
mesecon.turnon(np, rulename)
end
if rule.spread then
if minetest.get_item_group(minetest.get_node(np).name, "opaque") == 1 then
for _, neighbor in ipairs(mesecon.mcl_get_neighbors(np)) do
mesecon.turnon(neighbor.pos, vector.add(rule, neighbor.link))
end
end
end
end
mesecon.vm_commit()
@ -110,6 +117,19 @@ mesecon.queue:add_function("receptor_off", function (pos, rules)
mesecon.vm_abort()
end
end
if rule.spread then
if minetest.get_item_group(minetest.get_node(np).name, "opaque") == 1 then
for _, neighbor in ipairs(mesecon.mcl_get_neighbors(np)) do
mesecon.vm_begin()
mesecon.changesignal(neighbor.pos, minetest.get_node(neighbor.pos), vector.add(rule, neighbor.link), mesecon.state.off, 2)
if (mesecon.turnoff(neighbor.pos, vector.add(rule, neighbor.link))) then
mesecon.vm_commit()
else
mesecon.vm_abort()
end
end
end
end
end
end)