diff options
author | Jeija <jeija@mesecons.net> | 2014-11-21 22:04:39 +0100 |
---|---|---|
committer | Jeija <jeija@mesecons.net> | 2014-11-21 22:05:35 +0100 |
commit | 1b9f1b8c13338529d10d211b8f63f2dc243a681b (patch) | |
tree | 90e2820fdbddcc4bfe8ec239553e919525378804 /mesecons/internal.lua | |
parent | dcf1f799c59b2b777c88a9127d0e8d358be0e7cd (diff) | |
download | mesecons-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.lua | 16 |
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: |