diff --git a/builtin/common/chatcommands.lua b/builtin/common/chatcommands.lua index 7120465..52edda6 100644 --- a/builtin/common/chatcommands.lua +++ b/builtin/common/chatcommands.lua @@ -77,6 +77,13 @@ local function do_help_cmd(name, param) end table.sort(cmds) return true, gettext("Available commands:").."\n"..table.concat(cmds, "\n") + elseif INIT == "game" and param == "privs" then + local privs = {} + for priv, def in pairs(core.registered_privileges) do + privs[#privs + 1] = priv .. ": " .. def.description + end + table.sort(privs) + return true, "Available privileges:\n"..table.concat(privs, "\n") else local cmd = param local def = core.registered_chatcommands[cmd] diff --git a/builtin/common/information_formspecs.lua b/builtin/common/information_formspecs.lua index 10fe37b..b977e26 100644 --- a/builtin/common/information_formspecs.lua +++ b/builtin/common/information_formspecs.lua @@ -81,7 +81,7 @@ local function build_chatcommands_formspec(name, sel, copy) end --- PRIVILEGES FORMSPEC +-- PRIVILEGES FORMSPEC local function build_privs_formspec(name) local privs = {} @@ -128,15 +128,23 @@ local help_command = core.registered_chatcommands["help"] local old_help_func = help_command.func help_command.func = function(name, param) + local admin = core.settings:get("name") + + -- If the admin ran help, put the output in the chat buffer as well to + -- work with the server terminal if param == "privs" then core.show_formspec(name, "__builtin:help_privs", build_privs_formspec(name)) - return + if name ~= admin then + return + end end if param == "" or param == "all" then core.show_formspec(name, "__builtin:help_cmds", build_chatcommands_formspec(name)) - return + if name ~= admin then + return + end end return old_help_func(name, param)