70 $server = $sender->getServer();
71 $sender->sendMessage(l10n::pocketmine_command_status_header()->format(
72 TextFormat::GREEN .
"---- " . TextFormat::RESET,
73 TextFormat::GREEN .
" ----" . TextFormat::RESET
76 $time = (int) (microtime(
true) - $server->getStartTime());
78 $seconds = strval($time % 60);
80 $minutes = strval(floor(($time % 3600) / 60));
82 $hours = strval(floor(($time % (3600 * 24)) / 3600));
83 $message = $time >= 3600 * 24 ?
84 l10n::pocketmine_command_status_uptime_days(strval(floor($time / (3600 * 24))), $hours, $minutes, $seconds) :
85 l10n::pocketmine_command_status_uptime_hours($hours, $minutes, $seconds);
87 $message = l10n::pocketmine_command_status_uptime_minutes($minutes, $seconds);
90 $message = l10n::pocketmine_command_status_uptime_seconds($seconds);
93 self::send($sender, l10n::pocketmine_command_status_uptime($message->prefix(TextFormat::RED)));
95 $tpsColor = TextFormat::GREEN;
96 $tps = $server->getTicksPerSecond();
98 $tpsColor = TextFormat::RED;
100 $tpsColor = TextFormat::GOLD;
103 self::send($sender, l10n::pocketmine_command_status_tps_current(self::formatTPS($tps, $server->getTickUsage(), $tpsColor)));
104 self::send($sender, l10n::pocketmine_command_status_tps_average(self::formatTPS($server->getTicksPerSecondAverage(), $server->getTickUsageAverage(), $tpsColor)));
106 $bandwidth = $server->getNetwork()->getBandwidthTracker();
107 self::send($sender, l10n::pocketmine_command_status_network_upload(self::formatBandwidth($bandwidth->getSend()->getAverageBytes())));
108 self::send($sender, l10n::pocketmine_command_status_network_download(self::formatBandwidth($bandwidth->getReceive()->getAverageBytes())));
110 self::send($sender, l10n::pocketmine_command_status_threads(TextFormat::RED . Process::getThreadCount()));
112 self::send($sender, l10n::pocketmine_command_status_memory_mainThread(self::formatMemory($mUsage[0])));
113 self::send($sender, l10n::pocketmine_command_status_memory_total(self::formatMemory($mUsage[1])));
114 self::send($sender, l10n::pocketmine_command_status_memory_virtual(self::formatMemory($mUsage[2])));
116 $globalLimit = $server->getMemoryManager()->getGlobalMemoryLimit();
117 if($globalLimit > 0){
118 self::send($sender, l10n::pocketmine_command_status_memory_manager(self::formatMemory($globalLimit)));
121 foreach($server->getWorldManager()->getWorlds() as $world){
122 $worldName = $world->getFolderName() !== $world->getDisplayName() ?
" (" . $world->getDisplayName() .
")" :
"";
123 $timeColor = $world->getTickRateTime() > 40 ? TextFormat::RED : TextFormat::YELLOW;
124 self::send($sender, l10n::pocketmine_command_status_world(
125 "\"{$world->getFolderName()}\"$worldName",
126 TextFormat::RED . number_format(count($world->getLoadedChunks())) . TextFormat::GREEN,
127 TextFormat::RED . number_format(count($world->getTickingChunks())) . TextFormat::GREEN,
128 TextFormat::RED . number_format(count($world->getEntities())) . TextFormat::GREEN,
129 l10n::pocketmine_command_status_world_timeStat(strval(round($world->getTickRateTime(), 2)))->prefix($timeColor)