From 1e10718a073215639e3421887c166c306a74aacf Mon Sep 17 00:00:00 2001 From: SX <50966843+S-S-X@users.noreply.github.com> Date: Tue, 21 Jun 2022 06:31:52 +0300 Subject: [PATCH] Use on_repair when repairing tube --- routing_tubes.lua | 8 ++++++-- teleport_tube.lua | 12 ++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/routing_tubes.lua b/routing_tubes.lua index 5fc1d82..08f4f54 100644 --- a/routing_tubes.lua +++ b/routing_tubes.lua @@ -84,8 +84,12 @@ pipeworks.register_tube("pipeworks:broken_tube", { return end pipeworks.logger(log_msg.." with "..wieldname.." to repair it.") - minetest.swap_node(pos, { name = was_node.name, param2 = was_node.param2 }) - pipeworks.scan_for_tube_objects(pos) + if minetest.registered_nodes[was_node.name].on_repair then + minetest.registered_nodes[was_node.name].on_repair(pos, was_node, puncher) + else + minetest.swap_node(pos, { name = was_node.name, param2 = was_node.param2 }) + pipeworks.scan_for_tube_objects(pos) + end end } }) diff --git a/teleport_tube.lua b/teleport_tube.lua index 7250045..9c60d06 100644 --- a/teleport_tube.lua +++ b/teleport_tube.lua @@ -259,6 +259,18 @@ pipeworks.register_tube("pipeworks:teleport_tube", { end, on_destruct = function(pos) remove_tube(pos) + end, + on_repair = function(pos, node) + local meta = minetest.get_meta(pos) + local channel = meta:get_string("channel") + minetest.swap_node(pos, { name = node.name, param2 = node.param2 }) + pipeworks.scan_for_tube_objects(pos) + if channel ~= "" then + local can_receive = meta:get_int("can_receive") + set_tube(pos, channel, can_receive) + local cr_description = (can_receive == 1) and "sending and receiving" or "sending" + meta:set_string("infotext", S("Teleportation Tube @1 on '@2'", cr_description, channel)) + end end }, })