mirror of
https://github.com/minetest-mods/mesecons.git
synced 2024-12-26 02:10:18 +01:00
mesecon:updatenode()
was written to work only with conductors, though in several places it was used on recepters and effectors. This issue, reported by simion314, is fixed in this commit by explicitly checking for the type of mesecon node being updated.
This commit is contained in:
parent
3bab7cb252
commit
64d109b31b
@ -236,7 +236,7 @@ end
|
|||||||
|
|
||||||
function mesecon:connected_to_pw_src(pos, checked)
|
function mesecon:connected_to_pw_src(pos, checked)
|
||||||
local c = 1
|
local c = 1
|
||||||
if checked == nil then checked = {} end
|
checked = checked or {}
|
||||||
while checked[c] ~= nil do --find out if node has already been checked (to prevent from endless loop)
|
while checked[c] ~= nil do --find out if node has already been checked (to prevent from endless loop)
|
||||||
if compare_pos(checked[c], pos) then
|
if compare_pos(checked[c], pos) then
|
||||||
return false, checked
|
return false, checked
|
||||||
@ -246,16 +246,26 @@ function mesecon:connected_to_pw_src(pos, checked)
|
|||||||
checked[c] = {x=pos.x, y=pos.y, z=pos.z} --add current node to checked
|
checked[c] = {x=pos.x, y=pos.y, z=pos.z} --add current node to checked
|
||||||
|
|
||||||
local node = minetest.env:get_node_or_nil(pos)
|
local node = minetest.env:get_node_or_nil(pos)
|
||||||
if node == nil then return false, checked end
|
|
||||||
if not mesecon:is_conductor(node.name) then return false, checked end
|
|
||||||
|
|
||||||
|
if node == nil then return false, checked end
|
||||||
|
if mesecon:is_receptor_node(node.name) then
|
||||||
|
return true, checked
|
||||||
|
end
|
||||||
|
if mesecon:is_receptor_node_off(node.name) then
|
||||||
|
return true, checked
|
||||||
|
end
|
||||||
if mesecon:is_powered_by_receptor(pos) then --return if conductor is powered
|
if mesecon:is_powered_by_receptor(pos) then --return if conductor is powered
|
||||||
return true, checked
|
return true, checked
|
||||||
end
|
end
|
||||||
|
|
||||||
--Check if conductors around are connected
|
--Check if conductors around are connected
|
||||||
local connected
|
if mesecon:is_conductor(node.name) then
|
||||||
local rules = mesecon:conductor_get_rules(node)
|
rules = mesecon:conductor_get_rules(node)
|
||||||
|
elseif mesecon:is_effector(node.name) then
|
||||||
|
rules = mesecon:effector_get_input_rules(node)
|
||||||
|
else
|
||||||
|
return false, checked
|
||||||
|
end
|
||||||
|
|
||||||
for i, rule in ipairs(rules) do
|
for i, rule in ipairs(rules) do
|
||||||
local np = {}
|
local np = {}
|
||||||
|
Loading…
Reference in New Issue
Block a user