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.)
This commit is contained in:
Michieal 2022-11-26 06:46:26 +00:00 committed by cora
parent da64a10403
commit 8184d4938c
1 changed files with 38 additions and 4 deletions

View File

@ -7,6 +7,9 @@ local get_connected_players = minetest.get_connected_players
local get_biome_name = minetest.get_biome_name local get_biome_name = minetest.get_biome_name
local get_biome_data = minetest.get_biome_data local get_biome_data = minetest.get_biome_data
local format = string.format 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 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 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 = "" local r = ""
for _,key in ipairs(fields_keyset) do for _,key in ipairs(fields_keyset) do
local def = mcl_info.registered_debug_fields[key] local def = mcl_info.registered_debug_fields[key]
if def.level == nil or def.level <= bits then if def then
r = r ..key..": "..tostring(def.func(player,pos)).."\n" if def.level == nil or def.level <= bits then
r = r ..key..": "..tostring(def.func(player,pos)).."\n"
end
else
r = r ..key..": <Unknown Field>\n"
end end
end end
return r return r
end end
@ -115,7 +121,7 @@ minetest.register_on_leaveplayer(function(p)
end) end)
minetest.register_chatcommand("debug",{ 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("<bitmask>"), params = S("<bitmask>"),
privs = { debug = true }, privs = { debug = true },
func = function(name, params) func = function(name, params)
@ -130,6 +136,25 @@ minetest.register_chatcommand("debug",{
end 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("<bitmask>"),
-- 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",{ mcl_info.register_debug_field("Node feet",{
level = 4, level = 4,
func = function(pl,pos) func = function(pl,pos)
@ -155,6 +180,14 @@ mcl_info.register_debug_field("Biome",{
}) })
mcl_info.register_debug_field("Coords", { 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) func = function(pl, pos)
local report_y = 0 local report_y = 0
-- overworld -- 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) return format("End: x:%.1f y:%.1f z:%.1f", pos.x, report_y, pos.z)
end end
-- outside of scoped bounds.
return format("Void: x:%.1f y:%.1f z:%.1f", pos.x, pos.y, pos.z) return format("Void: x:%.1f y:%.1f z:%.1f", pos.x, pos.y, pos.z)
end end