Added cClientHandle:GetUUIDsFromPlayerNames() to Lua API.
This commit is contained in:
parent
f5f9656917
commit
1acd03f96f
@ -529,6 +529,7 @@ end
|
|||||||
GetPlayer = { Params = "", Return = "{{cPlayer|cPlayer}}", Notes = "Returns the player object connected to this client. Note that this may be nil, for example if the player object is not yet spawned." },
|
GetPlayer = { Params = "", Return = "{{cPlayer|cPlayer}}", Notes = "Returns the player object connected to this client. Note that this may be nil, for example if the player object is not yet spawned." },
|
||||||
GetUniqueID = { Params = "", Return = "number", Notes = "Returns the UniqueID of the client used to identify the client in the server" },
|
GetUniqueID = { Params = "", Return = "number", Notes = "Returns the UniqueID of the client used to identify the client in the server" },
|
||||||
GetUUID = { Params = "", Return = "string", Notes = "Returns the authentication-based UUID of the client. This UUID should be used to identify the player when persisting any player-related data." },
|
GetUUID = { Params = "", Return = "string", Notes = "Returns the authentication-based UUID of the client. This UUID should be used to identify the player when persisting any player-related data." },
|
||||||
|
GetUUIDsFromPlayerNames = { Params = "PlayerNames", Return = "table", Notes = "(STATIC) Returns a table that contains the map, 'PlayerName' -> 'UUID', for all valid playernames in the input array-table. PlayerNames not recognized will not be set in the returned map. Queries the Mojang servers for the results. <b>WARNING</b>: Do NOT use this function while the server is running. Only use it when the server is starting up (inside the Initialize() method), otherwise you will lag the server severely. <b>NOTE</b>: Mojang API has a limit of 100 names per query and 600 queries per 10 minutes (may change)" },
|
||||||
GetUsername = { Params = "", Return = "string", Notes = "Returns the username that the client has provided" },
|
GetUsername = { Params = "", Return = "string", Notes = "Returns the username that the client has provided" },
|
||||||
GetViewDistance = { Params = "", Return = "number", Notes = "Returns the viewdistance (number of chunks loaded for the player in each direction)" },
|
GetViewDistance = { Params = "", Return = "number", Notes = "Returns the viewdistance (number of chunks loaded for the player in each direction)" },
|
||||||
HasPluginChannel = { Params = "ChannelName", Return = "bool", Notes = "Returns true if the client has registered to receive messages on the specified plugin channel." },
|
HasPluginChannel = { Params = "ChannelName", Return = "bool", Notes = "Returns true if the client has registered to receive messages on the specified plugin channel." },
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
#include "../BlockEntities/MobHeadEntity.h"
|
#include "../BlockEntities/MobHeadEntity.h"
|
||||||
#include "../BlockEntities/FlowerPotEntity.h"
|
#include "../BlockEntities/FlowerPotEntity.h"
|
||||||
#include "../LineBlockTracer.h"
|
#include "../LineBlockTracer.h"
|
||||||
|
#include "../Protocol/Authenticator.h"
|
||||||
#include "../WorldStorage/SchematicFileSerializer.h"
|
#include "../WorldStorage/SchematicFileSerializer.h"
|
||||||
#include "../CompositeChat.h"
|
#include "../CompositeChat.h"
|
||||||
|
|
||||||
@ -2156,6 +2157,63 @@ static int tolua_cClientHandle_SendPluginMessage(lua_State * L)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static int tolua_cClientHandle_GetUUIDsFromPlayerNames(lua_State * L)
|
||||||
|
{
|
||||||
|
cLuaState S(L);
|
||||||
|
if (
|
||||||
|
!S.CheckParamUserTable(1, "cClientHandle") ||
|
||||||
|
!S.CheckParamTable(2) ||
|
||||||
|
!S.CheckParamEnd(3)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert the input table into AStringVector:
|
||||||
|
AStringVector PlayerNames;
|
||||||
|
int NumNames = luaL_getn(L, 2);
|
||||||
|
PlayerNames.reserve(NumNames);
|
||||||
|
for (int i = 1; i <= NumNames; i++)
|
||||||
|
{
|
||||||
|
lua_rawgeti(L, 2, i);
|
||||||
|
AString Name;
|
||||||
|
S.GetStackValue(3, Name);
|
||||||
|
if (!Name.empty())
|
||||||
|
{
|
||||||
|
PlayerNames.push_back(Name);
|
||||||
|
}
|
||||||
|
lua_pop(L, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Push the output table onto the stack:
|
||||||
|
lua_newtable(L); // stack index 3
|
||||||
|
|
||||||
|
// Get the UUIDs:
|
||||||
|
AStringVector UUIDs = cRoot::Get()->GetAuthenticator().GetUUIDsFromPlayerNames(PlayerNames);
|
||||||
|
if (UUIDs.size() != PlayerNames.size())
|
||||||
|
{
|
||||||
|
// A hard error has occured while processing the request, no UUIDs were returned. Return an empty table:
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert to output table, PlayerName -> UUID:
|
||||||
|
for (int i = 0; i < NumNames; i++)
|
||||||
|
{
|
||||||
|
if (UUIDs[i].empty())
|
||||||
|
{
|
||||||
|
// No UUID was provided for PlayerName[i], skip it in the resulting table
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
lua_pushlstring(L, UUIDs[i].c_str(), UUIDs[i].length());
|
||||||
|
lua_setfield(L, 3, PlayerNames[i].c_str());
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int Lua_ItemGrid_GetSlotCoords(lua_State * L)
|
static int Lua_ItemGrid_GetSlotCoords(lua_State * L)
|
||||||
{
|
{
|
||||||
tolua_Error tolua_err;
|
tolua_Error tolua_err;
|
||||||
@ -3083,9 +3141,10 @@ void ManualBindings::Bind(lua_State * tolua_S)
|
|||||||
tolua_endmodule(tolua_S);
|
tolua_endmodule(tolua_S);
|
||||||
|
|
||||||
tolua_beginmodule(tolua_S, "cClientHandle");
|
tolua_beginmodule(tolua_S, "cClientHandle");
|
||||||
tolua_constant(tolua_S, "MAX_VIEW_DISTANCE", cClientHandle::MAX_VIEW_DISTANCE);
|
tolua_constant(tolua_S, "MAX_VIEW_DISTANCE", cClientHandle::MAX_VIEW_DISTANCE);
|
||||||
tolua_constant(tolua_S, "MIN_VIEW_DISTANCE", cClientHandle::MIN_VIEW_DISTANCE);
|
tolua_constant(tolua_S, "MIN_VIEW_DISTANCE", cClientHandle::MIN_VIEW_DISTANCE);
|
||||||
tolua_function(tolua_S, "SendPluginMessage", tolua_cClientHandle_SendPluginMessage);
|
tolua_function(tolua_S, "SendPluginMessage", tolua_cClientHandle_SendPluginMessage);
|
||||||
|
tolua_function(tolua_S, "GetUUIDsFromPlayerNames", tolua_cClientHandle_GetUUIDsFromPlayerNames);
|
||||||
tolua_endmodule(tolua_S);
|
tolua_endmodule(tolua_S);
|
||||||
|
|
||||||
tolua_beginmodule(tolua_S, "cItemGrid");
|
tolua_beginmodule(tolua_S, "cItemGrid");
|
||||||
|
Loading…
Reference in New Issue
Block a user