summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Server/Plugins/APIDump/APIDesc.lua1
-rw-r--r--Server/Plugins/Debuggers/Debuggers.lua13
-rw-r--r--Server/Plugins/Debuggers/Info.lua6
-rw-r--r--src/Bindings/ManualBindings.cpp25
-rw-r--r--src/Scoreboard.cpp16
-rw-r--r--src/Scoreboard.h3
6 files changed, 64 insertions, 0 deletions
diff --git a/Server/Plugins/APIDump/APIDesc.lua b/Server/Plugins/APIDump/APIDesc.lua
index 43e805a50..0f399bd07 100644
--- a/Server/Plugins/APIDump/APIDesc.lua
+++ b/Server/Plugins/APIDump/APIDesc.lua
@@ -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." },
diff --git a/Server/Plugins/Debuggers/Debuggers.lua b/Server/Plugins/Debuggers/Debuggers.lua
index c11052071..ae06b4fc9 100644
--- a/Server/Plugins/Debuggers/Debuggers.lua
+++ b/Server/Plugins/Debuggers/Debuggers.lua
@@ -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
+
+
+
+
+
diff --git a/Server/Plugins/Debuggers/Info.lua b/Server/Plugins/Debuggers/Info.lua
index 51406c27c..fa85f0532 100644
--- a/Server/Plugins/Debuggers/Info.lua
+++ b/Server/Plugins/Debuggers/Info.lua
@@ -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 =
diff --git a/src/Bindings/ManualBindings.cpp b/src/Bindings/ManualBindings.cpp
index 523244ed2..91e80acbc 100644
--- a/src/Bindings/ManualBindings.cpp
+++ b/src/Bindings/ManualBindings.cpp
@@ -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");
diff --git a/src/Scoreboard.cpp b/src/Scoreboard.cpp
index 5e416c0d1..4dde5b2dd 100644
--- a/src/Scoreboard.cpp
+++ b/src/Scoreboard.cpp
@@ -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);
diff --git a/src/Scoreboard.h b/src/Scoreboard.h
index 092cfd8ed..597c502c7 100644
--- a/src/Scoreboard.h
+++ b/src/Scoreboard.h
@@ -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);