From 43bb8dc803f22aa7277dff090c7c43f07cb78f6e Mon Sep 17 00:00:00 2001 From: Luke aka SwissalpS Date: Fri, 26 May 2023 23:43:24 +0200 Subject: [PATCH] allow setting can_receive flag by digilines basically also allows sending tables to change both or either the tp-channel and receive toggle --- teleport_tube.lua | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/teleport_tube.lua b/teleport_tube.lua index 74a610a..4733e1a 100644 --- a/teleport_tube.lua +++ b/teleport_tube.lua @@ -259,14 +259,32 @@ local function repair_tube(pos, node) update_meta(meta) end -local function digiline_action(pos, _, channel, msg) +local function digiline_action(pos, _, digiline_channel, msg) local meta = minetest.get_meta(pos) - if channel ~= meta:get_string("digiline_channel") or type(msg) ~= "string" then + if digiline_channel ~= meta:get_string("digiline_channel") then return end - local name = meta:get_string("owner") - local cr = meta:get_int("can_receive") - update_tube(pos, msg, cr, name) + local channel = meta:get_string("channel") + local can_receive = meta:get_int("can_receive") + local t_msg = type(msg) + if t_msg == "string" then + channel = msg + elseif t_msg == "table" then + if type(msg.channel) == "string" then + channel = msg.channel + end + if nil ~= msg.can_receive then + if msg.can_receive == 1 or msg.can_receive == true then + can_receive = 1 + else + can_receive = 0 + end + end + else + return + end + local player_name = meta:get_string("owner") + update_tube(pos, channel, can_receive, player_name) update_meta(meta) end