forked from minetest-mods/mesecons
Send changesignals for placed receptors when not powered, make on_placenode code more readable
with comments. Also fixes a bug of lua- / microcontrollers not being updated when pushed by a piston. This could cause some bugs, even though I haven't found any while testing as it is a very core part of mesecons.
This commit is contained in:
parent
a9427d267b
commit
1852e967a9
@ -39,7 +39,6 @@
|
|||||||
-- }
|
-- }
|
||||||
--}
|
--}
|
||||||
|
|
||||||
|
|
||||||
-- PUBLIC VARIABLES
|
-- PUBLIC VARIABLES
|
||||||
mesecon={} -- contains all functions and all global variables
|
mesecon={} -- contains all functions and all global variables
|
||||||
mesecon.queue={} -- contains the ActionQueue
|
mesecon.queue={} -- contains the ActionQueue
|
||||||
|
@ -1,21 +1,33 @@
|
|||||||
mesecon.on_placenode = function (pos, node)
|
mesecon.on_placenode = function (pos, node)
|
||||||
|
-- Receptors: Send on signal when active
|
||||||
if mesecon:is_receptor_on(node.name) then
|
if mesecon:is_receptor_on(node.name) then
|
||||||
mesecon:receptor_on(pos, mesecon:receptor_get_rules(node))
|
mesecon:receptor_on(pos, mesecon:receptor_get_rules(node))
|
||||||
elseif mesecon:is_powered(pos) then
|
end
|
||||||
|
|
||||||
|
-- Conductors: Send turnon signal when powered or replace by respective offstate conductor
|
||||||
|
-- if placed conductor is an onstate one
|
||||||
if mesecon:is_conductor(node.name) then
|
if mesecon:is_conductor(node.name) then
|
||||||
-- receptor_on if itself is powered already
|
if mesecon:is_powered(pos) then
|
||||||
|
-- also call receptor_on if itself is powered already, so that neighboring
|
||||||
|
-- conductors will be activated (when pushing an on-conductor with a piston)
|
||||||
mesecon:turnon (pos)
|
mesecon:turnon (pos)
|
||||||
mesecon:receptor_on (pos, mesecon:conductor_get_rules(node))
|
mesecon:receptor_on (pos, mesecon:conductor_get_rules(node))
|
||||||
else
|
elseif mesecon:is_conductor_off(node.name) then
|
||||||
|
minetest.swap_node(pos, {name = mesecon:get_conductor_off(node)})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Effectors: Send changesignal and activate or deactivate
|
||||||
|
if mesecon:is_effector(node.name) then
|
||||||
|
if mesecon:is_powered(pos) then
|
||||||
mesecon:changesignal(pos, node, mesecon:effector_get_rules(node), "on", 1)
|
mesecon:changesignal(pos, node, mesecon:effector_get_rules(node), "on", 1)
|
||||||
mesecon:activate(pos, node, nil, 1)
|
mesecon:activate(pos, node, nil, 1)
|
||||||
end
|
else
|
||||||
elseif mesecon:is_conductor_on(node) then
|
mesecon:changesignal(pos, node, mesecon:effector_get_rules(node), "off", 1)
|
||||||
minetest.swap_node(pos, {name = mesecon:get_conductor_off(node)})
|
|
||||||
elseif mesecon:is_effector_on (node.name) then
|
|
||||||
mesecon:deactivate(pos, node, nil, 1)
|
mesecon:deactivate(pos, node, nil, 1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
mesecon.on_dignode = function (pos, node)
|
mesecon.on_dignode = function (pos, node)
|
||||||
if mesecon:is_conductor_on(node) then
|
if mesecon:is_conductor_on(node) then
|
||||||
|
Loading…
Reference in New Issue
Block a user