1
0

Added GetTeamNames to cScoreboard (#3217)

Resolves #3210
This commit is contained in:
PlasmaPower 2016-05-29 11:12:18 -06:00 committed by Mattes D
parent bac71cb513
commit b4d9732fe9
6 changed files with 64 additions and 0 deletions

View File

@ -2196,6 +2196,7 @@ end
GetObjective = { Params = "string", Return = "{{cObjective}}", Notes = "Returns the objective with the specified name." },
GetObjectiveIn = { Params = "DisplaySlot", Return = "{{cObjective}}", Notes = "Returns the objective in the specified display slot. Can be nil." },
GetTeam = { Params = "string", Return = "{{cTeam}}", Notes = "Returns the team with the specified name." },
GetTeamNames = { Params = "", Return = "array table of strings", Notes = "Returns the names of all teams" },
RegisterObjective = { Params = "Name, DisplayName, Type", Return = "{{cObjective}}", Notes = "Registers a new scoreboard objective. Returns the {{cObjective}} instance, nil on error." },
RegisterTeam = { Params = "Name, DisplayName, Prefix, Suffix", Return = "{{cTeam}}", Notes = "Registers a new team. Returns the {{cTeam}} instance, nil on error." },
RemoveObjective = { Params = "string", Return = "bool", Notes = "Removes the objective with the specified name. Returns true if operation was successful." },

View File

@ -2184,3 +2184,16 @@ end
function HandleTeamsCmd(a_Split, a_Player)
local Scoreboard = a_Player:GetWorld():GetScoreBoard()
a_Player:SendMessage("Teams: " .. table.concat(Scoreboard:GetTeamNames(), ", "))
return true
end

View File

@ -208,6 +208,12 @@ g_PluginInfo =
Handler = HandleBlkCmd,
HelpString = "Gets info about the block you are looking at"
},
["/teams"] =
{
Permission = "debuggers",
Handler = HandleTeamsCmd,
HelpString = "List the teams"
},
}, -- Commands
ConsoleCommands =

View File

@ -2756,6 +2756,30 @@ static int tolua_cRoot_GetFurnaceRecipe(lua_State * tolua_S)
static int tolua_cScoreboard_GetTeamNames(lua_State * L)
{
cLuaState S(L);
if (
!S.CheckParamUserType(1, "cScoreboard") ||
!S.CheckParamEnd(2)
)
{
return 0;
}
// Get the groups:
cScoreboard * Scoreboard = reinterpret_cast<cScoreboard *>(tolua_tousertype(L, 1, nullptr));
AStringVector Teams = Scoreboard->GetTeamNames();
// Push the results:
S.Push(Teams);
return 1;
}
static int tolua_cHopperEntity_GetOutputBlockPos(lua_State * tolua_S)
{
// function cHopperEntity::GetOutputBlockPos()
@ -3532,6 +3556,7 @@ void cManualBindings::Bind(lua_State * tolua_S)
tolua_beginmodule(tolua_S, "cScoreboard");
tolua_function(tolua_S, "ForEachObjective", ForEach<cScoreboard, cObjective, &cScoreboard::ForEachObjective>);
tolua_function(tolua_S, "ForEachTeam", ForEach<cScoreboard, cTeam, &cScoreboard::ForEachTeam>);
tolua_function(tolua_S, "GetTeamNames", tolua_cScoreboard_GetTeamNames);
tolua_endmodule(tolua_S);
tolua_beginmodule(tolua_S, "cStringCompression");

View File

@ -416,6 +416,22 @@ cTeam * cScoreboard::GetTeam(const AString & a_Name)
AStringVector cScoreboard::GetTeamNames()
{
AStringVector TeamNames;
for (const auto & Team: m_Teams)
{
TeamNames.push_back(Team.first);
}
return TeamNames;
}
cTeam * cScoreboard::QueryPlayerTeam(const AString & a_Name)
{
cCSLock Lock(m_CSTeams);

View File

@ -256,6 +256,9 @@ public:
// tolua_end
/** Retrieves the list of team names */
AStringVector GetTeamNames();
/** Send this scoreboard to the specified client */
void SendTo(cClientHandle & a_Client);