diff --git a/routing_tubes.lua b/routing_tubes.lua index 08f4f54..2f4474f 100644 --- a/routing_tubes.lua +++ b/routing_tubes.lua @@ -84,8 +84,9 @@ pipeworks.register_tube("pipeworks:broken_tube", { return end pipeworks.logger(log_msg.." with "..wieldname.." to repair it.") - if minetest.registered_nodes[was_node.name].on_repair then - minetest.registered_nodes[was_node.name].on_repair(pos, was_node, puncher) + local nodedef = minetest.registered_nodes[was_node.name] + if nodedef and nodedef.tube and nodedef.tube.on_repair then + nodedef.tube.on_repair(pos, was_node) else minetest.swap_node(pos, { name = was_node.name, param2 = was_node.param2 }) pipeworks.scan_for_tube_objects(pos) diff --git a/teleport_tube.lua b/teleport_tube.lua index 9c60d06..ad6a51c 100644 --- a/teleport_tube.lua +++ b/teleport_tube.lua @@ -184,6 +184,18 @@ pipeworks.register_tube("pipeworks:teleport_tube", { pos.y = target[d].y pos.z = target[d].z return pipeworks.meseadjlist + 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 }, on_construct = function(pos) @@ -259,18 +271,6 @@ 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 }, })