WorldManager: localize strings for world loading, generation and conversion

This commit is contained in:
Dylan K. Taylor 2021-10-02 20:33:32 +01:00
parent f9e6fd44bc
commit d63b9d1648
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D
4 changed files with 69 additions and 7 deletions

@ -1 +1 @@
Subproject commit 4a322da43eb9beef727bd36be3d6b641b8316591 Subproject commit 6023e8b3bf089eb7c25a5ddc7b29e9ef81520e7e

View File

@ -573,6 +573,12 @@ final class KnownTranslationFactory{
return new Translatable(KnownTranslationKeys::COMMANDS_WHITELIST_USAGE, []); return new Translatable(KnownTranslationKeys::COMMANDS_WHITELIST_USAGE, []);
} }
public static function death_attack_anvil(Translatable|string $param0) : Translatable{
return new Translatable(KnownTranslationKeys::DEATH_ATTACK_ANVIL, [
0 => $param0,
]);
}
public static function death_attack_arrow(Translatable|string $param0, Translatable|string $param1) : Translatable{ public static function death_attack_arrow(Translatable|string $param0, Translatable|string $param1) : Translatable{
return new Translatable(KnownTranslationKeys::DEATH_ATTACK_ARROW, [ return new Translatable(KnownTranslationKeys::DEATH_ATTACK_ARROW, [
0 => $param0, 0 => $param0,
@ -1490,6 +1496,25 @@ final class KnownTranslationFactory{
]); ]);
} }
public static function pocketmine_level_conversion_finish(Translatable|string $worldName, Translatable|string $backupPath) : Translatable{
return new Translatable(KnownTranslationKeys::POCKETMINE_LEVEL_CONVERSION_FINISH, [
"worldName" => $worldName,
"backupPath" => $backupPath,
]);
}
public static function pocketmine_level_conversion_start(Translatable|string $worldName) : Translatable{
return new Translatable(KnownTranslationKeys::POCKETMINE_LEVEL_CONVERSION_START, [
"worldName" => $worldName,
]);
}
public static function pocketmine_level_corrupted(Translatable|string $details) : Translatable{
return new Translatable(KnownTranslationKeys::POCKETMINE_LEVEL_CORRUPTED, [
"details" => $details,
]);
}
public static function pocketmine_level_defaultError() : Translatable{ public static function pocketmine_level_defaultError() : Translatable{
return new Translatable(KnownTranslationKeys::POCKETMINE_LEVEL_DEFAULTERROR, []); return new Translatable(KnownTranslationKeys::POCKETMINE_LEVEL_DEFAULTERROR, []);
} }
@ -1520,16 +1545,36 @@ final class KnownTranslationFactory{
]); ]);
} }
public static function pocketmine_level_spawnTerrainGenerationProgress(Translatable|string $done, Translatable|string $total, Translatable|string $percentageDone) : Translatable{
return new Translatable(KnownTranslationKeys::POCKETMINE_LEVEL_SPAWNTERRAINGENERATIONPROGRESS, [
"done" => $done,
"total" => $total,
"percentageDone" => $percentageDone,
]);
}
public static function pocketmine_level_unknownFormat() : Translatable{ public static function pocketmine_level_unknownFormat() : Translatable{
return new Translatable(KnownTranslationKeys::POCKETMINE_LEVEL_UNKNOWNFORMAT, []); return new Translatable(KnownTranslationKeys::POCKETMINE_LEVEL_UNKNOWNFORMAT, []);
} }
public static function pocketmine_level_unknownGenerator(Translatable|string $generatorName) : Translatable{
return new Translatable(KnownTranslationKeys::POCKETMINE_LEVEL_UNKNOWNGENERATOR, [
"generatorName" => $generatorName,
]);
}
public static function pocketmine_level_unloading(Translatable|string $param0) : Translatable{ public static function pocketmine_level_unloading(Translatable|string $param0) : Translatable{
return new Translatable(KnownTranslationKeys::POCKETMINE_LEVEL_UNLOADING, [ return new Translatable(KnownTranslationKeys::POCKETMINE_LEVEL_UNLOADING, [
0 => $param0, 0 => $param0,
]); ]);
} }
public static function pocketmine_level_unsupportedFormat(Translatable|string $details) : Translatable{
return new Translatable(KnownTranslationKeys::POCKETMINE_LEVEL_UNSUPPORTEDFORMAT, [
"details" => $details,
]);
}
public static function pocketmine_player_invalidEntity(Translatable|string $param0) : Translatable{ public static function pocketmine_player_invalidEntity(Translatable|string $param0) : Translatable{
return new Translatable(KnownTranslationKeys::POCKETMINE_PLAYER_INVALIDENTITY, [ return new Translatable(KnownTranslationKeys::POCKETMINE_PLAYER_INVALIDENTITY, [
0 => $param0, 0 => $param0,

View File

@ -128,6 +128,7 @@ final class KnownTranslationKeys{
public const COMMANDS_WHITELIST_REMOVE_SUCCESS = "commands.whitelist.remove.success"; public const COMMANDS_WHITELIST_REMOVE_SUCCESS = "commands.whitelist.remove.success";
public const COMMANDS_WHITELIST_REMOVE_USAGE = "commands.whitelist.remove.usage"; public const COMMANDS_WHITELIST_REMOVE_USAGE = "commands.whitelist.remove.usage";
public const COMMANDS_WHITELIST_USAGE = "commands.whitelist.usage"; public const COMMANDS_WHITELIST_USAGE = "commands.whitelist.usage";
public const DEATH_ATTACK_ANVIL = "death.attack.anvil";
public const DEATH_ATTACK_ARROW = "death.attack.arrow"; public const DEATH_ATTACK_ARROW = "death.attack.arrow";
public const DEATH_ATTACK_ARROW_ITEM = "death.attack.arrow.item"; public const DEATH_ATTACK_ARROW_ITEM = "death.attack.arrow.item";
public const DEATH_ATTACK_CACTUS = "death.attack.cactus"; public const DEATH_ATTACK_CACTUS = "death.attack.cactus";
@ -324,13 +325,19 @@ final class KnownTranslationKeys{
public const POCKETMINE_LEVEL_AMBIGUOUSFORMAT = "pocketmine.level.ambiguousFormat"; public const POCKETMINE_LEVEL_AMBIGUOUSFORMAT = "pocketmine.level.ambiguousFormat";
public const POCKETMINE_LEVEL_BACKGROUNDGENERATION = "pocketmine.level.backgroundGeneration"; public const POCKETMINE_LEVEL_BACKGROUNDGENERATION = "pocketmine.level.backgroundGeneration";
public const POCKETMINE_LEVEL_BADDEFAULTFORMAT = "pocketmine.level.badDefaultFormat"; public const POCKETMINE_LEVEL_BADDEFAULTFORMAT = "pocketmine.level.badDefaultFormat";
public const POCKETMINE_LEVEL_CONVERSION_FINISH = "pocketmine.level.conversion.finish";
public const POCKETMINE_LEVEL_CONVERSION_START = "pocketmine.level.conversion.start";
public const POCKETMINE_LEVEL_CORRUPTED = "pocketmine.level.corrupted";
public const POCKETMINE_LEVEL_DEFAULTERROR = "pocketmine.level.defaultError"; public const POCKETMINE_LEVEL_DEFAULTERROR = "pocketmine.level.defaultError";
public const POCKETMINE_LEVEL_GENERATIONERROR = "pocketmine.level.generationError"; public const POCKETMINE_LEVEL_GENERATIONERROR = "pocketmine.level.generationError";
public const POCKETMINE_LEVEL_LOADERROR = "pocketmine.level.loadError"; public const POCKETMINE_LEVEL_LOADERROR = "pocketmine.level.loadError";
public const POCKETMINE_LEVEL_NOTFOUND = "pocketmine.level.notFound"; public const POCKETMINE_LEVEL_NOTFOUND = "pocketmine.level.notFound";
public const POCKETMINE_LEVEL_PREPARING = "pocketmine.level.preparing"; public const POCKETMINE_LEVEL_PREPARING = "pocketmine.level.preparing";
public const POCKETMINE_LEVEL_SPAWNTERRAINGENERATIONPROGRESS = "pocketmine.level.spawnTerrainGenerationProgress";
public const POCKETMINE_LEVEL_UNKNOWNFORMAT = "pocketmine.level.unknownFormat"; public const POCKETMINE_LEVEL_UNKNOWNFORMAT = "pocketmine.level.unknownFormat";
public const POCKETMINE_LEVEL_UNKNOWNGENERATOR = "pocketmine.level.unknownGenerator";
public const POCKETMINE_LEVEL_UNLOADING = "pocketmine.level.unloading"; public const POCKETMINE_LEVEL_UNLOADING = "pocketmine.level.unloading";
public const POCKETMINE_LEVEL_UNSUPPORTEDFORMAT = "pocketmine.level.unsupportedFormat";
public const POCKETMINE_PLAYER_INVALIDENTITY = "pocketmine.player.invalidEntity"; public const POCKETMINE_PLAYER_INVALIDENTITY = "pocketmine.player.invalidEntity";
public const POCKETMINE_PLAYER_INVALIDMOVE = "pocketmine.player.invalidMove"; public const POCKETMINE_PLAYER_INVALIDMOVE = "pocketmine.player.invalidMove";
public const POCKETMINE_PLAYER_LOGIN = "pocketmine.player.logIn"; public const POCKETMINE_PLAYER_LOGIN = "pocketmine.player.logIn";

View File

@ -50,6 +50,7 @@ use function iterator_to_array;
use function microtime; use function microtime;
use function round; use function round;
use function sprintf; use function sprintf;
use function strval;
use function trim; use function trim;
class WorldManager{ class WorldManager{
@ -207,28 +208,37 @@ class WorldManager{
try{ try{
$provider = $providerClass->fromPath($path); $provider = $providerClass->fromPath($path);
}catch(CorruptedWorldException $e){ }catch(CorruptedWorldException $e){
$this->server->getLogger()->error($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_loadError($name, "Corruption detected: " . $e->getMessage()))); $this->server->getLogger()->error($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_loadError(
$name,
KnownTranslationFactory::pocketmine_level_corrupted($e->getMessage())
)));
return false; return false;
}catch(UnsupportedWorldFormatException $e){ }catch(UnsupportedWorldFormatException $e){
$this->server->getLogger()->error($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_loadError($name, "Unsupported format: " . $e->getMessage()))); $this->server->getLogger()->error($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_loadError(
$name,
KnownTranslationFactory::pocketmine_level_unsupportedFormat($e->getMessage())
)));
return false; return false;
} }
try{ try{
GeneratorManager::getInstance()->getGenerator($provider->getWorldData()->getGenerator(), true); GeneratorManager::getInstance()->getGenerator($provider->getWorldData()->getGenerator(), true);
}catch(\InvalidArgumentException $e){ }catch(\InvalidArgumentException $e){
$this->server->getLogger()->error($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_loadError($name, "Unknown generator \"" . $provider->getWorldData()->getGenerator() . "\""))); $this->server->getLogger()->error($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_loadError(
$name,
KnownTranslationFactory::pocketmine_level_unknownGenerator($provider->getWorldData()->getGenerator())
)));
return false; return false;
} }
if(!($provider instanceof WritableWorldProvider)){ if(!($provider instanceof WritableWorldProvider)){
if(!$autoUpgrade){ if(!$autoUpgrade){
throw new UnsupportedWorldFormatException("World \"$name\" is in an unsupported format and needs to be upgraded"); throw new UnsupportedWorldFormatException("World \"$name\" is in an unsupported format and needs to be upgraded");
} }
$this->server->getLogger()->notice("Upgrading world \"$name\" to new format. This may take a while."); $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()); $converter = new FormatConverter($provider, $this->providerManager->getDefault(), Path::join($this->server->getDataPath(), "backups", "worlds"), $this->server->getLogger());
$provider = $converter->execute(); $provider = $converter->execute();
$this->server->getLogger()->notice("Upgraded world \"$name\" to new format successfully. Backed up pre-conversion world at " . $converter->getBackupPath()); $this->server->getLogger()->notice($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_conversion_finish($name, $converter->getBackupPath())));
} }
$world = new World($this->server, $name, $provider, $this->server->getAsyncPool()); $world = new World($this->server, $name, $provider, $this->server->getAsyncPool());
@ -282,7 +292,7 @@ class WorldManager{
$oldProgress = (int) floor(($done / $total) * 100); $oldProgress = (int) floor(($done / $total) * 100);
$newProgress = (int) floor((++$done / $total) * 100); $newProgress = (int) floor((++$done / $total) * 100);
if(intdiv($oldProgress, 10) !== intdiv($newProgress, 10) || $done === $total || $done === 1){ if(intdiv($oldProgress, 10) !== intdiv($newProgress, 10) || $done === $total || $done === 1){
$world->getLogger()->info("Generating spawn terrain chunks: $done / $total ($newProgress%)"); $world->getLogger()->info($world->getServer()->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_spawnTerrainGenerationProgress(strval($done), strval($total), strval($newProgress))));
} }
}, },
static function() : void{ static function() : void{