diff --git a/src/pocketmine/Server.php b/src/pocketmine/Server.php index 96872c761..1917b4b8b 100644 --- a/src/pocketmine/Server.php +++ b/src/pocketmine/Server.php @@ -1657,12 +1657,11 @@ class Server{ LevelProviderManager::addProvider(Anvil::class); LevelProviderManager::addProvider(McRegion::class); LevelProviderManager::addProvider(PMAnvil::class); + LevelProviderManager::addProvider(LevelDB::class); if(extension_loaded("leveldb")){ $this->logger->debug($this->getLanguage()->translateString("pocketmine.debug.enable")); - LevelProviderManager::addProvider(LevelDB::class); } - Generator::addGenerator(Flat::class, "flat"); Generator::addGenerator(Normal::class, "normal"); Generator::addGenerator(Normal::class, "default"); diff --git a/src/pocketmine/level/format/io/leveldb/LevelDB.php b/src/pocketmine/level/format/io/leveldb/LevelDB.php index 0008eddec..e691c0d59 100644 --- a/src/pocketmine/level/format/io/leveldb/LevelDB.php +++ b/src/pocketmine/level/format/io/leveldb/LevelDB.php @@ -77,7 +77,15 @@ class LevelDB extends BaseLevelProvider{ /** @var \LevelDB */ protected $db; + private static function checkForLevelDBExtension(){ + if(!extension_loaded('leveldb')){ + throw new LevelException("The leveldb PHP extension is required to use this world format"); + } + } + public function __construct(Level $level, string $path){ + self::checkForLevelDBExtension(); + $this->level = $level; $this->path = $path; if(!file_exists($this->path)){ @@ -92,6 +100,7 @@ class LevelDB extends BaseLevelProvider{ throw new LevelException("Invalid level.dat"); } + $this->db = new \LevelDB($this->path . "/db", [ "compression" => LEVELDB_ZLIB_COMPRESSION ]); @@ -145,6 +154,8 @@ class LevelDB extends BaseLevelProvider{ } public static function generate(string $path, string $name, int $seed, string $generator, array $options = []){ + self::checkForLevelDBExtension(); + if(!file_exists($path)){ mkdir($path, 0777, true); }