function blockgame.stringify (tab) if type(tab) == "table" then local result = "{ " for key, value in pairs(tab) do result = result .. key .. ": " .. blockgame.stringify(value) .. ", " end return result .. "}" elseif type(tab) == "function" then return "" elseif type(tab) == "boolean" then if tab then return "true" else return "false" end elseif type(tab) == "nil" then return "nil" else return tab end end function blockgame.starts_with (str, start) return string.sub(str, 1, string.len(start)) == start end function blockgame.extract_id_parts (name) local basename local modname local colon_pos = string.find(name, ":") if colon_pos then modname = string.sub(name, 1, colon_pos - 1) basename = string.sub(name, colon_pos + 1) else modname = minetest.get_current_modname() basename = name end return basename, modname, modname .. ":" .. basename end