internal static void ServerInfo(Player player, Command cmd)
{
Process.GetCurrentProcess().Refresh();
player.Message("Servers stats: Up for {0:0.0} hours, using {1:0} MB of memory",
DateTime.UtcNow.Subtract(Server.ServerStart).TotalHours,
(Process.GetCurrentProcess().PrivateMemorySize64 / (1024 * 1024)));
if (Server.IsMonitoringCPUUsage)
{
player.Message(" Averaging {0:0.0}% CPU in last minute, {1:0.0}% CPU overall",
Server.CPUUsageLastMinute * 100,
Server.CPUUsageTotal * 100);
}
if (MonoCompat.IsMono)
{
player.Message(" Running fCraft {0}, under Mono {1}",
Updater.CurrentRelease.VersionString,
MonoCompat.MonoVersionString);
}
else
{
player.Message(" Running fCraft {0}, under .NET {1}",
Updater.CurrentRelease.VersionString,
Environment.Version);
}
double bytesReceivedRate = Server.PlayerList.Aggregate((double)0,
(i, p) => i + p.Session.BytesReceivedRate);
double bytesSentRate = Server.PlayerList.Aggregate((double)0,
(i, p) => i + p.Session.BytesSentRate);
player.Message(" Upstream {0:0.0} KB/s, downstream {1:0.0} KB/s",
bytesSentRate / 1000, bytesReceivedRate / 1000);
player.Message(" Database contains {0} players ({1} online, {2} banned, {3} IP-banned)",
PlayerDB.CountTotalPlayers(),
Server.CountVisiblePlayers(player),
PlayerDB.CountBannedPlayers(),
IPBanList.Count);
player.Message(" There are {0} worlds available ({1} loaded)",
WorldManager.WorldList.Length,
WorldManager.CountLoadedWorlds(),
Server.CountVisiblePlayers(player));
}