mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-07-23 11:26:37 +00:00
WorldProviders now accept Loggers
This commit is contained in:
parent
d0d263191d
commit
f29e2f7110
@ -197,7 +197,7 @@ class WorldManager{
|
|||||||
$providerClass = array_shift($providers);
|
$providerClass = array_shift($providers);
|
||||||
|
|
||||||
try{
|
try{
|
||||||
$provider = $providerClass->fromPath($path);
|
$provider = $providerClass->fromPath($path, new \PrefixedLogger($this->server->getLogger(), "World Provider: $name"));
|
||||||
}catch(CorruptedWorldException $e){
|
}catch(CorruptedWorldException $e){
|
||||||
$this->server->getLogger()->error($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_loadError(
|
$this->server->getLogger()->error($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_loadError(
|
||||||
$name,
|
$name,
|
||||||
@ -239,8 +239,10 @@ class WorldManager{
|
|||||||
}
|
}
|
||||||
$this->server->getLogger()->notice($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_conversion_start($name)));
|
$this->server->getLogger()->notice($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_conversion_start($name)));
|
||||||
|
|
||||||
$converter = new FormatConverter($provider, $this->providerManager->getDefault(), Path::join($this->server->getDataPath(), "backups", "worlds"), $this->server->getLogger());
|
$providerClass = $this->providerManager->getDefault();
|
||||||
$provider = $converter->execute();
|
$converter = new FormatConverter($provider, $providerClass, Path::join($this->server->getDataPath(), "backups", "worlds"), $this->server->getLogger());
|
||||||
|
$converter->execute();
|
||||||
|
$provider = $providerClass->fromPath($path, new \PrefixedLogger($this->server->getLogger(), "World Provider: $name"));
|
||||||
|
|
||||||
$this->server->getLogger()->notice($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_conversion_finish($name, $converter->getBackupPath())));
|
$this->server->getLogger()->notice($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_conversion_finish($name, $converter->getBackupPath())));
|
||||||
}
|
}
|
||||||
@ -270,7 +272,7 @@ class WorldManager{
|
|||||||
$path = $this->getWorldPath($name);
|
$path = $this->getWorldPath($name);
|
||||||
$providerEntry->generate($path, $name, $options);
|
$providerEntry->generate($path, $name, $options);
|
||||||
|
|
||||||
$world = new World($this->server, $name, $providerEntry->fromPath($path), $this->server->getAsyncPool());
|
$world = new World($this->server, $name, $providerEntry->fromPath($path, new \PrefixedLogger($this->server->getLogger(), "World Provider: $name")), $this->server->getAsyncPool());
|
||||||
$this->worlds[$world->getId()] = $world;
|
$this->worlds[$world->getId()] = $world;
|
||||||
|
|
||||||
$world->setAutoSave($this->autoSave);
|
$world->setAutoSave($this->autoSave);
|
||||||
|
@ -41,7 +41,8 @@ abstract class BaseWorldProvider implements WorldProvider{
|
|||||||
protected BlockStateSerializer $blockStateSerializer;
|
protected BlockStateSerializer $blockStateSerializer;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
protected string $path
|
protected string $path,
|
||||||
|
protected \Logger $logger
|
||||||
){
|
){
|
||||||
if(!file_exists($path)){
|
if(!file_exists($path)){
|
||||||
throw new WorldException("World does not exist");
|
throw new WorldException("World does not exist");
|
||||||
|
@ -67,7 +67,7 @@ class FormatConverter{
|
|||||||
return $this->backupPath;
|
return $this->backupPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function execute() : WritableWorldProvider{
|
public function execute() : void{
|
||||||
$new = $this->generateNew();
|
$new = $this->generateNew();
|
||||||
|
|
||||||
$this->populateLevelData($new->getWorldData());
|
$this->populateLevelData($new->getWorldData());
|
||||||
@ -91,7 +91,6 @@ class FormatConverter{
|
|||||||
}
|
}
|
||||||
|
|
||||||
$this->logger->info("Conversion completed");
|
$this->logger->info("Conversion completed");
|
||||||
return $this->newProvider->fromPath($path);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function generateNew() : WritableWorldProvider{
|
private function generateNew() : WritableWorldProvider{
|
||||||
@ -113,7 +112,7 @@ class FormatConverter{
|
|||||||
->setDifficulty($data->getDifficulty())
|
->setDifficulty($data->getDifficulty())
|
||||||
);
|
);
|
||||||
|
|
||||||
return $this->newProvider->fromPath($convertedOutput);
|
return $this->newProvider->fromPath($convertedOutput, $this->logger);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function populateLevelData(WorldData $data) : void{
|
private function populateLevelData(WorldData $data) : void{
|
||||||
|
@ -24,7 +24,7 @@ declare(strict_types=1);
|
|||||||
namespace pocketmine\world\format\io;
|
namespace pocketmine\world\format\io;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @phpstan-type FromPath \Closure(string $path) : WorldProvider
|
* @phpstan-type FromPath \Closure(string $path, \Logger $logger) : WorldProvider
|
||||||
*/
|
*/
|
||||||
class ReadOnlyWorldProviderManagerEntry extends WorldProviderManagerEntry{
|
class ReadOnlyWorldProviderManagerEntry extends WorldProviderManagerEntry{
|
||||||
|
|
||||||
@ -36,5 +36,5 @@ class ReadOnlyWorldProviderManagerEntry extends WorldProviderManagerEntry{
|
|||||||
parent::__construct($isValid);
|
parent::__construct($isValid);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function fromPath(string $path) : WorldProvider{ return ($this->fromPath)($path); }
|
public function fromPath(string $path, \Logger $logger) : WorldProvider{ return ($this->fromPath)($path, $logger); }
|
||||||
}
|
}
|
||||||
|
@ -41,13 +41,13 @@ final class WorldProviderManager{
|
|||||||
private WritableWorldProviderManagerEntry $default;
|
private WritableWorldProviderManagerEntry $default;
|
||||||
|
|
||||||
public function __construct(){
|
public function __construct(){
|
||||||
$leveldb = new WritableWorldProviderManagerEntry(\Closure::fromCallable([LevelDB::class, 'isValid']), fn(string $path) => new LevelDB($path), \Closure::fromCallable([LevelDB::class, 'generate']));
|
$leveldb = new WritableWorldProviderManagerEntry(\Closure::fromCallable([LevelDB::class, 'isValid']), fn(string $path, \Logger $logger) => new LevelDB($path, $logger), \Closure::fromCallable([LevelDB::class, 'generate']));
|
||||||
$this->default = $leveldb;
|
$this->default = $leveldb;
|
||||||
$this->addProvider($leveldb, "leveldb");
|
$this->addProvider($leveldb, "leveldb");
|
||||||
|
|
||||||
$this->addProvider(new ReadOnlyWorldProviderManagerEntry(\Closure::fromCallable([Anvil::class, 'isValid']), fn(string $path) => new Anvil($path)), "anvil");
|
$this->addProvider(new ReadOnlyWorldProviderManagerEntry(\Closure::fromCallable([Anvil::class, 'isValid']), fn(string $path, \Logger $logger) => new Anvil($path, $logger)), "anvil");
|
||||||
$this->addProvider(new ReadOnlyWorldProviderManagerEntry(\Closure::fromCallable([McRegion::class, 'isValid']), fn(string $path) => new McRegion($path)), "mcregion");
|
$this->addProvider(new ReadOnlyWorldProviderManagerEntry(\Closure::fromCallable([McRegion::class, 'isValid']), fn(string $path, \Logger $logger) => new McRegion($path, $logger)), "mcregion");
|
||||||
$this->addProvider(new ReadOnlyWorldProviderManagerEntry(\Closure::fromCallable([PMAnvil::class, 'isValid']), fn(string $path) => new PMAnvil($path)), "pmanvil");
|
$this->addProvider(new ReadOnlyWorldProviderManagerEntry(\Closure::fromCallable([PMAnvil::class, 'isValid']), fn(string $path, \Logger $logger) => new PMAnvil($path, $logger)), "pmanvil");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -46,5 +46,5 @@ abstract class WorldProviderManagerEntry{
|
|||||||
* @throws CorruptedWorldException
|
* @throws CorruptedWorldException
|
||||||
* @throws UnsupportedWorldFormatException
|
* @throws UnsupportedWorldFormatException
|
||||||
*/
|
*/
|
||||||
abstract public function fromPath(string $path) : WorldProvider;
|
abstract public function fromPath(string $path, \Logger $logger) : WorldProvider;
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ namespace pocketmine\world\format\io;
|
|||||||
use pocketmine\world\WorldCreationOptions;
|
use pocketmine\world\WorldCreationOptions;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @phpstan-type FromPath \Closure(string $path) : WritableWorldProvider
|
* @phpstan-type FromPath \Closure(string $path, \Logger $logger) : WritableWorldProvider
|
||||||
* @phpstan-type Generate \Closure(string $path, string $name, WorldCreationOptions $options) : void
|
* @phpstan-type Generate \Closure(string $path, string $name, WorldCreationOptions $options) : void
|
||||||
*/
|
*/
|
||||||
final class WritableWorldProviderManagerEntry extends WorldProviderManagerEntry{
|
final class WritableWorldProviderManagerEntry extends WorldProviderManagerEntry{
|
||||||
@ -43,8 +43,8 @@ final class WritableWorldProviderManagerEntry extends WorldProviderManagerEntry{
|
|||||||
parent::__construct($isValid);
|
parent::__construct($isValid);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function fromPath(string $path) : WritableWorldProvider{
|
public function fromPath(string $path, \Logger $logger) : WritableWorldProvider{
|
||||||
return ($this->fromPath)($path);
|
return ($this->fromPath)($path, $logger);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -102,9 +102,9 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function __construct(string $path){
|
public function __construct(string $path, \Logger $logger){
|
||||||
self::checkForLevelDBExtension();
|
self::checkForLevelDBExtension();
|
||||||
parent::__construct($path);
|
parent::__construct($path, $logger);
|
||||||
|
|
||||||
try{
|
try{
|
||||||
$this->db = self::createDB($path);
|
$this->db = self::createDB($path);
|
||||||
|
@ -74,7 +74,7 @@ if(count($oldProviderClasses) > 1){
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
$oldProviderClass = array_shift($oldProviderClasses);
|
$oldProviderClass = array_shift($oldProviderClasses);
|
||||||
$oldProvider = $oldProviderClass->fromPath($inputPath);
|
$oldProvider = $oldProviderClass->fromPath($inputPath, new \PrefixedLogger(\GlobalLogger::get(), "Old World Provider"));
|
||||||
|
|
||||||
$converter = new FormatConverter($oldProvider, $writableFormats[$args["format"]], $backupPath, GlobalLogger::get());
|
$converter = new FormatConverter($oldProvider, $writableFormats[$args["format"]], $backupPath, GlobalLogger::get());
|
||||||
$converter->execute();
|
$converter->execute();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user