mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-06-07 12:18:46 +00:00
Server: break some isolated stuff out of Server::__construct()
This commit is contained in:
parent
7a4af7a0bc
commit
bdbfa70558
@ -973,6 +973,51 @@ class Server{
|
|||||||
$this->pluginManager->loadPlugins($this->pluginPath);
|
$this->pluginManager->loadPlugins($this->pluginPath);
|
||||||
$this->enablePlugins(PluginEnableOrder::STARTUP());
|
$this->enablePlugins(PluginEnableOrder::STARTUP());
|
||||||
|
|
||||||
|
if(!$this->startupPrepareWorlds()){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$this->enablePlugins(PluginEnableOrder::POSTWORLD());
|
||||||
|
|
||||||
|
if(!$this->startupPrepareNetworkInterfaces()){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($this->configGroup->getPropertyBool("anonymous-statistics.enabled", true)){
|
||||||
|
$this->sendUsageTicker = 6000;
|
||||||
|
$this->sendUsage(SendUsageTask::TYPE_OPEN);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->configGroup->save();
|
||||||
|
|
||||||
|
$this->logger->info($this->getLanguage()->translate(KnownTranslationFactory::pocketmine_server_defaultGameMode($this->getGamemode()->getTranslatableName())));
|
||||||
|
$this->logger->info($this->getLanguage()->translate(KnownTranslationFactory::pocketmine_server_donate(TextFormat::AQUA . "https://patreon.com/pocketminemp" . TextFormat::RESET)));
|
||||||
|
$this->logger->info($this->getLanguage()->translate(KnownTranslationFactory::pocketmine_server_startFinished(strval(round(microtime(true) - $this->startTime, 3)))));
|
||||||
|
|
||||||
|
//TODO: move console parts to a separate component
|
||||||
|
$consoleSender = new ConsoleCommandSender($this, $this->language);
|
||||||
|
$this->subscribeToBroadcastChannel(self::BROADCAST_CHANNEL_ADMINISTRATIVE, $consoleSender);
|
||||||
|
$this->subscribeToBroadcastChannel(self::BROADCAST_CHANNEL_USERS, $consoleSender);
|
||||||
|
|
||||||
|
$consoleNotifier = new SleeperNotifier();
|
||||||
|
$commandBuffer = new \Threaded();
|
||||||
|
$this->console = new ConsoleReaderThread($commandBuffer, $consoleNotifier);
|
||||||
|
$this->tickSleeper->addNotifier($consoleNotifier, function() use ($commandBuffer, $consoleSender) : void{
|
||||||
|
Timings::$serverCommand->startTiming();
|
||||||
|
while(($line = $commandBuffer->shift()) !== null){
|
||||||
|
$this->dispatchCommand($consoleSender, (string) $line);
|
||||||
|
}
|
||||||
|
Timings::$serverCommand->stopTiming();
|
||||||
|
});
|
||||||
|
$this->console->start(PTHREADS_INHERIT_NONE);
|
||||||
|
|
||||||
|
$this->tickProcessor();
|
||||||
|
$this->forceShutdown();
|
||||||
|
}catch(\Throwable $e){
|
||||||
|
$this->exceptionHandler($e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function startupPrepareWorlds() : bool{
|
||||||
$getGenerator = function(string $generatorName, string $generatorOptions, string $worldName) : ?string{
|
$getGenerator = function(string $generatorName, string $generatorOptions, string $worldName) : ?string{
|
||||||
$generatorEntry = GeneratorManager::getInstance()->getGenerator($generatorName);
|
$generatorEntry = GeneratorManager::getInstance()->getGenerator($generatorName);
|
||||||
if($generatorEntry === null){
|
if($generatorEntry === null){
|
||||||
@ -1057,13 +1102,15 @@ class Server{
|
|||||||
$this->getLogger()->emergency($this->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_defaultError()));
|
$this->getLogger()->emergency($this->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_defaultError()));
|
||||||
$this->forceShutdown();
|
$this->forceShutdown();
|
||||||
|
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
$this->worldManager->setDefaultWorld($world);
|
$this->worldManager->setDefaultWorld($world);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->enablePlugins(PluginEnableOrder::POSTWORLD());
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function startupPrepareNetworkInterfaces() : bool{
|
||||||
$useQuery = $this->configGroup->getConfigBool("enable-query", true);
|
$useQuery = $this->configGroup->getConfigBool("enable-query", true);
|
||||||
if(!$this->network->registerInterface(new RakLibInterface($this)) && $useQuery){
|
if(!$this->network->registerInterface(new RakLibInterface($this)) && $useQuery){
|
||||||
//RakLib would normally handle the transport for Query packets
|
//RakLib would normally handle the transport for Query packets
|
||||||
@ -1084,39 +1131,7 @@ class Server{
|
|||||||
$this->network->registerInterface(new UPnPNetworkInterface($this->logger, Internet::getInternalIP(), $this->getPort()));
|
$this->network->registerInterface(new UPnPNetworkInterface($this->logger, Internet::getInternalIP(), $this->getPort()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if($this->configGroup->getPropertyBool("anonymous-statistics.enabled", true)){
|
return true;
|
||||||
$this->sendUsageTicker = 6000;
|
|
||||||
$this->sendUsage(SendUsageTask::TYPE_OPEN);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->configGroup->save();
|
|
||||||
|
|
||||||
$this->logger->info($this->getLanguage()->translate(KnownTranslationFactory::pocketmine_server_defaultGameMode($this->getGamemode()->getTranslatableName())));
|
|
||||||
$this->logger->info($this->getLanguage()->translate(KnownTranslationFactory::pocketmine_server_donate(TextFormat::AQUA . "https://patreon.com/pocketminemp" . TextFormat::RESET)));
|
|
||||||
$this->logger->info($this->getLanguage()->translate(KnownTranslationFactory::pocketmine_server_startFinished(strval(round(microtime(true) - $this->startTime, 3)))));
|
|
||||||
|
|
||||||
//TODO: move console parts to a separate component
|
|
||||||
$consoleSender = new ConsoleCommandSender($this, $this->language);
|
|
||||||
$this->subscribeToBroadcastChannel(self::BROADCAST_CHANNEL_ADMINISTRATIVE, $consoleSender);
|
|
||||||
$this->subscribeToBroadcastChannel(self::BROADCAST_CHANNEL_USERS, $consoleSender);
|
|
||||||
|
|
||||||
$consoleNotifier = new SleeperNotifier();
|
|
||||||
$commandBuffer = new \Threaded();
|
|
||||||
$this->console = new ConsoleReaderThread($commandBuffer, $consoleNotifier);
|
|
||||||
$this->tickSleeper->addNotifier($consoleNotifier, function() use ($commandBuffer, $consoleSender) : void{
|
|
||||||
Timings::$serverCommand->startTiming();
|
|
||||||
while(($line = $commandBuffer->shift()) !== null){
|
|
||||||
$this->dispatchCommand($consoleSender, (string) $line);
|
|
||||||
}
|
|
||||||
Timings::$serverCommand->stopTiming();
|
|
||||||
});
|
|
||||||
$this->console->start(PTHREADS_INHERIT_NONE);
|
|
||||||
|
|
||||||
$this->tickProcessor();
|
|
||||||
$this->forceShutdown();
|
|
||||||
}catch(\Throwable $e){
|
|
||||||
$this->exceptionHandler($e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user