diff options
author | Vanessa Ezekowitz <vanessaezekowitz@gmail.com> | 2016-09-09 06:21:35 -0400 |
---|---|---|
committer | Vanessa Ezekowitz <vanessaezekowitz@gmail.com> | 2016-09-09 06:21:35 -0400 |
commit | def6e465019f7723342746bcec15704d4029502c (patch) | |
tree | 0896167ce50df5ac9c09ce8c38cae31abe076653 /mesecons/init.lua | |
parent | 10466bea04f77261de0d9b77df4f7e4efbe88a19 (diff) | |
download | dreambuilder_modpack-def6e465019f7723342746bcec15704d4029502c.tar dreambuilder_modpack-def6e465019f7723342746bcec15704d4029502c.tar.gz dreambuilder_modpack-def6e465019f7723342746bcec15704d4029502c.tar.bz2 dreambuilder_modpack-def6e465019f7723342746bcec15704d4029502c.tar.xz dreambuilder_modpack-def6e465019f7723342746bcec15704d4029502c.zip |
updated mesecons and signs_lib
Diffstat (limited to 'mesecons/init.lua')
-rw-r--r-- | mesecons/init.lua | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/mesecons/init.lua b/mesecons/init.lua index 6b36e69..7da3583 100644 --- a/mesecons/init.lua +++ b/mesecons/init.lua @@ -70,6 +70,8 @@ dofile(minetest.get_modpath("mesecons").."/internal.lua"); -- these are the only functions you need to remember mesecon.queue:add_function("receptor_on", function (pos, rules) + mesecon.vm_begin() + rules = rules or mesecon.rules.default -- if area (any of the rule targets) is not loaded, keep trying and call this again later @@ -90,6 +92,8 @@ mesecon.queue:add_function("receptor_on", function (pos, rules) mesecon.turnon(np, rulename) end end + + mesecon.vm_commit() end) function mesecon.receptor_on(pos, rules) @@ -112,10 +116,16 @@ mesecon.queue:add_function("receptor_off", function (pos, rules) local np = vector.add(pos, rule) local rulenames = mesecon.rules_link_rule_all(pos, rule) for _, rulename in ipairs(rulenames) do - if not mesecon.connected_to_receptor(np, mesecon.invertRule(rule)) then - mesecon.turnoff(np, rulename) + mesecon.vm_begin() + mesecon.changesignal(np, minetest.get_node(np), rulename, mesecon.state.off, 2) + + -- Turnoff returns true if turnoff process was successful, no onstate receptor + -- was found along the way. Commit changes that were made in voxelmanip. If turnoff + -- returns true, an onstate receptor was found, abort voxelmanip transaction. + if (mesecon.turnoff(np, rulename)) then + mesecon.vm_commit() else - mesecon.changesignal(np, minetest.get_node(np), rulename, mesecon.state.off, 2) + mesecon.vm_abort() end end end |