Exported cMojangAPI to Lua.
This commit is contained in:
parent
4dd858f899
commit
6476bd0e2e
@ -529,7 +529,6 @@ 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." },
|
||||
@ -1607,6 +1606,31 @@ a_Player:OpenWindow(Window);
|
||||
|
||||
}, -- cMapManager
|
||||
|
||||
cMojangAPI =
|
||||
{
|
||||
Desc = [[
|
||||
Provides interface to various API functions that Mojang provides through their servers. Note that
|
||||
some of these calls will wait for a response from the network, and so shouldn't be used while the
|
||||
server is fully running (or at least when there are players connected) to avoid percepted lag.</p>
|
||||
<p>
|
||||
Some functions are static and do not require an instance to be called. For others, you need to get
|
||||
the singleton instance of this class using {{cRoot}}'s GetMojangAPI() function.</p>
|
||||
<p>
|
||||
Mojang uses two formats for UUIDs, short and dashed. MCServer works with short UUIDs internally, but
|
||||
will convert to dashed UUIDs where needed - in the protocol login for example. The MakeUUIDShort()
|
||||
and MakeUUIDDashed() functions are provided for plugins to use for conversion between the two
|
||||
formats.
|
||||
]],
|
||||
Functions =
|
||||
{
|
||||
AddPlayerNameToUUIDMapping = { Params = "PlayerName, UUID", Return = "", Notes = "Adds the specified PlayerName-to-UUID mapping into the cache, with current timestamp." },
|
||||
GetUUIDsFromPlayerNames = { Params = "PlayerNames", Return = "table", Notes = "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." },
|
||||
MakeUUIDDashed = { Params = "UUID", Return = "DashedUUID", Notes = "(STATIC) Converts the UUID to a dashed format (\"01234567-8901-2345-6789-012345678901\"). Accepts both dashed and short UUIDs. Logs a warning and returns an empty string if UUID format not recognized." },
|
||||
MakeUUIDShort = { Params = "UUID", Return = "ShortUUID", Notes = "(STATIC) Converts the UUID to a short format (without dashes, \"01234567890123456789012345678901\"). Accepts both dashed and short UUIDs. Logs a warning and returns an empty string if UUID format not recognized." },
|
||||
},
|
||||
|
||||
},
|
||||
|
||||
cMonster =
|
||||
{
|
||||
Desc = [[
|
||||
@ -2002,6 +2026,7 @@ cPluginManager.AddHook(cPluginManager.HOOK_CHAT, OnChatMessage);
|
||||
GetFurnaceFuelBurnTime = { Params = "{{cItem|Fuel}}", Return = "number", Notes = "(STATIC) Returns the number of ticks for how long the item would fuel a furnace. Returns zero if not a fuel." },
|
||||
GetFurnaceRecipe = { Params = "{{cItem|InItem}}", Return = "{{cItem|OutItem}}, NumTicks, {{cItem|InItem}}", Notes = "(STATIC) Returns the furnace recipe for smelting the specified input. If a recipe is found, returns the smelted result, the number of ticks required for the smelting operation, and the input consumed (note that MCServer supports smelting M items into N items and different smelting rates). If no recipe is found, returns no value." },
|
||||
GetGroupManager = { Params = "", Return = "{{cGroupManager|cGroupManager}}", Notes = "Returns the cGroupManager object." },
|
||||
GetMojangAPI = { Params = "", Return = "{{cMojangAPI}}", Notes = "Returns the {{cMojangAPI}} object." },
|
||||
GetPhysicalRAMUsage = { Params = "", Return = "number", Notes = "Returns the amount of physical RAM that the entire MCServer process is using, in KiB. Negative if the OS doesn't support this query." },
|
||||
GetPluginManager = { Params = "", Return = "{{cPluginManager|cPluginManager}}", Notes = "Returns the cPluginManager object." },
|
||||
GetPrimaryServerVersion = { Params = "", Return = "number", Notes = "Returns the servers primary server version." },
|
||||
|
@ -77,6 +77,7 @@ $cfile "../Map.h"
|
||||
$cfile "../MapManager.h"
|
||||
$cfile "../Scoreboard.h"
|
||||
$cfile "../Statistics.h"
|
||||
$cfile "../Protocol/MojangAPI.h"
|
||||
|
||||
|
||||
|
||||
|
@ -2157,11 +2157,11 @@ static int tolua_cClientHandle_SendPluginMessage(lua_State * L)
|
||||
|
||||
|
||||
|
||||
static int tolua_cClientHandle_GetUUIDsFromPlayerNames(lua_State * L)
|
||||
static int tolua_cMojangAPI_GetUUIDsFromPlayerNames(lua_State * L)
|
||||
{
|
||||
cLuaState S(L);
|
||||
if (
|
||||
!S.CheckParamUserTable(1, "cClientHandle") ||
|
||||
!S.CheckParamUserTable(1, "cMojangAPI") ||
|
||||
!S.CheckParamTable(2) ||
|
||||
!S.CheckParamEnd(3)
|
||||
)
|
||||
@ -3144,9 +3144,12 @@ void ManualBindings::Bind(lua_State * tolua_S)
|
||||
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, "cMojangAPI");
|
||||
tolua_function(tolua_S, "GetUUIDsFromPlayerNames", tolua_cMojangAPI_GetUUIDsFromPlayerNames);
|
||||
tolua_endmodule(tolua_S);
|
||||
|
||||
tolua_beginmodule(tolua_S, "cItemGrid");
|
||||
tolua_function(tolua_S, "GetSlotCoords", Lua_ItemGrid_GetSlotCoords);
|
||||
tolua_endmodule(tolua_S);
|
||||
|
@ -15,9 +15,12 @@
|
||||
|
||||
|
||||
|
||||
// tolua_begin
|
||||
class cMojangAPI
|
||||
{
|
||||
public:
|
||||
// tolua_end
|
||||
|
||||
cMojangAPI(void);
|
||||
~cMojangAPI();
|
||||
|
||||
@ -30,6 +33,8 @@ public:
|
||||
Returns true if all was successful, false on failure. */
|
||||
static bool SecureRequest(const AString & a_ServerName, const AString & a_Request, AString & a_Response);
|
||||
|
||||
// tolua_begin
|
||||
|
||||
/** Converts the given UUID to its short form (32 bytes, no dashes).
|
||||
Logs a warning and returns empty string if not a UUID. */
|
||||
static AString MakeUUIDShort(const AString & a_UUID);
|
||||
@ -38,16 +43,22 @@ public:
|
||||
Logs a warning and returns empty string if not a UUID. */
|
||||
static AString MakeUUIDDashed(const AString & a_UUID);
|
||||
|
||||
// tolua_end
|
||||
|
||||
/** Converts the player names into UUIDs.
|
||||
a_PlayerName[idx] will be converted to UUID and returned as idx-th value
|
||||
The UUID will be empty on error.
|
||||
Blocking operation, do not use in world-tick thread! */
|
||||
AStringVector GetUUIDsFromPlayerNames(const AStringVector & a_PlayerName);
|
||||
|
||||
// tolua_begin
|
||||
|
||||
/** Called by the Authenticator to add a PlayerName -> UUID mapping that it has received from
|
||||
authenticating a user. This adds the cache item and "refreshes" it if existing, adjusting its datetime
|
||||
stamp to now. */
|
||||
void AddPlayerNameToUUIDMapping(const AString & a_PlayerName, const AString & a_UUID);
|
||||
|
||||
// tolua_end
|
||||
|
||||
protected:
|
||||
struct sUUIDRecord
|
||||
@ -95,7 +106,7 @@ protected:
|
||||
Names that are not valid are not added into the cache.
|
||||
ASSUMEs that a_PlayerNames contains lowercased player names. */
|
||||
void CacheNamesToUUIDs(const AStringVector & a_PlayerNames);
|
||||
} ;
|
||||
} ; // tolua_export
|
||||
|
||||
|
||||
|
||||
|
@ -79,7 +79,7 @@ public:
|
||||
cWebAdmin * GetWebAdmin (void) { return m_WebAdmin; } // tolua_export
|
||||
cPluginManager * GetPluginManager (void) { return m_PluginManager; } // tolua_export
|
||||
cAuthenticator & GetAuthenticator (void) { return m_Authenticator; }
|
||||
cMojangAPI & GetMojangAPI (void) { return m_MojangAPI; }
|
||||
cMojangAPI & GetMojangAPI (void) { return m_MojangAPI; } // tolua_export
|
||||
|
||||
/** Queues a console command for execution through the cServer class.
|
||||
The command will be executed in the tick thread
|
||||
|
Loading…
Reference in New Issue
Block a user