diff --git a/CHANGELOG.md b/CHANGELOG.md
index c1fdfeca..85daa04d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -66,6 +66,7 @@ This is the rolling changelog for TShock for Terraria. Use past tense when addin
* Fix stack hack detection being inconsistent between two different check points. Moved `TShock.HackedInventory` to `TSPlayer.HasHackedItemStacks`. Added `GetDataHandlers.GetDataHandledEventArgs` which is where most hooks will inherit from in the future. (@hakusaro)
* All `GetDataHandlers` hooks now inherit from `GetDataHandledEventArgs` which includes a `TSPlayer` and a `MemoryStream` of raw data. (@hakusaro)
* Replaced `Utils.FindPlayer` with `TSPlayer.FindByNameOrID` to more appropriately be object orientated. (@hakusaro)
+* Removed `Utils.ActivePlayers()` -- use `TShock.Players.Length` instead. (@hakusaro)
## TShock 4.3.25
* Fixed a critical exploit in the Terraria protocol that could cause massive unpreventable world corruption as well as a number of other problems. Thanks to @bartico6 for reporting. Fixed by the efforts of @QuiCM, @hakusaro, and tips in the right directioon from @bartico6.
diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs
index 68a3619a..32e06ad5 100644
--- a/TShockAPI/Commands.cs
+++ b/TShockAPI/Commands.cs
@@ -4818,7 +4818,7 @@ namespace TShockAPI
return;
}
- args.Player.SendSuccessMessage("Online Players ({0}/{1})", TShock.Utils.ActivePlayers(), TShock.Config.MaxSlots);
+ args.Player.SendSuccessMessage("Online Players ({0}/{1})", TShock.Players.Length, TShock.Config.MaxSlots);
PaginationTools.SendPage(
args.Player, pageNumber, PaginationTools.BuildLinesFromTerms(TShock.Utils.GetPlayers(displayIdsRequested)),
new PaginationTools.Settings
diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs
index d5fafec5..93b6e652 100644
--- a/TShockAPI/GetDataHandlers.cs
+++ b/TShockAPI/GetDataHandlers.cs
@@ -1946,7 +1946,7 @@ namespace TShockAPI
if (OnGetSection(args.Player, args.Data, args.Data.ReadInt32(), args.Data.ReadInt32()))
return true;
- if (TShock.Utils.ActivePlayers() + 1 > TShock.Config.MaxSlots &&
+ if (TShock.Players.Length + 1 > TShock.Config.MaxSlots &&
!args.Player.HasPermission(Permissions.reservedslot))
{
TShock.Utils.ForceKick(args.Player, TShock.Config.ServerFullReason, true);
diff --git a/TShockAPI/StatTracker.cs b/TShockAPI/StatTracker.cs
index 1151d170..0d1d2b6c 100644
--- a/TShockAPI/StatTracker.cs
+++ b/TShockAPI/StatTracker.cs
@@ -144,7 +144,7 @@ namespace TShockAPI
return new JsonData()
{
port = Terraria.Netplay.ListenPort,
- currentPlayers = TShock.Utils.ActivePlayers(),
+ currentPlayers = TShock.Players.Length,
maxPlayers = TShock.Config.MaxSlots,
systemRam = GetTotalSystemRam(ServerApi.RunningMono),
version = TShock.VersionNum.ToString(),
diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs
index d534d67e..6329dab9 100644
--- a/TShockAPI/TShock.cs
+++ b/TShockAPI/TShock.cs
@@ -1243,7 +1243,7 @@ namespace TShockAPI
var player = new TSPlayer(args.Who);
- if (Utils.ActivePlayers() + 1 > Config.MaxSlots + Config.ReservedSlots)
+ if (TShock.Players.Length + 1 > Config.MaxSlots + Config.ReservedSlots)
{
Utils.ForceKick(player, Config.ServerFullNoReservedReason, true, false);
args.Handled = true;
@@ -1402,7 +1402,7 @@ namespace TShockAPI
}
// The last player will leave after this hook is executed.
- if (Utils.ActivePlayers() == 1)
+ if (TShock.Players.Length == 1)
{
if (Config.SaveWorldOnLastPlayerExit)
SaveManager.Instance.SaveWorld();
@@ -1623,7 +1623,7 @@ namespace TShockAPI
if (Config.EnableGeoIP && TShock.Geo != null)
{
Log.Info("{0} ({1}) from '{2}' group from '{3}' joined. ({4}/{5})", player.Name, player.IP,
- player.Group.Name, player.Country, TShock.Utils.ActivePlayers(),
+ player.Group.Name, player.Country, TShock.Players.Length,
TShock.Config.MaxSlots);
if (!player.SilentJoinInProgress)
Utils.Broadcast(string.Format("{0} ({1}) has joined.", player.Name, player.Country), Color.Yellow);
@@ -1631,7 +1631,7 @@ namespace TShockAPI
else
{
Log.Info("{0} ({1}) from '{2}' group joined. ({3}/{4})", player.Name, player.IP,
- player.Group.Name, TShock.Utils.ActivePlayers(), TShock.Config.MaxSlots);
+ player.Group.Name, TShock.Players.Length, TShock.Config.MaxSlots);
if (!player.SilentJoinInProgress)
Utils.Broadcast(player.Name + " has joined.", Color.Yellow);
}
diff --git a/TShockAPI/Utils.cs b/TShockAPI/Utils.cs
index 2a827950..8f92e8ad 100644
--- a/TShockAPI/Utils.cs
+++ b/TShockAPI/Utils.cs
@@ -201,15 +201,6 @@ namespace TShockAPI
}
}
- ///
- /// Gets the number of active players on the server.
- ///
- /// The number of active players on the server.
- public int ActivePlayers()
- {
- return Main.player.Where(p => null != p && p.active).Count();
- }
-
//Random should not be generated in a method
Random r = new Random();
@@ -1433,7 +1424,7 @@ namespace TShockAPI
}
else
{
- invasionSize = 100 + (TShock.Config.InvasionMultiplier * ActivePlayers());
+ invasionSize = 100 + (TShock.Config.InvasionMultiplier * TShock.Players.Length);
}
// Order matters
@@ -1467,12 +1458,12 @@ namespace TShockAPI
}
/// Updates the console title with some pertinent information.
- /// If the server is empty; determines if we should use Utils.ActivePlayers() for player count or 0.
+ /// If the server is empty; determines if we should use TShock.Players.Length for player count or 0.
internal void SetConsoleTitle(bool empty)
{
Console.Title = string.Format("{0}{1}/{2} on {3} @ {4}:{5} (TShock for Terraria v{6})",
!string.IsNullOrWhiteSpace(TShock.Config.ServerName) ? TShock.Config.ServerName + " - " : "",
- empty ? 0 : ActivePlayers(),
+ empty ? 0 : TShock.Players.Length,
TShock.Config.MaxSlots, Main.worldName, Netplay.ServerIP.ToString(), Netplay.ListenPort, TShock.VersionNum);
}