Skip to content

Commit cc860ac

Browse files
authoredOct 18, 2017
Publish some LuaC API (#348)
1 parent 748446b commit cc860ac

File tree

1 file changed

+26
-7
lines changed

1 file changed

+26
-7
lines changed
 

‎mesecons_luacontroller/init.lua

+26-7
Original file line numberDiff line numberDiff line change
@@ -522,6 +522,23 @@ local digiline = {
522522
end
523523
}
524524
}
525+
526+
local function get_program(pos)
527+
local meta = minetest.get_meta(pos)
528+
return meta:get_string("code")
529+
end
530+
531+
local function set_program(pos, code)
532+
reset(pos)
533+
reset_meta(pos, code)
534+
local err = run(pos, {type="program"})
535+
if err then
536+
reset_meta(pos, code, err)
537+
return false, err
538+
end
539+
return true
540+
end
541+
525542
local function on_receive_fields(pos, form_name, fields, sender)
526543
if not fields.program then
527544
return
@@ -531,12 +548,10 @@ local function on_receive_fields(pos, form_name, fields, sender)
531548
minetest.record_protection_violation(pos, name)
532549
return
533550
end
534-
reset(pos)
535-
reset_meta(pos, fields.code)
536-
local err = run(pos, {type="program"})
537-
if err then
538-
print(err)
539-
reset_meta(pos, fields.code, err)
551+
local ok, err = set_program(pos, fields.code)
552+
if not ok then
553+
-- it's not an error from the server perspective
554+
minetest.log("action", "Lua controller programming error: " .. err)
540555
end
541556
end
542557

@@ -590,7 +605,11 @@ for d = 0, 1 do
590605
receptor = {
591606
state = mesecon.state.on,
592607
rules = output_rules[cid]
593-
}
608+
},
609+
luacontroller = {
610+
get_program = get_program,
611+
set_program = set_program,
612+
},
594613
}
595614

596615
minetest.register_node(node_name, {

0 commit comments

Comments
 (0)
Please sign in to comment.