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." },
|
||||
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." },
|
||||
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" },
|
||||
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." },
|
||||
|
@ -26,6 +26,7 @@
|
||||
#include "../BlockEntities/MobHeadEntity.h"
|
||||
#include "../BlockEntities/FlowerPotEntity.h"
|
||||
#include "../LineBlockTracer.h"
|
||||
#include "../Protocol/Authenticator.h"
|
||||
#include "../WorldStorage/SchematicFileSerializer.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)
|
||||
{
|
||||
tolua_Error tolua_err;
|
||||
@ -3083,9 +3141,10 @@ void ManualBindings::Bind(lua_State * tolua_S)
|
||||
tolua_endmodule(tolua_S);
|
||||
|
||||
tolua_beginmodule(tolua_S, "cClientHandle");
|
||||
tolua_constant(tolua_S, "MAX_VIEW_DISTANCE", cClientHandle::MAX_VIEW_DISTANCE);
|
||||
tolua_constant(tolua_S, "MIN_VIEW_DISTANCE", cClientHandle::MIN_VIEW_DISTANCE);
|
||||
tolua_function(tolua_S, "SendPluginMessage", tolua_cClientHandle_SendPluginMessage);
|
||||
tolua_constant(tolua_S, "MAX_VIEW_DISTANCE", cClientHandle::MAX_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, "GetUUIDsFromPlayerNames", tolua_cClientHandle_GetUUIDsFromPlayerNames);
|
||||
tolua_endmodule(tolua_S);
|
||||
|
||||
tolua_beginmodule(tolua_S, "cItemGrid");
|
||||
|
Loading…
Reference in New Issue
Block a user