]> git.lizzy.rs Git - dragonfireclient.git/commitdiff
Implemented disconnect_player (#10492)
authorCorey Powell <mistdragon100@gmail.com>
Fri, 26 Nov 2021 19:19:40 +0000 (14:19 -0500)
committerGitHub <noreply@github.com>
Fri, 26 Nov 2021 19:19:40 +0000 (19:19 +0000)
Co-authored-by: rubenwardy <rw@rubenwardy.com>
builtin/game/misc.lua
doc/lua_api.txt
src/script/lua_api/l_server.cpp
src/script/lua_api/l_server.h

index 05237662ceb3332052071c5ca0d0b3e81e894195..ef826eda740d35861d5b3073daeda5e92627640d 100644 (file)
@@ -6,6 +6,16 @@ local S = core.get_translator("__builtin")
 -- 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, ...)
        if core.is_player(name) then
                name = name:get_player_name()
index 0a63642afc5c59be7b54f7c0109fb69a1926dc9b..aff739cfb733336ca109cd79a750f21c740a76b3 100644 (file)
@@ -5741,6 +5741,10 @@ Bans
 * `minetest.kick_player(name, [reason])`: disconnect a player with an optional
   reason.
     * 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
 ---------
index 476f74c9cde9bfad354539102e81c21d49c85b6f..82a6920701799a904d4279697e88e58e9a325c3c 100644 (file)
@@ -310,8 +310,8 @@ int ModApiServer::l_ban_player(lua_State *L)
        return 1;
 }
 
-// kick_player(name, [reason]) -> success
-int ModApiServer::l_kick_player(lua_State *L)
+// disconnect_player(name, [reason]) -> success
+int ModApiServer::l_disconnect_player(lua_State *L)
 {
        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");
 
        const char *name = luaL_checkstring(L, 1);
-       std::string message("Kicked");
+       std::string message;
        if (lua_isstring(L, 2))
-               message.append(": ").append(readParam<std::string>(L, 2));
+               message.append(readParam<std::string>(L, 2));
        else
-               message.append(".");
+               message.append("Disconnected.");
 
        RemotePlayer *player = dynamic_cast<ServerEnvironment *>(getEnv(L))->getPlayer(name);
        if (player == NULL) {
@@ -554,7 +554,7 @@ void ModApiServer::Initialize(lua_State *L, int top)
        API_FCT(get_ban_list);
        API_FCT(get_ban_description);
        API_FCT(ban_player);
-       API_FCT(kick_player);
+       API_FCT(disconnect_player);
        API_FCT(remove_player);
        API_FCT(unban_player_or_ip);
        API_FCT(notify_authentication_modified);
index a6f7097870cc281a2af90041179e4ba90927b5a2..f05c0b7c9bdf37ed77f610a07dead1608df240e3 100644 (file)
@@ -97,8 +97,8 @@ class ModApiServer : public ModApiBase
        // unban_player_or_ip()
        static int l_unban_player_or_ip(lua_State *L);
 
-       // kick_player(name, [message]) -> success
-       static int l_kick_player(lua_State *L);
+       // disconnect_player(name, [reason]) -> success
+       static int l_disconnect_player(lua_State *L);
 
        // remove_player(name)
        static int l_remove_player(lua_State *L);