From b8f07b9009a45badea4c2ac6be88227f43b78ace Mon Sep 17 00:00:00 2001 From: SX <50966843+S-S-X@users.noreply.github.com> Date: Thu, 23 Jun 2022 00:01:00 +0300 Subject: [PATCH] Verify was_node registration --- routing_tubes.lua | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/routing_tubes.lua b/routing_tubes.lua index 2f4474f..7593322 100644 --- a/routing_tubes.lua +++ b/routing_tubes.lua @@ -64,32 +64,38 @@ pipeworks.register_tube("pipeworks:broken_tube", { local itemstack = puncher:get_wielded_item() local wieldname = itemstack:get_name() local playername = puncher:get_player_name() - local log_msg = playername.." struck a broken tube at "..minetest.pos_to_string(pos).."\n" + local log_msg = playername.." struck a broken tube at "..minetest.pos_to_string(pos).."\n " local meta = minetest.get_meta(pos) local was_node = minetest.deserialize(meta:get_string("the_tube_was")) if not was_node then - pipeworks.logger(log_msg.." but it can't be repaired.") + pipeworks.logger(log_msg.."but it can't be repaired.") return end if not pipeworks.check_and_wear_hammer(puncher) then if wieldname == "" then - pipeworks.logger(log_msg.." by hand. It's not very effective.") + pipeworks.logger(log_msg.."by hand. It's not very effective.") if minetest.settings:get_bool("enable_damage") then minetest.chat_send_player(playername,S("Broken tubes may be a bit sharp. Perhaps try with a hammer?")) puncher:set_hp(puncher:get_hp()-1) end else - pipeworks.logger(log_msg.." with "..wieldname.." but that tool is too weak.") + pipeworks.logger(log_msg.."with "..wieldname.." but that tool is too weak.") end return end - pipeworks.logger(log_msg.." with "..wieldname.." to repair it.") + log_msg = log_msg.."with "..wieldname.." to repair it" 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) + if nodedef then + pipeworks.logger(log_msg..".") + if 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) + end else - minetest.swap_node(pos, { name = was_node.name, param2 = was_node.param2 }) - pipeworks.scan_for_tube_objects(pos) + pipeworks.logger(log_msg.." but original node "..was_node.name.." is not registered anymore.") + minetest.chat_send_player(playername, S("This tube cannot be repaired.")) end end }