diff --git a/minetest.conf.example b/minetest.conf.example index aef82c3ad8e4ee53de3146d801b863dd5e87f94e..7029f591e191bc5fef20e44954e17170dc973514 100644 --- a/minetest.conf.example +++ b/minetest.conf.example @@ -388,6 +388,12 @@ # "log" = mimic and log backtrace of deprecated call (default for debug). # "error" = abort on usage of deprecated call (suggested for mod developers). #deprecated_lua_api_handling = legacy + +#kick_msg_shutdown = Server shutting down. +# A message to be displayed to all clients when the server shuts down +#kick_msg_crash = This server has experienced an internal error. You will now be disconnected. +# A message to be displayed to all clients when the server crashes + # Mod profiler #mod_profiling = false # Detailed mod profile data diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index da5dcae94c96353c8220a08340c92b741fec15d9..8df0fbbd806e5e909b90b2cff420e08ec24d62a3 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -252,6 +252,9 @@ void set_default_settings(Settings *settings) settings->setDefault("deprecated_lua_api_handling", "log"); #endif + settings->setDefault("kick_msg_shutdown", "Server shutting down."); + settings->setDefault("kick_msg_crash", "This server has experienced an internal error. You will now be disconnected."); + settings->setDefault("profiler_print_interval", "0"); settings->setDefault("enable_mapgen_debug_info", "false"); settings->setDefault("active_object_send_range_blocks", "3"); diff --git a/src/environment.cpp b/src/environment.cpp index cad1f298bded3f0b92627b930154b52f17824aa2..d22982b688f789a99f4ad8891943aaedf64037da 100644 --- a/src/environment.cpp +++ b/src/environment.cpp @@ -428,10 +428,11 @@ bool ServerEnvironment::line_of_sight(v3f pos1, v3f pos2, float stepsize, v3s16 void ServerEnvironment::kickAllPlayers(const std::string &reason) { + std::wstring wreason = utf8_to_wide(reason); for (std::vector<Player*>::iterator it = m_players.begin(); it != m_players.end(); ++it) { - ((Server*)m_gamedef)->DenyAccess_Legacy((*it)->peer_id, utf8_to_wide(reason)); + ((Server*)m_gamedef)->DenyAccess_Legacy((*it)->peer_id, wreason); } } diff --git a/src/server.cpp b/src/server.cpp index 0cad82613307dfa2f2d464a8d51573d2a644cddf..2d6de1c9db0c8d38007cd6acde10e4784e244497 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -397,8 +397,8 @@ Server::~Server() infostream << "Server: Saving players" << std::endl; m_env->saveLoadedPlayers(); - infostream << "Server: kick players" << std::endl; - m_env->kickAllPlayers("Server shutting down..."); + infostream << "Server: Kicking players" << std::endl; + m_env->kickAllPlayers(g_settings->get("kick_msg_shutdown")); infostream << "Server: Saving environment metadata" << std::endl; m_env->saveMeta(); @@ -502,7 +502,7 @@ void Server::step(float dtime) throw ServerError(async_err); } else { - m_env->kickAllPlayers("The server has crashed. Disconnecting all players. Please reconnect soon..."); + m_env->kickAllPlayers(g_settings->get("kick_msg_crash")); errorstream << "UNRECOVERABLE error occurred. Stopping server. " << "Please fix the following error:" << std::endl << async_err << std::endl;