From b165e2d3958494f78cfcb7d5e87c26bbdf7987f4 Mon Sep 17 00:00:00 2001 From: Tai Kedzierski Date: Sat, 5 Jan 2019 19:57:02 +0000 Subject: [PATCH] make rainbow staff check unswappable, make unswappable not change unbreakables --- api/main_api.lua | 16 +++++++++++++--- tools/rainbow_staff.lua | 2 +- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/api/main_api.lua b/api/main_api.lua index 7baad3e..5c3e949 100644 --- a/api/main_api.lua +++ b/api/main_api.lua @@ -9,12 +9,22 @@ nssm.unswappable_nodes[#nssm.unswappable_nodes+1] = "bones:bones" nssm.unswappable_nodes[#nssm.unswappable_nodes+1] = "default:chest_locked" nssm.unswappable_node = function (pos, node_list) - -- Return true if the original_node should not be swapped - local _, node, original_node original_node = minetest.env:get_node(pos).name - if minetest.get_item_group(original_node) == "unbreakable" then + -- Return true if the original_node should not be swapped + if original_node ~= "air" and not minetest.registered_nodes[original_node] then + -- remnant unknown block + return true + end + + local node_def = minetest.registered_nodes[original_node] + + if original_node == "nssb:indistructible_morentir" then + minetest.debug(">>> "..dump(node_def)) + end + + if node_def and node_def.groups and node_def.groups.unbreakable then return true end diff --git a/tools/rainbow_staff.lua b/tools/rainbow_staff.lua index 4e07ef8..80feb44 100644 --- a/tools/rainbow_staff.lua +++ b/tools/rainbow_staff.lua @@ -38,7 +38,7 @@ if not nssm.server_rainbow_staff then self.timer = self.timer or os.time() local pos = self.object:getpos() - if minetest.is_protected(pos, "") then + if nssm.unswappable_node(pos) then return end