summaryrefslogtreecommitdiff
path: root/mesecons_luacontroller
diff options
context:
space:
mode:
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>2017-10-27 15:13:31 -0400
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>2017-10-27 15:13:31 -0400
commit6281dc744dc3951234931a9f44c3bdd353f79df7 (patch)
tree0ead0d0d18be58bed7480cb9a5ea1495230c568f /mesecons_luacontroller
parent2e6082ccdbd121cd5fc0f82a931ac01ac00dcb76 (diff)
downloaddreambuilder_modpack-6281dc744dc3951234931a9f44c3bdd353f79df7.tar
dreambuilder_modpack-6281dc744dc3951234931a9f44c3bdd353f79df7.tar.gz
dreambuilder_modpack-6281dc744dc3951234931a9f44c3bdd353f79df7.tar.bz2
dreambuilder_modpack-6281dc744dc3951234931a9f44c3bdd353f79df7.tar.xz
dreambuilder_modpack-6281dc744dc3951234931a9f44c3bdd353f79df7.zip
updated boost cart, homedecor modpack, castles modpack, currency, farming-redo,
maptools, mesecons, moreblocks, moreores, pipeworks, quartz
Diffstat (limited to 'mesecons_luacontroller')
-rw-r--r--mesecons_luacontroller/init.lua35
1 files changed, 28 insertions, 7 deletions
diff --git a/mesecons_luacontroller/init.lua b/mesecons_luacontroller/init.lua
index 25273a1..93703d8 100644
--- a/mesecons_luacontroller/init.lua
+++ b/mesecons_luacontroller/init.lua
@@ -522,6 +522,23 @@ local digiline = {
end
}
}
+
+local function get_program(pos)
+ local meta = minetest.get_meta(pos)
+ return meta:get_string("code")
+end
+
+local function set_program(pos, code)
+ reset(pos)
+ reset_meta(pos, code)
+ local err = run(pos, {type="program"})
+ if err then
+ reset_meta(pos, code, err)
+ return false, err
+ end
+ return true
+end
+
local function on_receive_fields(pos, form_name, fields, sender)
if not fields.program then
return
@@ -531,12 +548,10 @@ local function on_receive_fields(pos, form_name, fields, sender)
minetest.record_protection_violation(pos, name)
return
end
- reset(pos)
- reset_meta(pos, fields.code)
- local err = run(pos, {type="program"})
- if err then
- print(err)
- reset_meta(pos, fields.code, err)
+ local ok, err = set_program(pos, fields.code)
+ if not ok then
+ -- it's not an error from the server perspective
+ minetest.log("action", "Lua controller programming error: " .. err)
end
end
@@ -590,7 +605,11 @@ for d = 0, 1 do
receptor = {
state = mesecon.state.on,
rules = output_rules[cid]
- }
+ },
+ luacontroller = {
+ get_program = get_program,
+ set_program = set_program,
+ },
}
minetest.register_node(node_name, {
@@ -629,6 +648,7 @@ for d = 0, 1 do
mesecon.receptor_off(pos, output_rules)
end,
is_luacontroller = true,
+ on_blast = mesecon.on_blastnode,
})
end
end
@@ -669,6 +689,7 @@ minetest.register_node(BASENAME .. "_burnt", {
end,
},
},
+ on_blast = mesecon.on_blastnode,
})
------------------------