From 2a54ea6e74d4a909cda0b4fbd49dda21acf17f7c Mon Sep 17 00:00:00 2001 From: cora Date: Sat, 26 Nov 2022 04:25:35 +0100 Subject: [PATCH 1/4] mcl_info: Allow debug field that's visible for everyone --- mods/HUD/mcl_info/init.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/HUD/mcl_info/init.lua b/mods/HUD/mcl_info/init.lua index 71f8d8ad0..8c93c1420 100644 --- a/mods/HUD/mcl_info/init.lua +++ b/mods/HUD/mcl_info/init.lua @@ -58,7 +58,7 @@ end local function get_text(player, bits) local pos = vector.offset(player:get_pos(),0,0.5,0) local bits = bits - if bits == 0 then return "" end + if bits == -1 then return "" end local r = "" for _,key in ipairs(fields_keyset) do @@ -115,15 +115,15 @@ minetest.register_on_leaveplayer(function(p) end) minetest.register_chatcommand("debug",{ - description = S("Set debug bit mask: 0 = disable, 1 = biome name, 2 = coordinates, 3 = all"), + description = S("Set debug bit mask: -1 = disable, 0 = player coords, 1 = biome name, 2 = coordinates, 3 = all"), params = S(""), privs = { debug = true }, func = function(name, params) local player = minetest.get_player_by_name(name) if params == "" then return true, "Debug bitmask is "..player_setting(player) end local dbg = math.floor(tonumber(params) or default_debug) - if dbg < 0 or dbg > 4 then - minetest.chat_send_player(name, S("Error! Possible values are integer numbers from @1 to @2", 0, 4)) + if dbg < -1 or dbg > 4 then + minetest.chat_send_player(name, S("Error! Possible values are integer numbers from @1 to @2", -1, 4)) return false,"Current bitmask: "..player_setting(player) end return true, "Debug bit mask set to "..player_setting(player,dbg) From da64a1040301ac51a6c7bfd62f55fed118435b00 Mon Sep 17 00:00:00 2001 From: Michieal Date: Sat, 26 Nov 2022 04:28:07 +0100 Subject: [PATCH 2/4] mcl_info: Add player coords field to debug hud --- mods/HUD/mcl_info/init.lua | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/mods/HUD/mcl_info/init.lua b/mods/HUD/mcl_info/init.lua index 8c93c1420..9cb2ddd05 100644 --- a/mods/HUD/mcl_info/init.lua +++ b/mods/HUD/mcl_info/init.lua @@ -153,9 +153,28 @@ mcl_info.register_debug_field("Biome",{ return "No biome" end }) -mcl_info.register_debug_field("Coords",{ - level = 2, - func = function(pl,pos) - return format("x:%.1f y:%.1f z:%.1f", pos.x, pos.y, pos.z) + +mcl_info.register_debug_field("Coords", { + func = function(pl, pos) + local report_y = 0 + -- overworld + if (pos.y >= mcl_vars.mg_overworld_min) and (pos.y <= mcl_vars.mg_overworld_max) then + return format("Overworld: x:%.1f y:%.1f z:%.1f", pos.x, pos.y, pos.z) + end + + -- nether + if (pos.y >= mcl_vars.mg_nether_min) and (pos.y <= mcl_vars.mg_nether_max) then + report_y = pos.y - mcl_vars.mg_nether_min + return format("Nether: x:%.1f y:%.1f z:%.1f", pos.x, report_y, pos.z) + end + + -- end + if (pos.y >= mcl_vars.mg_end_min) and (pos.y <= mcl_vars.mg_end_max) then + report_y = pos.y - mcl_vars.mg_end_min + return format("End: x:%.1f y:%.1f z:%.1f", pos.x, report_y, pos.z) + end + + return format("Void: x:%.1f y:%.1f z:%.1f", pos.x, pos.y, pos.z) + end }) From 8184d4938c3ab80a64451996bf5be0d4ca54ef8f Mon Sep 17 00:00:00 2001 From: Michieal Date: Sat, 26 Nov 2022 06:46:26 +0000 Subject: [PATCH 3/4] Modify init.lua to allow normal player usage. Changes made: * Put in new chatcommand /whereami to allow normal players to turn on / off player location coords without needing special privs. * Made Debug Coords level 2, Player Location level 1, and Off level 0. (Allows turning the location off.) * Put in nil value check into get_text, to prevent errors caused by definitions accidentally not returning a value. * Cached pairs, ipairs, and table because the code is called every 0.63 seconds, and it made sense to do so. (Hopefully, will help to mitigate the added load on framerate.) --- mods/HUD/mcl_info/init.lua | 42 ++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/mods/HUD/mcl_info/init.lua b/mods/HUD/mcl_info/init.lua index 9cb2ddd05..b219346ba 100644 --- a/mods/HUD/mcl_info/init.lua +++ b/mods/HUD/mcl_info/init.lua @@ -7,6 +7,9 @@ local get_connected_players = minetest.get_connected_players local get_biome_name = minetest.get_biome_name local get_biome_data = minetest.get_biome_data local format = string.format +local pairs = pairs +local ipairs = ipairs +local table = table local min1, min2, min3 = mcl_vars.mg_overworld_min, mcl_vars.mg_end_min, mcl_vars.mg_nether_min local max1, max2, max3 = mcl_vars.mg_overworld_max, mcl_vars.mg_end_max, mcl_vars.mg_nether_max + 128 @@ -63,11 +66,14 @@ local function get_text(player, bits) local r = "" for _,key in ipairs(fields_keyset) do local def = mcl_info.registered_debug_fields[key] - if def.level == nil or def.level <= bits then - r = r ..key..": "..tostring(def.func(player,pos)).."\n" + if def then + if def.level == nil or def.level <= bits then + r = r ..key..": "..tostring(def.func(player,pos)).."\n" + end + else + r = r ..key..": \n" end end - return r end @@ -115,7 +121,7 @@ minetest.register_on_leaveplayer(function(p) end) minetest.register_chatcommand("debug",{ - description = S("Set debug bit mask: -1 = disable, 0 = player coords, 1 = biome name, 2 = coordinates, 3 = all"), + description = S("Set debug bit mask: 0 = disable, 1 = player coords, 2 = coordinates, 3 = biome name, 4 = all"), params = S(""), privs = { debug = true }, func = function(name, params) @@ -130,6 +136,25 @@ minetest.register_chatcommand("debug",{ end }) +-- register normal user access to debug levels 1 and 0. +minetest.register_chatcommand("whereami", { + description = S("Set location bit mask: 0 = disable, 1 = coordinates"), + params = S(""), + -- privs = { }, + func = function(name, params) + local player = minetest.get_player_by_name(name) + if params == "" then + return true, "Location bitmask is " .. player_setting(player) + end + local loc_lev = math.floor(tonumber(params) or default_debug) + if loc_lev < 0 or loc_lev > 4 then + minetest.chat_send_player(name, S("Error! Possible values are integer numbers from @1 to @2", 0, 1)) + return false, "Current bitmask: " .. player_setting(player) + end + return true, "Location bit mask set to " .. player_setting(player, loc_lev) + end +}) + mcl_info.register_debug_field("Node feet",{ level = 4, func = function(pl,pos) @@ -155,6 +180,14 @@ mcl_info.register_debug_field("Biome",{ }) mcl_info.register_debug_field("Coords", { + level = 2, + func = function(pl, pos) + return format("x:%.1f y:%.1f z:%.1f", pos.x, pos.y, pos.z) + end +}) + +mcl_info.register_debug_field("Location", { + level = 1, func = function(pl, pos) local report_y = 0 -- overworld @@ -174,6 +207,7 @@ mcl_info.register_debug_field("Coords", { return format("End: x:%.1f y:%.1f z:%.1f", pos.x, report_y, pos.z) end + -- outside of scoped bounds. return format("Void: x:%.1f y:%.1f z:%.1f", pos.x, pos.y, pos.z) end From fb8b3d5f554de01fa6c8ec07af277679916323a2 Mon Sep 17 00:00:00 2001 From: cora Date: Sat, 26 Nov 2022 13:45:31 +0100 Subject: [PATCH 4/4] Cleanup mcl_info clutter and messy var localization --- mods/HUD/mcl_info/init.lua | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/mods/HUD/mcl_info/init.lua b/mods/HUD/mcl_info/init.lua index b219346ba..b6f69255c 100644 --- a/mods/HUD/mcl_info/init.lua +++ b/mods/HUD/mcl_info/init.lua @@ -1,25 +1,15 @@ mcl_info = {} -local refresh_interval = .63 -local huds = {} -local default_debug = 0 -local after = minetest.after -local get_connected_players = minetest.get_connected_players -local get_biome_name = minetest.get_biome_name -local get_biome_data = minetest.get_biome_data -local format = string.format -local pairs = pairs -local ipairs = ipairs -local table = table - -local min1, min2, min3 = mcl_vars.mg_overworld_min, mcl_vars.mg_end_min, mcl_vars.mg_nether_min -local max1, max2, max3 = mcl_vars.mg_overworld_max, mcl_vars.mg_end_max, mcl_vars.mg_nether_max + 128 +local format, pairs,ipairs,table,vector,minetest,mcl_info,tonumber,tostring = string.format,pairs,ipairs,table,vector,minetest,mcl_info,tonumber,tostring local modname = minetest.get_current_modname() -local modpath = minetest.get_modpath(modname) local S = minetest.get_translator(modname) local storage = minetest.get_mod_storage() local player_dbg = {} +local refresh_interval = .63 +local huds = {} +local default_debug = 0 + local function check_setting(s) return s end @@ -78,7 +68,7 @@ local function get_text(player, bits) end local function info() - for _, player in pairs(get_connected_players()) do + for _, player in pairs(minetest.get_connected_players()) do local name = player:get_player_name() local s = player_setting(player) local pos = player:get_pos() @@ -110,7 +100,7 @@ local function info() player:hud_change(huds[name][2], "text", text) end end - after(refresh_interval, info) + minetest.after(refresh_interval, info) end minetest.after(0,info) @@ -170,8 +160,8 @@ mcl_info.register_debug_field("Node below",{ mcl_info.register_debug_field("Biome",{ level = 3, func = function(pl,pos) - local biome_data = get_biome_data(pos) - local biome = biome_data and get_biome_name(biome_data.biome) or "No biome" + local biome_data = minetest.get_biome_data(pos) + local biome = biome_data and minetest.get_biome_name(biome_data.biome) or "No biome" if biome_data then return format("%s (%s), Humidity: %.1f, Temperature: %.1f",biome, biome_data.biome, biome_data.humidity, biome_data.heat) end