From b613fdcda64d93e08c1175c1183cbf27bc18f730 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Tue, 26 Dec 2017 21:14:16 -0700 Subject: [PATCH] Remove Utils.ActivePlayers Duplicated what an array already stored and told us, but added code and was obscure. It predated TSPlayers existing. --- CHANGELOG.md | 1 + TShockAPI/Commands.cs | 2 +- TShockAPI/GetDataHandlers.cs | 2 +- TShockAPI/StatTracker.cs | 2 +- TShockAPI/TShock.cs | 8 ++++---- TShockAPI/Utils.cs | 15 +++------------ 6 files changed, 11 insertions(+), 19 deletions(-) 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); }