diff --git a/src/PocketMine.php b/src/PocketMine.php index 7ccaabf1a..eaa0def36 100644 --- a/src/PocketMine.php +++ b/src/PocketMine.php @@ -263,8 +263,6 @@ namespace pocketmine { } } - //TODO: move this to a Server field - define('pocketmine\START_TIME', microtime(true)); ThreadManager::init(); new Server($autoloader, $logger, \pocketmine\DATA, \pocketmine\PLUGIN_PATH); diff --git a/src/Server.php b/src/Server.php index aebf14bb3..edeed2f7d 100644 --- a/src/Server.php +++ b/src/Server.php @@ -209,6 +209,8 @@ class Server{ private $currentTPS = 20; /** @var float */ private $currentUse = 0; + /** @var float */ + private $startTime; /** @var bool */ private $doTitleTick = true; @@ -547,6 +549,13 @@ class Server{ return round((array_sum($this->useAverage) / count($this->useAverage)) * 100, 2); } + /** + * @return float + */ + public function getStartTime() : float{ + return $this->startTime; + } + /** * @return SimpleCommandMap */ @@ -970,6 +979,7 @@ class Server{ throw new \InvalidStateException("Only one server instance can exist at once"); } self::$instance = $this; + $this->startTime = microtime(true); $this->tickSleeper = new SleeperHandler(); $this->autoloader = $autoloader; @@ -1285,7 +1295,7 @@ class Server{ $this->logger->info($this->getLanguage()->translateString("pocketmine.server.defaultGameMode", [$this->getGamemode()->getTranslationKey()])); - $this->logger->info($this->getLanguage()->translateString("pocketmine.server.startFinished", [round(microtime(true) - \pocketmine\START_TIME, 3)])); + $this->logger->info($this->getLanguage()->translateString("pocketmine.server.startFinished", [round(microtime(true) - $this->startTime, 3)])); //TODO: move console parts to a separate component $consoleSender = new ConsoleCommandSender(); @@ -1736,7 +1746,7 @@ class Server{ $this->isRunning = false; //Force minimum uptime to be >= 120 seconds, to reduce the impact of spammy crash loops - $spacing = ((int) \pocketmine\START_TIME) - time() + 120; + $spacing = ((int) $this->startTime) - time() + 120; if($spacing > 0){ echo "--- Waiting $spacing seconds to throttle automatic restart (you can kill the process safely now) ---" . PHP_EOL; sleep($spacing); diff --git a/src/command/defaults/StatusCommand.php b/src/command/defaults/StatusCommand.php index 74d22076e..82a5d1f60 100644 --- a/src/command/defaults/StatusCommand.php +++ b/src/command/defaults/StatusCommand.php @@ -54,7 +54,7 @@ class StatusCommand extends VanillaCommand{ $server = $sender->getServer(); $sender->sendMessage(TextFormat::GREEN . "---- " . TextFormat::WHITE . "Server status" . TextFormat::GREEN . " ----"); - $time = microtime(true) - \pocketmine\START_TIME; + $time = microtime(true) - $server->getStartTime(); $seconds = floor($time % 60); $minutes = null;