From e1ee320c8d4b5eaf355e7696b12786257190b23d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 11 Oct 2021 00:58:33 +0100 Subject: [PATCH] PluginManager: Localize plugin loading error messages --- resources/locale | 2 +- src/lang/KnownTranslationFactory.php | 52 ++++++++++++++++++++++++++++ src/lang/KnownTranslationKeys.php | 9 +++++ src/plugin/PluginManager.php | 20 +++++++---- 4 files changed, 76 insertions(+), 7 deletions(-) diff --git a/resources/locale b/resources/locale index 299927cf8..d9b2c17b2 160000 --- a/resources/locale +++ b/resources/locale @@ -1 +1 @@ -Subproject commit 299927cf85ef6b19d9a159e0bde66ef50e1c143d +Subproject commit d9b2c17b20e4eaf5538b179ab57c5568bb818359 diff --git a/src/lang/KnownTranslationFactory.php b/src/lang/KnownTranslationFactory.php index 78f0abe6e..e02f95370 100644 --- a/src/lang/KnownTranslationFactory.php +++ b/src/lang/KnownTranslationFactory.php @@ -1671,6 +1671,12 @@ final class KnownTranslationFactory{ ]); } + public static function pocketmine_plugin_badDataFolder(Translatable|string $dataFolder) : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_BADDATAFOLDER, [ + "dataFolder" => $dataFolder, + ]); + } + public static function pocketmine_plugin_circularDependency() : Translatable{ return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_CIRCULARDEPENDENCY, []); } @@ -1696,18 +1702,39 @@ final class KnownTranslationFactory{ ]); } + public static function pocketmine_plugin_disallowedByBlacklist() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_DISALLOWEDBYBLACKLIST, []); + } + + public static function pocketmine_plugin_disallowedByWhitelist() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_DISALLOWEDBYWHITELIST, []); + } + public static function pocketmine_plugin_duplicateError(Translatable|string $param0) : Translatable{ return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_DUPLICATEERROR, [ 0 => $param0, ]); } + public static function pocketmine_plugin_emptyExtensionVersionConstraint(Translatable|string $constraintIndex, Translatable|string $extensionName) : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_EMPTYEXTENSIONVERSIONCONSTRAINT, [ + "constraintIndex" => $constraintIndex, + "extensionName" => $extensionName, + ]); + } + public static function pocketmine_plugin_enable(Translatable|string $param0) : Translatable{ return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_ENABLE, [ 0 => $param0, ]); } + public static function pocketmine_plugin_extensionNotLoaded(Translatable|string $extensionName) : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_EXTENSIONNOTLOADED, [ + "extensionName" => $extensionName, + ]); + } + public static function pocketmine_plugin_genericLoadError(Translatable|string $param0) : Translatable{ return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_GENERICLOADERROR, [ 0 => $param0, @@ -1720,6 +1747,14 @@ final class KnownTranslationFactory{ ]); } + public static function pocketmine_plugin_incompatibleExtensionVersion(Translatable|string $extensionVersion, Translatable|string $extensionName, Translatable|string $pluginRequirement) : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_INCOMPATIBLEEXTENSIONVERSION, [ + "extensionVersion" => $extensionVersion, + "extensionName" => $extensionName, + "pluginRequirement" => $pluginRequirement, + ]); + } + public static function pocketmine_plugin_incompatibleOS(Translatable|string $param0) : Translatable{ return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_INCOMPATIBLEOS, [ 0 => $param0, @@ -1744,6 +1779,13 @@ final class KnownTranslationFactory{ ]); } + public static function pocketmine_plugin_invalidExtensionVersionConstraint(Translatable|string $versionConstraint, Translatable|string $extensionName) : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_INVALIDEXTENSIONVERSIONCONSTRAINT, [ + "versionConstraint" => $versionConstraint, + "extensionName" => $extensionName, + ]); + } + public static function pocketmine_plugin_invalidManifest(Translatable|string $details) : Translatable{ return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_INVALIDMANIFEST, [ "details" => $details, @@ -1763,6 +1805,16 @@ final class KnownTranslationFactory{ ]); } + public static function pocketmine_plugin_mainClassNotFound() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_MAINCLASSNOTFOUND, []); + } + + public static function pocketmine_plugin_mainClassWrongType(Translatable|string $pluginInterface) : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_MAINCLASSWRONGTYPE, [ + "pluginInterface" => $pluginInterface, + ]); + } + public static function pocketmine_plugin_restrictedName() : Translatable{ return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_RESTRICTEDNAME, []); } diff --git a/src/lang/KnownTranslationKeys.php b/src/lang/KnownTranslationKeys.php index 039642a96..238b4f806 100644 --- a/src/lang/KnownTranslationKeys.php +++ b/src/lang/KnownTranslationKeys.php @@ -352,21 +352,30 @@ final class KnownTranslationKeys{ public const POCKETMINE_PLAYER_LOGOUT = "pocketmine.player.logOut"; public const POCKETMINE_PLUGIN_ALIASERROR = "pocketmine.plugin.aliasError"; public const POCKETMINE_PLUGIN_AMBIGUOUSMINAPI = "pocketmine.plugin.ambiguousMinAPI"; + public const POCKETMINE_PLUGIN_BADDATAFOLDER = "pocketmine.plugin.badDataFolder"; public const POCKETMINE_PLUGIN_CIRCULARDEPENDENCY = "pocketmine.plugin.circularDependency"; public const POCKETMINE_PLUGIN_COMMANDERROR = "pocketmine.plugin.commandError"; public const POCKETMINE_PLUGIN_DEPRECATEDEVENT = "pocketmine.plugin.deprecatedEvent"; public const POCKETMINE_PLUGIN_DISABLE = "pocketmine.plugin.disable"; + public const POCKETMINE_PLUGIN_DISALLOWEDBYBLACKLIST = "pocketmine.plugin.disallowedByBlacklist"; + public const POCKETMINE_PLUGIN_DISALLOWEDBYWHITELIST = "pocketmine.plugin.disallowedByWhitelist"; public const POCKETMINE_PLUGIN_DUPLICATEERROR = "pocketmine.plugin.duplicateError"; + public const POCKETMINE_PLUGIN_EMPTYEXTENSIONVERSIONCONSTRAINT = "pocketmine.plugin.emptyExtensionVersionConstraint"; public const POCKETMINE_PLUGIN_ENABLE = "pocketmine.plugin.enable"; + public const POCKETMINE_PLUGIN_EXTENSIONNOTLOADED = "pocketmine.plugin.extensionNotLoaded"; public const POCKETMINE_PLUGIN_GENERICLOADERROR = "pocketmine.plugin.genericLoadError"; public const POCKETMINE_PLUGIN_INCOMPATIBLEAPI = "pocketmine.plugin.incompatibleAPI"; + public const POCKETMINE_PLUGIN_INCOMPATIBLEEXTENSIONVERSION = "pocketmine.plugin.incompatibleExtensionVersion"; public const POCKETMINE_PLUGIN_INCOMPATIBLEOS = "pocketmine.plugin.incompatibleOS"; public const POCKETMINE_PLUGIN_INCOMPATIBLEPHPVERSION = "pocketmine.plugin.incompatiblePhpVersion"; public const POCKETMINE_PLUGIN_INCOMPATIBLEPROTOCOL = "pocketmine.plugin.incompatibleProtocol"; public const POCKETMINE_PLUGIN_INVALIDAPI = "pocketmine.plugin.invalidAPI"; + public const POCKETMINE_PLUGIN_INVALIDEXTENSIONVERSIONCONSTRAINT = "pocketmine.plugin.invalidExtensionVersionConstraint"; public const POCKETMINE_PLUGIN_INVALIDMANIFEST = "pocketmine.plugin.invalidManifest"; public const POCKETMINE_PLUGIN_LOAD = "pocketmine.plugin.load"; public const POCKETMINE_PLUGIN_LOADERROR = "pocketmine.plugin.loadError"; + public const POCKETMINE_PLUGIN_MAINCLASSNOTFOUND = "pocketmine.plugin.mainClassNotFound"; + public const POCKETMINE_PLUGIN_MAINCLASSWRONGTYPE = "pocketmine.plugin.mainClassWrongType"; public const POCKETMINE_PLUGIN_RESTRICTEDNAME = "pocketmine.plugin.restrictedName"; public const POCKETMINE_PLUGIN_SPACESDISCOURAGED = "pocketmine.plugin.spacesDiscouraged"; public const POCKETMINE_PLUGIN_UNKNOWNDEPENDENCY = "pocketmine.plugin.unknownDependency"; diff --git a/src/plugin/PluginManager.php b/src/plugin/PluginManager.php index 064780653..7b963af7e 100644 --- a/src/plugin/PluginManager.php +++ b/src/plugin/PluginManager.php @@ -178,11 +178,15 @@ class PluginManager{ if($loader->canLoadPlugin($path)){ $description = $loader->getPluginDescription($path); if($description instanceof PluginDescription){ + $language = $this->server->getLanguage(); $this->server->getLogger()->info($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_plugin_load($description->getFullName()))); $dataFolder = $this->getDataDirectory($path, $description->getName()); if(file_exists($dataFolder) and !is_dir($dataFolder)){ - $this->server->getLogger()->error("Projected dataFolder '" . $dataFolder . "' for " . $description->getName() . " exists and is not a directory"); + $this->server->getLogger()->error($language->translate(KnownTranslationFactory::pocketmine_plugin_loadError( + $description->getName(), + KnownTranslationFactory::pocketmine_plugin_badDataFolder($dataFolder) + ))); return null; } if(!file_exists($dataFolder)){ @@ -194,11 +198,17 @@ class PluginManager{ $mainClass = $description->getMain(); if(!class_exists($mainClass, true)){ - $this->server->getLogger()->error("Main class for plugin " . $description->getName() . " not found"); + $this->server->getLogger()->error($language->translate(KnownTranslationFactory::pocketmine_plugin_loadError( + $description->getName(), + KnownTranslationFactory::pocketmine_plugin_mainClassNotFound() + ))); return null; } if(!is_a($mainClass, Plugin::class, true)){ - $this->server->getLogger()->error("Main class for plugin " . $description->getName() . " is not an instance of " . Plugin::class); + $this->server->getLogger()->error($language->translate(KnownTranslationFactory::pocketmine_plugin_loadError( + $description->getName(), + KnownTranslationFactory::pocketmine_plugin_mainClassWrongType(Plugin::class) + ))); return null; } @@ -316,7 +326,7 @@ class PluginManager{ if($this->graylist !== null and !$this->graylist->isAllowed($name)){ $this->server->getLogger()->notice($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_plugin_loadError( $name, - "Disallowed by graylist" + $this->graylist->isWhitelist() ? KnownTranslationFactory::pocketmine_plugin_disallowedByWhitelist() : KnownTranslationFactory::pocketmine_plugin_disallowedByBlacklist() ))); continue; } @@ -381,8 +391,6 @@ class PluginManager{ $loadedThisLoop++; if(($plugin = $this->loadPlugin($file, $loaders)) instanceof Plugin){ $loadedPlugins[$name] = $plugin; - }else{ - $this->server->getLogger()->critical($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_plugin_genericLoadError($name))); } } }