Migrate calls from Players.Length to ActivePlayers

As pointed out by @QuiCM, TShock.Players is actually an array and not a
smarter collection, so length will return the total collection size and
not the active players. An earlier commit was added that gives TSPlayer
an ICollection<TSPlayer> that contains only active players. This is now
the basis of determining the number of active players on the server.
This commit is contained in:
Lucas Nicodemus 2017-12-31 01:13:33 -07:00
parent 17cfdc3a16
commit 521283c36b
4 changed files with 6 additions and 6 deletions

View file

@ -4819,7 +4819,7 @@ namespace TShockAPI
return;
}
args.Player.SendSuccessMessage("Online Players ({0}/{1})", TShock.Players.Length, TShock.Config.MaxSlots);
args.Player.SendSuccessMessage("Online Players ({0}/{1})", TSPlayer.ActivePlayers.Count, TShock.Config.MaxSlots);
var players = new List<string>();

View file

@ -144,7 +144,7 @@ namespace TShockAPI
return new JsonData()
{
port = Terraria.Netplay.ListenPort,
currentPlayers = TShock.Players.Length,
currentPlayers = TSPlayer.ActivePlayers.Count,
maxPlayers = TShock.Config.MaxSlots,
systemRam = GetTotalSystemRam(ServerApi.RunningMono),
version = TShock.VersionNum.ToString(),

View file

@ -1621,7 +1621,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.Players.Length,
player.Group.Name, player.Country, TSPlayer.ActivePlayers.Count,
TShock.Config.MaxSlots);
if (!player.SilentJoinInProgress)
Utils.Broadcast(string.Format("{0} ({1}) has joined.", player.Name, player.Country), Color.Yellow);
@ -1629,7 +1629,7 @@ namespace TShockAPI
else
{
Log.Info("{0} ({1}) from '{2}' group joined. ({3}/{4})", player.Name, player.IP,
player.Group.Name, TShock.Players.Length, TShock.Config.MaxSlots);
player.Group.Name, TSPlayer.ActivePlayers.Count, TShock.Config.MaxSlots);
if (!player.SilentJoinInProgress)
Utils.Broadcast(player.Name + " has joined.", Color.Yellow);
}

View file

@ -1108,7 +1108,7 @@ namespace TShockAPI
}
else
{
invasionSize = 100 + (TShock.Config.InvasionMultiplier * TShock.Players.Length);
invasionSize = 100 + (TShock.Config.InvasionMultiplier * TSPlayer.ActivePlayers.Count);
}
// Order matters
@ -1147,7 +1147,7 @@ namespace TShockAPI
{
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 : TShock.Players.Length,
empty ? 0 : TSPlayer.ActivePlayers.Count,
TShock.Config.MaxSlots, Main.worldName, Netplay.ServerIP.ToString(), Netplay.ListenPort, TShock.VersionNum);
}