forked from Mirrorlandia_minetest/minetest
Fix the /shutdown command (#7431)
This commit is contained in:
parent
fb4e4f048e
commit
409d04324f
@ -827,13 +827,15 @@ core.register_chatcommand("shutdown", {
|
|||||||
description = "Shutdown server (-1 cancels a delayed shutdown)",
|
description = "Shutdown server (-1 cancels a delayed shutdown)",
|
||||||
privs = {server=true},
|
privs = {server=true},
|
||||||
func = function(name, param)
|
func = function(name, param)
|
||||||
local delay, reconnect, message = param:match("([^ ][-]?[0-9]+)([^ ]+)(.*)")
|
local delay, reconnect, message
|
||||||
message = message or ""
|
delay, param = param:match("^%s*(%S+)(.*)")
|
||||||
|
if param then
|
||||||
if delay ~= "" then
|
reconnect, param = param:match("^%s*(%S+)(.*)")
|
||||||
|
end
|
||||||
|
message = param and param:match("^%s*(.+)") or ""
|
||||||
delay = tonumber(delay) or 0
|
delay = tonumber(delay) or 0
|
||||||
else
|
|
||||||
delay = 0
|
if delay == 0 then
|
||||||
core.log("action", name .. " shuts down server")
|
core.log("action", name .. " shuts down server")
|
||||||
core.chat_send_all("*** Server shutting down (operator request).")
|
core.chat_send_all("*** Server shutting down (operator request).")
|
||||||
end
|
end
|
||||||
|
@ -3396,10 +3396,6 @@ v3f Server::findSpawnPos()
|
|||||||
|
|
||||||
void Server::requestShutdown(const std::string &msg, bool reconnect, float delay)
|
void Server::requestShutdown(const std::string &msg, bool reconnect, float delay)
|
||||||
{
|
{
|
||||||
m_shutdown_timer = delay;
|
|
||||||
m_shutdown_msg = msg;
|
|
||||||
m_shutdown_ask_reconnect = reconnect;
|
|
||||||
|
|
||||||
if (delay == 0.0f) {
|
if (delay == 0.0f) {
|
||||||
// No delay, shutdown immediately
|
// No delay, shutdown immediately
|
||||||
m_shutdown_requested = true;
|
m_shutdown_requested = true;
|
||||||
@ -3418,17 +3414,23 @@ void Server::requestShutdown(const std::string &msg, bool reconnect, float delay
|
|||||||
|
|
||||||
infostream << wide_to_utf8(ws.str()).c_str() << std::endl;
|
infostream << wide_to_utf8(ws.str()).c_str() << std::endl;
|
||||||
SendChatMessage(PEER_ID_INEXISTENT, ws.str());
|
SendChatMessage(PEER_ID_INEXISTENT, ws.str());
|
||||||
|
// m_shutdown_* are already handled, skip.
|
||||||
|
return;
|
||||||
} else if (delay > 0.0f) {
|
} else if (delay > 0.0f) {
|
||||||
// Positive delay, tell the clients when the server will shut down
|
// Positive delay, tell the clients when the server will shut down
|
||||||
std::wstringstream ws;
|
std::wstringstream ws;
|
||||||
|
|
||||||
ws << L"*** Server shutting down in "
|
ws << L"*** Server shutting down in "
|
||||||
<< duration_to_string(myround(m_shutdown_timer)).c_str()
|
<< duration_to_string(myround(delay)).c_str()
|
||||||
<< ".";
|
<< ".";
|
||||||
|
|
||||||
infostream << wide_to_utf8(ws.str()).c_str() << std::endl;
|
infostream << wide_to_utf8(ws.str()).c_str() << std::endl;
|
||||||
SendChatMessage(PEER_ID_INEXISTENT, ws.str());
|
SendChatMessage(PEER_ID_INEXISTENT, ws.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_shutdown_timer = delay;
|
||||||
|
m_shutdown_msg = msg;
|
||||||
|
m_shutdown_ask_reconnect = reconnect;
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayerSAO* Server::emergePlayer(const char *name, session_t peer_id, u16 proto_version)
|
PlayerSAO* Server::emergePlayer(const char *name, session_t peer_id, u16 proto_version)
|
||||||
|
Loading…
Reference in New Issue
Block a user