summaryrefslogtreecommitdiff
path: root/mesecons/internal.lua
diff options
context:
space:
mode:
authorJeija <jeija@mesecons.net>2014-11-21 22:04:39 +0100
committerJeija <jeija@mesecons.net>2014-11-21 22:05:35 +0100
commit1b9f1b8c13338529d10d211b8f63f2dc243a681b (patch)
tree90e2820fdbddcc4bfe8ec239553e919525378804 /mesecons/internal.lua
parentdcf1f799c59b2b777c88a9127d0e8d358be0e7cd (diff)
downloadmesecons-1b9f1b8c13338529d10d211b8f63f2dc243a681b.tar
mesecons-1b9f1b8c13338529d10d211b8f63f2dc243a681b.tar.gz
mesecons-1b9f1b8c13338529d10d211b8f63f2dc243a681b.tar.bz2
mesecons-1b9f1b8c13338529d10d211b8f63f2dc243a681b.tar.xz
mesecons-1b9f1b8c13338529d10d211b8f63f2dc243a681b.zip
Fix #182, bug when placing wire crossings next to a powered source
In case this fix creates new bugs, please report them.
Diffstat (limited to 'mesecons/internal.lua')
-rw-r--r--mesecons/internal.lua16
1 files changed, 11 insertions, 5 deletions
diff --git a/mesecons/internal.lua b/mesecons/internal.lua
index 6ed8f74..d45b0bf 100644
--- a/mesecons/internal.lua
+++ b/mesecons/internal.lua
@@ -597,14 +597,18 @@ function mesecon:is_powered(pos, rule)
local rules = mesecon:get_any_inputrules(node)
if not rules then return false end
+ -- List of nodes that send out power to pos
+ local sourcepos = {}
+
if not rule then
for _, rule in ipairs(mesecon:flattenrules(rules)) do
local rulenames = mesecon:rules_link_rule_all_inverted(pos, rule)
for _, rname in ipairs(rulenames) do
local np = mesecon:addPosRule(pos, rname)
local nn = minetest.get_node(np)
- if (mesecon:is_conductor_on (nn, mesecon:invertRule(rname)) or mesecon:is_receptor_on (nn.name)) then
- return true
+ if (mesecon:is_conductor_on (nn, mesecon:invertRule(rname))
+ or mesecon:is_receptor_on (nn.name)) then
+ table.insert(sourcepos, np)
end
end
end
@@ -614,12 +618,14 @@ function mesecon:is_powered(pos, rule)
local np = mesecon:addPosRule(pos, rname)
local nn = minetest.get_node(np)
if (mesecon:is_conductor_on (nn, mesecon:invertRule(rname)) or mesecon:is_receptor_on (nn.name)) then
- return true
+ sourcepos.insert(np)
end
end
end
-
- return false
+
+ -- Return FALSE if not powered, return list of sources if is powered
+ if (#sourcepos == 0) then return false
+ else return sourcepos end
end
--Rules rotation Functions: