-- Chat command handler
--
-core.chatcommands = {}
+core.registered_chatcommands = {}
+core.chatcommands = core.registered_chatcommands -- BACKWARDS COMPATIBILITY
function core.register_chatcommand(cmd, def)
def = def or {}
def.params = def.params or ""
def.description = def.description or ""
def.privs = def.privs or {}
def.mod_origin = core.get_current_modname() or "??"
- core.chatcommands[cmd] = def
+ core.registered_chatcommands[cmd] = def
end
core.register_on_chat_message(function(name, message)
if not param then
param = ""
end
- local cmd_def = core.chatcommands[cmd]
+ local cmd_def = core.registered_chatcommands[cmd]
if not cmd_def then
return false
end
--
core.register_chatcommand("me", {
params = "<action>",
- description = "chat action (eg. /me orders a pizza)",
+ description = "Display chat action (e.g., '/me orders a pizza' displays"
+ .. " '<player name> orders a pizza')",
privs = {shout=true},
func = function(name, param)
core.chat_send_all("* " .. name .. " " .. param)
if param == "" then
local msg = ""
local cmds = {}
- for cmd, def in pairs(core.chatcommands) do
+ for cmd, def in pairs(core.registered_chatcommands) do
if core.check_player_privs(name, def.privs) then
cmds[#cmds + 1] = cmd
end
.. " or '/help all' to list everything."
elseif param == "all" then
local cmds = {}
- for cmd, def in pairs(core.chatcommands) do
+ for cmd, def in pairs(core.registered_chatcommands) do
if core.check_player_privs(name, def.privs) then
cmds[#cmds + 1] = format_help_line(cmd, def)
end
return true, "Available privileges:\n"..table.concat(privs, "\n")
else
local cmd = param
- local def = core.chatcommands[cmd]
+ local def = core.registered_chatcommands[cmd]
if not def then
return false, "Command not available: "..cmd
else
core.register_chatcommand("privs", {
params = "<name>",
- description = "print out privileges of player",
+ description = "Print privileges of player",
func = function(caller, param)
param = param:trim()
local name = (param ~= "" and param or caller)
if not (caller_privs.privs or caller_privs.basic_privs) then
return false, "Your privileges are insufficient."
end
-
- if not core.auth_table[grantname] then
+
+ if not core.get_auth_handler().get_auth(grantname) then
return false, "Player " .. grantname .. " does not exist."
end
local grantprivs = core.string_to_privs(grantprivstr)
local grantname, grantprivstr = string.match(param, "([^ ]+) (.+)")
if not grantname or not grantprivstr then
return false, "Invalid parameters (see /help grant)"
- end
+ end
return handle_grant_command(name, grantname, grantprivstr)
end,
})
func = function(name, param)
if param == "" then
return false, "Invalid parameters (see /help grantme)"
- end
+ end
return handle_grant_command(name, name, param)
end,
})
local revoke_name, revoke_priv_str = string.match(param, "([^ ]+) (.+)")
if not revoke_name or not revoke_priv_str then
return false, "Invalid parameters (see /help revoke)"
- elseif not core.auth_table[revoke_name] then
+ elseif not core.get_auth_handler().get_auth(revoke_name) then
return false, "Player " .. revoke_name .. " does not exist."
end
local revoke_privs = core.string_to_privs(revoke_priv_str)
core.register_chatcommand("setpassword", {
params = "<name> <password>",
- description = "set given password",
+ description = "Set player's password",
privs = {password=true},
func = function(name, param)
local toname, raw_password = string.match(param, "^([^ ]+) +(.+)$")
core.register_chatcommand("clearpassword", {
params = "<name>",
- description = "set empty password",
+ description = "Set empty password",
privs = {password=true},
func = function(name, param)
local toname = param
core.register_chatcommand("auth_reload", {
params = "",
- description = "reload authentication data",
+ description = "Reload authentication data",
privs = {server=true},
func = function(name, param)
local done = core.auth_reload()
core.register_chatcommand("teleport", {
params = "<X>,<Y>,<Z> | <to_name> | <name> <X>,<Y>,<Z> | <name> <to_name>",
- description = "teleport to given position",
+ description = "Teleport to player or position",
privs = {teleport=true},
func = function(name, param)
-- Returns (pos, true) if found, otherwise (pos, false)
core.register_chatcommand("set", {
params = "[-n] <name> <value> | <name>",
- description = "set or read server configuration setting",
+ description = "Set or read server configuration setting",
privs = {server=true},
func = function(name, param)
local arg, setname, setvalue = string.match(param, "(-[n]) ([^ ]+) (.+)")
core.register_chatcommand("emergeblocks", {
params = "(here [radius]) | (<pos1> <pos2>)",
- description = "starts loading (or generating, if inexistent) map blocks "
+ description = "Load (or, if nonexistent, generate) map blocks "
.. "contained in area pos1 to pos2",
privs = {server=true},
func = function(name, param)
core.register_chatcommand("deleteblocks", {
params = "(here [radius]) | (<pos1> <pos2>)",
- description = "delete map blocks contained in area pos1 to pos2",
+ description = "Delete map blocks contained in area pos1 to pos2",
privs = {server=true},
func = function(name, param)
local p1, p2 = parse_range_str(name, param)
core.register_chatcommand("give", {
params = "<name> <ItemString>",
- description = "give item to player",
+ description = "Give item to player",
privs = {give=true},
func = function(name, param)
local toname, itemstring = string.match(param, "^([^ ]+) +(.+)$")
core.register_chatcommand("giveme", {
params = "<ItemString>",
- description = "give item to yourself",
+ description = "Give item to yourself",
privs = {give=true},
func = function(name, param)
local itemstring = string.match(param, "(.+)$")
core.register_chatcommand("rollback_check", {
params = "[<range>] [<seconds>] [limit]",
- description = "Check who has last touched a node or near it,"
- .. " max. <seconds> ago (default range=0,"
- .. " seconds=86400=24h, limit=5)",
+ description = "Check who last touched a node or a node near it"
+ .. " within the time specified by <seconds>. Default: range = 0,"
+ .. " seconds = 86400 = 24h, limit = 5",
privs = {rollback=true},
func = function(name, param)
if not core.setting_getbool("enable_rollback_recording") then
core.register_chatcommand("rollback", {
params = "<player name> [<seconds>] | :<actor> [<seconds>]",
- description = "revert actions of a player; default for <seconds> is 60",
+ description = "Revert actions of a player. Default for <seconds> is 60",
privs = {rollback=true},
func = function(name, param)
if not core.setting_getbool("enable_rollback_recording") then
core.register_chatcommand("time", {
params = "<0..23>:<0..59> | <0..24000>",
- description = "set time of day",
+ description = "Set time of day",
privs = {},
func = function(name, param)
if param == "" then
})
core.register_chatcommand("shutdown", {
- description = "shutdown server",
+ description = "Shutdown server",
privs = {server=true},
func = function(name, param)
core.log("action", name .. " shuts down server")
core.register_chatcommand("unban", {
params = "<name/ip>",
- description = "remove IP ban",
+ description = "Remove IP ban",
privs = {ban=true},
func = function(name, param)
if not core.unban_player_or_ip(param) then
core.register_chatcommand("kick", {
params = "<name> [reason]",
- description = "kick a player",
+ description = "Kick a player",
privs = {kick=true},
func = function(name, param)
local tokick, reason = param:match("([^ ]+) (.+)")
core.register_chatcommand("clearobjects", {
params = "[full|quick]",
- description = "clear all objects in world",
+ description = "Clear all objects in world",
privs = {server=true},
func = function(name, param)
local options = {}