mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-05-13 17:29:44 +00:00
Clean up default level provider management
This commit is contained in:
parent
23132b899c
commit
050e972add
@ -1080,12 +1080,7 @@ class Server{
|
|||||||
$generator = GeneratorManager::getGenerator($this->getLevelType());
|
$generator = GeneratorManager::getGenerator($this->getLevelType());
|
||||||
}
|
}
|
||||||
|
|
||||||
if(($providerClass = LevelProviderManager::getProviderByName($this->getProperty("level-settings.default-format", "pmanvil"))) === null){
|
$providerClass = LevelProviderManager::getDefault();
|
||||||
$providerClass = LevelProviderManager::getProviderByName("pmanvil");
|
|
||||||
if($providerClass === null){
|
|
||||||
throw new \InvalidStateException("Default level provider has not been registered");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$path = $this->getDataPath() . "worlds/" . $name . "/";
|
$path = $this->getDataPath() . "worlds/" . $name . "/";
|
||||||
/** @var LevelProvider $providerClass */
|
/** @var LevelProvider $providerClass */
|
||||||
@ -1677,6 +1672,12 @@ class Server{
|
|||||||
$this->network->registerInterface(new RakLibInterface($this));
|
$this->network->registerInterface(new RakLibInterface($this));
|
||||||
|
|
||||||
LevelProviderManager::init();
|
LevelProviderManager::init();
|
||||||
|
if(($format = LevelProviderManager::getProviderByName($formatName = (string) $this->getProperty("level-settings.default-format"))) !== null){
|
||||||
|
LevelProviderManager::setDefault($format);
|
||||||
|
}elseif($formatName !== ""){
|
||||||
|
$this->logger->warning($this->language->translateString("pocketmine.level.badDefaultFormat", [$formatName]));
|
||||||
|
}
|
||||||
|
|
||||||
if(extension_loaded("leveldb")){
|
if(extension_loaded("leveldb")){
|
||||||
$this->logger->debug($this->getLanguage()->translateString("pocketmine.debug.enable"));
|
$this->logger->debug($this->getLanguage()->translateString("pocketmine.debug.enable"));
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,9 @@ use pocketmine\utils\Utils;
|
|||||||
abstract class LevelProviderManager{
|
abstract class LevelProviderManager{
|
||||||
protected static $providers = [];
|
protected static $providers = [];
|
||||||
|
|
||||||
|
/** @var string|LevelProvider */
|
||||||
|
private static $default = PMAnvil::class;
|
||||||
|
|
||||||
public static function init() : void{
|
public static function init() : void{
|
||||||
self::addProvider(Anvil::class);
|
self::addProvider(Anvil::class);
|
||||||
self::addProvider(McRegion::class);
|
self::addProvider(McRegion::class);
|
||||||
@ -39,6 +42,29 @@ abstract class LevelProviderManager{
|
|||||||
self::addProvider(LevelDB::class);
|
self::addProvider(LevelDB::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the default format used to generate new levels.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function getDefault() : string{
|
||||||
|
return self::$default;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the default format.
|
||||||
|
*
|
||||||
|
* @param string $class Class extending LevelProvider
|
||||||
|
*
|
||||||
|
* @throws \InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public static function setDefault(string $class) : void{
|
||||||
|
Utils::testValidInstance($class, LevelProvider::class);
|
||||||
|
|
||||||
|
self::addProvider($class);
|
||||||
|
self::$default = $class;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $class
|
* @param string $class
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user