69 $server = $sender->getServer();
70 $sender->sendMessage(l10n::pocketmine_command_status_header()->format(
71 TextFormat::GREEN .
"---- " . TextFormat::RESET,
72 TextFormat::GREEN .
" ----" . TextFormat::RESET
75 $time = (int) (microtime(
true) - $server->getStartTime());
77 $seconds = strval($time % 60);
79 $minutes = strval(floor(($time % 3600) / 60));
81 $hours = strval(floor(($time % (3600 * 24)) / 3600));
82 $message = $time >= 3600 * 24 ?
83 l10n::pocketmine_command_status_uptime_days(strval(floor($time / (3600 * 24))), $hours, $minutes, $seconds) :
84 l10n::pocketmine_command_status_uptime_hours($hours, $minutes, $seconds);
86 $message = l10n::pocketmine_command_status_uptime_minutes($minutes, $seconds);
89 $message = l10n::pocketmine_command_status_uptime_seconds($seconds);
92 self::send($sender, l10n::pocketmine_command_status_uptime($message->prefix(TextFormat::RED)));
94 $tpsColor = TextFormat::GREEN;
95 $tps = $server->getTicksPerSecond();
97 $tpsColor = TextFormat::RED;
99 $tpsColor = TextFormat::GOLD;
102 self::send($sender, l10n::pocketmine_command_status_tps_current(self::formatTPS($tps, $server->getTickUsage(), $tpsColor)));
103 self::send($sender, l10n::pocketmine_command_status_tps_average(self::formatTPS($server->getTicksPerSecondAverage(), $server->getTickUsageAverage(), $tpsColor)));
105 $bandwidth = $server->getNetwork()->getBandwidthTracker();
106 self::send($sender, l10n::pocketmine_command_status_network_upload(self::formatBandwidth($bandwidth->getSend()->getAverageBytes())));
107 self::send($sender, l10n::pocketmine_command_status_network_download(self::formatBandwidth($bandwidth->getReceive()->getAverageBytes())));
109 self::send($sender, l10n::pocketmine_command_status_threads(TextFormat::RED . Process::getThreadCount()));
111 self::send($sender, l10n::pocketmine_command_status_memory_mainThread(self::formatMemory($mUsage[0])));
112 self::send($sender, l10n::pocketmine_command_status_memory_total(self::formatMemory($mUsage[1])));
113 self::send($sender, l10n::pocketmine_command_status_memory_virtual(self::formatMemory($mUsage[2])));
115 $globalLimit = $server->getMemoryManager()->getGlobalMemoryLimit();
116 if($globalLimit > 0){
117 self::send($sender, l10n::pocketmine_command_status_memory_manager(self::formatMemory($globalLimit)));
120 foreach($server->getWorldManager()->getWorlds() as $world){
121 $worldName = $world->getFolderName() !== $world->getDisplayName() ?
" (" . $world->getDisplayName() .
")" :
"";
122 $timeColor = $world->getTickRateTime() > 40 ? TextFormat::RED : TextFormat::YELLOW;
123 self::send($sender, l10n::pocketmine_command_status_world(
124 "\"{$world->getFolderName()}\"$worldName",
125 TextFormat::RED . number_format(count($world->getLoadedChunks())) . TextFormat::GREEN,
126 TextFormat::RED . number_format(count($world->getTickingChunks())) . TextFormat::GREEN,
127 TextFormat::RED . number_format(count($world->getEntities())) . TextFormat::GREEN,
128 l10n::pocketmine_command_status_world_timeStat(strval(round($world->getTickRateTime(), 2)))->prefix($timeColor)