[CSM] Add function to get player names in range (#5435)
authorbigfoot547 <bigfoot547@users.noreply.github.com>
Wed, 22 Mar 2017 20:13:03 +0000 (15:13 -0500)
committerLoïc Blot <nerzhul@users.noreply.github.com>
Wed, 22 Mar 2017 20:13:03 +0000 (21:13 +0100)
* [CSM] Add function to get currently connected player names

clientmods/preview/init.lua
doc/client_lua_api.md
src/script/lua_api/l_client.cpp
src/script/lua_api/l_client.h

index 008f7ac148e0aea0e5c6f0fdfe3ce4ad263fe820..c57a62155cca64d0a8af4092e91d6e9e3a418e47 100644 (file)
@@ -102,7 +102,7 @@ core.register_on_punchnode(function(pos, node)
        print(dump(itemstack:get_count()))
        print(dump(itemstack:get_wear()))
        print(dump(itemstack:get_meta()))
-       print(dump(itemstack:get_metadata()))
+       print(dump(itemstack:get_metadata()
        print(dump(itemstack:is_known()))
        --print(dump(itemstack:get_definition()))
        print(dump(itemstack:get_tool_capabilities()))
@@ -120,3 +120,10 @@ core.register_on_punchnode(function(pos, node)
        print("node:" .. dump(node))
        return false
 end)
+
+-- This is an example function to ensure it's working properly, should be removed before merge
+core.register_chatcommand("list_players", {
+       func = function(param)
+               core.display_chat_message(dump(core.get_player_names()))
+       end
+})
index 5fba66c69171e2cece3c93061dbcb45be959ec27..ced1a40a4b8c95ca59075ca50b2721e1e358f0ef 100644 (file)
@@ -737,6 +737,10 @@ Call these functions only at load time!
 * `minetest.get_wielded_item()`
     * Returns the itemstack the local player is holding
 
+### Client Environment
+* `minetest.get_player_names()`
+    * Returns list of player names on server
+
 ### Misc.
 * `minetest.parse_json(string[, nullvalue])`: returns something
     * Convert a string containing JSON data into the Lua equivalent
@@ -870,4 +874,4 @@ Named colors are also supported and are equivalent to
 [CSS Color Module Level 4](http://dev.w3.org/csswg/css-color/#named-colors).
 To specify the value of the alpha channel, append `#AA` to the end of the color name
 (e.g. `colorname#08`). For named colors the hexadecimal string representing the alpha
-value must (always) be two hexadecima
\ No newline at end of file
+value must (always) be two hexadecima
index 1673a62ce5828ac1da25e451c1b31bff5901e3ec..52c7f6f30dfdbdcbf395e524b4af9bb5907d101f 100644 (file)
@@ -69,6 +69,22 @@ int ModApiClient::l_display_chat_message(lua_State *L)
        return 1;
 }
 
+// get_player_names()
+int ModApiClient::l_get_player_names(lua_State *L)
+{
+       const std::list<std::string> &plist = getClient(L)->getConnectedPlayerNames();
+       lua_createtable(L, plist.size(), 0);
+       int newTable = lua_gettop(L);
+       int index = 1;
+       std::list<std::string>::const_iterator iter;
+       for (iter = plist.begin(); iter != plist.end(); iter++) {
+               lua_pushstring(L, (*iter).c_str());
+               lua_rawseti(L, newTable, index);
+               index++;
+       }
+       return 1;
+}
+
 // show_formspec(formspec)
 int ModApiClient::l_show_formspec(lua_State *L)
 {
@@ -154,6 +170,7 @@ void ModApiClient::Initialize(lua_State *L, int top)
 {
        API_FCT(get_current_modname);
        API_FCT(display_chat_message);
+       API_FCT(get_player_names);
        API_FCT(set_last_run_mod);
        API_FCT(get_last_run_mod);
        API_FCT(show_formspec);
index def9b48a39ca6e68c4f975da444fc37819e8737e..fcf8c39ea80a39c1eea4f6f778469e6dfc3d3965 100644 (file)
@@ -31,6 +31,9 @@ private:
 
        // display_chat_message(message)
        static int l_display_chat_message(lua_State *L);
+       
+       // get_player_names()
+       static int l_get_player_names(lua_State *L);
 
        // show_formspec(name, fornspec)
        static int l_show_formspec(lua_State *L);