Implemented disconnect_player (#10492)

Co-authored-by: rubenwardy <rw@rubenwardy.com>
This commit is contained in:
Corey Powell 2021-11-26 14:19:40 -05:00 committed by GitHub
parent c85aa0030f
commit 413be76c63
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 8 deletions

View File

@ -6,6 +6,16 @@ local S = core.get_translator("__builtin")
-- Misc. API functions -- Misc. API functions
-- --
-- @spec core.kick_player(String, String) :: Boolean
function core.kick_player(player_name, reason)
if type(reason) == "string" then
reason = "Kicked: " .. reason
else
reason = "Kicked."
end
return core.disconnect_player(player_name, reason)
end
function core.check_player_privs(name, ...) function core.check_player_privs(name, ...)
if core.is_player(name) then if core.is_player(name) then
name = name:get_player_name() name = name:get_player_name()

View File

@ -5741,6 +5741,10 @@ Bans
* `minetest.kick_player(name, [reason])`: disconnect a player with an optional * `minetest.kick_player(name, [reason])`: disconnect a player with an optional
reason. reason.
* Returns boolean indicating success (false if player nonexistant) * Returns boolean indicating success (false if player nonexistant)
* `minetest.disconnect_player(name, [reason])`: disconnect a player with an
optional reason, this will not prefix with 'Kicked: ' like kick_player.
If no reason is given, it will default to 'Disconnected.'
* Returns boolean indicating success (false if player nonexistant)
Particles Particles
--------- ---------

View File

@ -310,8 +310,8 @@ int ModApiServer::l_ban_player(lua_State *L)
return 1; return 1;
} }
// kick_player(name, [reason]) -> success // disconnect_player(name, [reason]) -> success
int ModApiServer::l_kick_player(lua_State *L) int ModApiServer::l_disconnect_player(lua_State *L)
{ {
NO_MAP_LOCK_REQUIRED; NO_MAP_LOCK_REQUIRED;
@ -319,11 +319,11 @@ int ModApiServer::l_kick_player(lua_State *L)
throw LuaError("Can't kick player before server has started up"); throw LuaError("Can't kick player before server has started up");
const char *name = luaL_checkstring(L, 1); const char *name = luaL_checkstring(L, 1);
std::string message("Kicked"); std::string message;
if (lua_isstring(L, 2)) if (lua_isstring(L, 2))
message.append(": ").append(readParam<std::string>(L, 2)); message.append(readParam<std::string>(L, 2));
else else
message.append("."); message.append("Disconnected.");
RemotePlayer *player = dynamic_cast<ServerEnvironment *>(getEnv(L))->getPlayer(name); RemotePlayer *player = dynamic_cast<ServerEnvironment *>(getEnv(L))->getPlayer(name);
if (player == NULL) { if (player == NULL) {
@ -554,7 +554,7 @@ void ModApiServer::Initialize(lua_State *L, int top)
API_FCT(get_ban_list); API_FCT(get_ban_list);
API_FCT(get_ban_description); API_FCT(get_ban_description);
API_FCT(ban_player); API_FCT(ban_player);
API_FCT(kick_player); API_FCT(disconnect_player);
API_FCT(remove_player); API_FCT(remove_player);
API_FCT(unban_player_or_ip); API_FCT(unban_player_or_ip);
API_FCT(notify_authentication_modified); API_FCT(notify_authentication_modified);

View File

@ -97,8 +97,8 @@ private:
// unban_player_or_ip() // unban_player_or_ip()
static int l_unban_player_or_ip(lua_State *L); static int l_unban_player_or_ip(lua_State *L);
// kick_player(name, [message]) -> success // disconnect_player(name, [reason]) -> success
static int l_kick_player(lua_State *L); static int l_disconnect_player(lua_State *L);
// remove_player(name) // remove_player(name)
static int l_remove_player(lua_State *L); static int l_remove_player(lua_State *L);