Code opaque block redstone power rule (part 1)

This commit is contained in:
Wuzzy 2018-01-17 02:44:00 +01:00
parent 2d5b519830
commit 1522c875ae
3 changed files with 64 additions and 29 deletions

View file

@ -50,6 +50,23 @@ mesecon.on_placenode = function(pos, node)
end
end
end
if minetest.get_item_group(node.name, "opaque") == 1 then
local neighbors = mesecon.mcl_get_neighbors(pos)
local is_powered = mesecon.is_powered(pos)
if is_powered then
for n=1, #neighbors do
local npos = neighbors[n].pos
local nnode = minetest.get_node(npos)
if mesecon.is_conductor_off(nnode) then
mesecon.receptor_on(npos, mesecon.conductor_get_rules(nnode))
elseif mesecon.is_effector_off(nnode.name) then
mesecon.changesignal(npos, nnode, neighbors[n].link, mesecon.state.on, 1)
mesecon.activate(npos, nnode, neighbors[n].link, 1)
end
end
end
end
end
mesecon.on_dignode = function(pos, node)
@ -58,7 +75,21 @@ mesecon.on_dignode = function(pos, node)
elseif mesecon.is_receptor_on(node.name) then
mesecon.receptor_off(pos, mesecon.receptor_get_rules(node))
end
if minetest.get_item_group(node.name, "opaque") == 1 then
local sources = mesecon.is_powered(pos)
local neighbors = mesecon.mcl_get_neighbors(pos)
for n=1, #neighbors do
local npos = neighbors[n].pos
local nlink = neighbors[n].link
local nnode = minetest.get_node(npos)
if mesecon.is_conductor_on(nnode) and not mesecon.is_powered(npos) then
mesecon.receptor_off(npos, mesecon.conductor_get_rules(nnode))
elseif mesecon.is_effector_on(nnode.name) and not mesecon.is_powered(npos) then
mesecon.changesignal(npos, nnode, nlink, mesecon.state.off, 1)
mesecon.deactivate(npos, nnode, nlink, 1)
end
end
end
mesecon.execute_autoconnect_hooks_queue(pos, node)
end