]> git.lizzy.rs Git - minetest.git/commitdiff
Fix misleading /shutdown command syntax
authorWuzzy <Wuzzy2@mail.ru>
Sat, 6 Mar 2021 03:05:14 +0000 (04:05 +0100)
committersfan5 <sfan5@live.de>
Sat, 29 May 2021 09:45:04 +0000 (11:45 +0200)
builtin/game/chat.lua
builtin/locale/template.txt

index 0bd12c25f483384372cec6422a0485a220e85763..4dbcff1e29ae1e6e625991c81274779594c67c64 100644 (file)
@@ -1053,24 +1053,58 @@ core.register_chatcommand("days", {
        end
 })
 
+local function parse_shutdown_param(param)
+       local delay, reconnect, message
+       local one, two, three
+       one, two, three = param:match("^(%S+) +(%-r) +(.*)")
+       if one and two and three then
+               -- 3 arguments: delay, reconnect and message
+               return one, two, three
+       end
+       -- 2 arguments
+       one, two = param:match("^(%S+) +(.*)")
+       if one and two then
+               if tonumber(one) then
+                       delay = one
+                       if two == "-r" then
+                               reconnect = two
+                       else
+                               message = two
+                       end
+               elseif one == "-r" then
+                       reconnect, message = one, two
+               end
+               return delay, reconnect, message
+       end
+       -- 1 argument
+       one = param:match("(.*)")
+       if tonumber(one) then
+               delay = one
+       elseif one == "-r" then
+               reconnect = one
+       else
+               message = one
+       end
+       return delay, reconnect, message
+end
+
 core.register_chatcommand("shutdown", {
-       params = S("[<delay_in_seconds> | -1] [reconnect] [<message>]"),
-       description = S("Shutdown server (-1 cancels a delayed shutdown)"),
+       params = S("[<delay_in_seconds> | -1] [-r] [<message>]"),
+       description = S("Shutdown server (-1 cancels a delayed shutdown, -r allows players to reconnect)"),
        privs = {server=true},
        func = function(name, param)
-               local delay, reconnect, message
-               delay, param = param:match("^%s*(%S+)(.*)")
-               if param then
-                       reconnect, param = param:match("^%s*(%S+)(.*)")
+               local delay, reconnect, message = parse_shutdown_param(param)
+               local bool_reconnect = reconnect == "-r"
+               if not message then
+                       message = ""
                end
-               message = param and param:match("^%s*(.+)") or ""
                delay = tonumber(delay) or 0
 
                if delay == 0 then
                        core.log("action", name .. " shuts down server")
                        core.chat_send_all("*** "..S("Server shutting down (operator request)."))
                end
-               core.request_shutdown(message:trim(), core.is_yes(reconnect), delay)
+               core.request_shutdown(message:trim(), bool_reconnect, delay)
                return true
        end,
 })
index db0ee07b8486ea2d3123db90f592de8f94b090b4..13e6287a1007ef139f4b5b7fdbddbd2885cd2536 100644 (file)
@@ -143,8 +143,8 @@ Invalid hour (must be between 0 and 23 inclusive).=
 Invalid minute (must be between 0 and 59 inclusive).=
 Show day count since world creation=
 Current day is @1.=
-[<delay_in_seconds> | -1] [reconnect] [<message>]=
-Shutdown server (-1 cancels a delayed shutdown)=
+[<delay_in_seconds> | -1] [-r] [<message>]=
+Shutdown server (-1 cancels a delayed shutdown, -r allows players to reconnect)=
 Server shutting down (operator request).=
 Ban the IP of a player or show the ban list=
 The ban list is empty.=