From befe3ecc86f046310ec0a5c24f82acea2ad13d9d Mon Sep 17 00:00:00 2001 From: Vanessa Dannenberg <vanessa.e.dannenberg@gmail.com> Date: Wed, 27 May 2020 18:32:57 +0200 Subject: [PATCH] Fix incorrect numeric types for 5.3.0-dev --- wrench/init.lua | 15 ++++++++++----- 1 files changed, 10 insertions(+), 5 deletions(-) diff --git a/wrench/init.lua b/wrench/init.lua index f99fd14..adb80c9 100644 --- a/wrench/init.lua +++ b/wrench/init.lua @@ -24,10 +24,7 @@ local function get_meta_type(name, metaname) local def = wrench.registered_nodes[name] - if not def or not def.metas or not def.metas[metaname] then - return nil - end - return def.metas[metaname] + return def and def.metas and def.metas[metaname] or nil end local function get_pickup_name(name) @@ -42,6 +39,14 @@ local data = itemstack:get_meta():get_string("data") data = (data ~= "" and data) or itemstack:get_metadata() data = minetest.deserialize(data) + if not data then + minetest.remove_node(pos) + minetest.log("error", placer:get_player_name().." wanted to place ".. + name.." at "..minetest.pos_to_string(pos).. + ", but it had no data.") + minetest.log("verbose", "itemstack: "..itemstack:to_string()) + return true + end minetest.set_node(pos, {name = data.name, param2 = node.param2}) for name, value in pairs(data.metas) do local meta_type = get_meta_type(data.name, name) @@ -115,7 +120,7 @@ return end local meta = minetest.get_meta(pos) - if def.owned then + if def.owned and not minetest.check_player_privs(placer, "protection_bypass") then local owner = meta:get_string("owner") if owner and owner ~= player_name then minetest.log("action", player_name.. -- Gitblit v1.8.0