diff options
author | cheapie <no-email-for-you@example.com> | 2016-12-24 01:56:06 -0600 |
---|---|---|
committer | cheapie <no-email-for-you@example.com> | 2016-12-24 01:56:06 -0600 |
commit | 99eab9dd58223664a6e78da4def93f69f38d1990 (patch) | |
tree | ae2be68ea08075ad855e61e60179c30d41d41c2c | |
parent | 6273c27d944151404ce046aab5a03043be7a17e8 (diff) | |
download | digistuff-99eab9dd58223664a6e78da4def93f69f38d1990.tar digistuff-99eab9dd58223664a6e78da4def93f69f38d1990.tar.gz digistuff-99eab9dd58223664a6e78da4def93f69f38d1990.tar.bz2 digistuff-99eab9dd58223664a6e78da4def93f69f38d1990.tar.xz digistuff-99eab9dd58223664a6e78da4def93f69f38d1990.zip |
Add modem
-rw-r--r-- | init.lua | 49 |
1 files changed, 49 insertions, 0 deletions
@@ -756,3 +756,52 @@ minetest.register_node("digistuff:piezo", { }, }, }) + +local http = minetest.request_http_api() + +if http then + minetest.register_node("digistuff:modem", { + description = "Digilines Modem", + groups = {cracky=3}, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec","field[channel;Channel;${channel}") + end, + tiles = { + "digistuff_piezo_top.png", + "digistuff_piezo_sides.png", + "digistuff_piezo_sides.png", + "digistuff_piezo_sides.png", + "digistuff_piezo_sides.png", + "digistuff_piezo_sides.png" + }, + on_receive_fields = function(pos, formname, fields, sender) + local name = sender:get_player_name() + if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then + minetest.record_protection_violation(pos,name) + return + end + local meta = minetest.get_meta(pos) + if fields.channel then meta:set_string("channel",fields.channel) end + end, + digiline = + { + receptor = {}, + effector = { + action = function(pos,node,channel,msg) + local meta = minetest.get_meta(pos) + if meta:get_string("channel") ~= channel then return end + if type(msg) ~= "string" then return end + http.fetch({ + url = msg, + timeout = 5, + user_agent = "Minetest Digilines Modem", + }, + function(res) + digiline:receptor_send(pos, digiline.rules.default, channel, res) + end) + end + }, + }, + }) +end |