PluginManager: Localize plugin loading error messages

This commit is contained in:
Dylan K. Taylor 2021-10-11 00:58:33 +01:00
parent 965a16d19d
commit e1ee320c8d
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D
4 changed files with 76 additions and 7 deletions

@ -1 +1 @@
Subproject commit 299927cf85ef6b19d9a159e0bde66ef50e1c143d Subproject commit d9b2c17b20e4eaf5538b179ab57c5568bb818359

View File

@ -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{ public static function pocketmine_plugin_circularDependency() : Translatable{
return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_CIRCULARDEPENDENCY, []); 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{ public static function pocketmine_plugin_duplicateError(Translatable|string $param0) : Translatable{
return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_DUPLICATEERROR, [ return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_DUPLICATEERROR, [
0 => $param0, 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{ public static function pocketmine_plugin_enable(Translatable|string $param0) : Translatable{
return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_ENABLE, [ return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_ENABLE, [
0 => $param0, 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{ public static function pocketmine_plugin_genericLoadError(Translatable|string $param0) : Translatable{
return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_GENERICLOADERROR, [ return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_GENERICLOADERROR, [
0 => $param0, 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{ public static function pocketmine_plugin_incompatibleOS(Translatable|string $param0) : Translatable{
return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_INCOMPATIBLEOS, [ return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_INCOMPATIBLEOS, [
0 => $param0, 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{ public static function pocketmine_plugin_invalidManifest(Translatable|string $details) : Translatable{
return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_INVALIDMANIFEST, [ return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_INVALIDMANIFEST, [
"details" => $details, "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{ public static function pocketmine_plugin_restrictedName() : Translatable{
return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_RESTRICTEDNAME, []); return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_RESTRICTEDNAME, []);
} }

View File

@ -352,21 +352,30 @@ final class KnownTranslationKeys{
public const POCKETMINE_PLAYER_LOGOUT = "pocketmine.player.logOut"; public const POCKETMINE_PLAYER_LOGOUT = "pocketmine.player.logOut";
public const POCKETMINE_PLUGIN_ALIASERROR = "pocketmine.plugin.aliasError"; public const POCKETMINE_PLUGIN_ALIASERROR = "pocketmine.plugin.aliasError";
public const POCKETMINE_PLUGIN_AMBIGUOUSMINAPI = "pocketmine.plugin.ambiguousMinAPI"; 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_CIRCULARDEPENDENCY = "pocketmine.plugin.circularDependency";
public const POCKETMINE_PLUGIN_COMMANDERROR = "pocketmine.plugin.commandError"; public const POCKETMINE_PLUGIN_COMMANDERROR = "pocketmine.plugin.commandError";
public const POCKETMINE_PLUGIN_DEPRECATEDEVENT = "pocketmine.plugin.deprecatedEvent"; public const POCKETMINE_PLUGIN_DEPRECATEDEVENT = "pocketmine.plugin.deprecatedEvent";
public const POCKETMINE_PLUGIN_DISABLE = "pocketmine.plugin.disable"; 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_DUPLICATEERROR = "pocketmine.plugin.duplicateError";
public const POCKETMINE_PLUGIN_EMPTYEXTENSIONVERSIONCONSTRAINT = "pocketmine.plugin.emptyExtensionVersionConstraint";
public const POCKETMINE_PLUGIN_ENABLE = "pocketmine.plugin.enable"; 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_GENERICLOADERROR = "pocketmine.plugin.genericLoadError";
public const POCKETMINE_PLUGIN_INCOMPATIBLEAPI = "pocketmine.plugin.incompatibleAPI"; 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_INCOMPATIBLEOS = "pocketmine.plugin.incompatibleOS";
public const POCKETMINE_PLUGIN_INCOMPATIBLEPHPVERSION = "pocketmine.plugin.incompatiblePhpVersion"; public const POCKETMINE_PLUGIN_INCOMPATIBLEPHPVERSION = "pocketmine.plugin.incompatiblePhpVersion";
public const POCKETMINE_PLUGIN_INCOMPATIBLEPROTOCOL = "pocketmine.plugin.incompatibleProtocol"; public const POCKETMINE_PLUGIN_INCOMPATIBLEPROTOCOL = "pocketmine.plugin.incompatibleProtocol";
public const POCKETMINE_PLUGIN_INVALIDAPI = "pocketmine.plugin.invalidAPI"; 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_INVALIDMANIFEST = "pocketmine.plugin.invalidManifest";
public const POCKETMINE_PLUGIN_LOAD = "pocketmine.plugin.load"; public const POCKETMINE_PLUGIN_LOAD = "pocketmine.plugin.load";
public const POCKETMINE_PLUGIN_LOADERROR = "pocketmine.plugin.loadError"; 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_RESTRICTEDNAME = "pocketmine.plugin.restrictedName";
public const POCKETMINE_PLUGIN_SPACESDISCOURAGED = "pocketmine.plugin.spacesDiscouraged"; public const POCKETMINE_PLUGIN_SPACESDISCOURAGED = "pocketmine.plugin.spacesDiscouraged";
public const POCKETMINE_PLUGIN_UNKNOWNDEPENDENCY = "pocketmine.plugin.unknownDependency"; public const POCKETMINE_PLUGIN_UNKNOWNDEPENDENCY = "pocketmine.plugin.unknownDependency";

View File

@ -178,11 +178,15 @@ class PluginManager{
if($loader->canLoadPlugin($path)){ if($loader->canLoadPlugin($path)){
$description = $loader->getPluginDescription($path); $description = $loader->getPluginDescription($path);
if($description instanceof PluginDescription){ if($description instanceof PluginDescription){
$language = $this->server->getLanguage();
$this->server->getLogger()->info($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_plugin_load($description->getFullName()))); $this->server->getLogger()->info($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_plugin_load($description->getFullName())));
$dataFolder = $this->getDataDirectory($path, $description->getName()); $dataFolder = $this->getDataDirectory($path, $description->getName());
if(file_exists($dataFolder) and !is_dir($dataFolder)){ 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; return null;
} }
if(!file_exists($dataFolder)){ if(!file_exists($dataFolder)){
@ -194,11 +198,17 @@ class PluginManager{
$mainClass = $description->getMain(); $mainClass = $description->getMain();
if(!class_exists($mainClass, true)){ 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; return null;
} }
if(!is_a($mainClass, Plugin::class, true)){ 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; return null;
} }
@ -316,7 +326,7 @@ class PluginManager{
if($this->graylist !== null and !$this->graylist->isAllowed($name)){ if($this->graylist !== null and !$this->graylist->isAllowed($name)){
$this->server->getLogger()->notice($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_plugin_loadError( $this->server->getLogger()->notice($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_plugin_loadError(
$name, $name,
"Disallowed by graylist" $this->graylist->isWhitelist() ? KnownTranslationFactory::pocketmine_plugin_disallowedByWhitelist() : KnownTranslationFactory::pocketmine_plugin_disallowedByBlacklist()
))); )));
continue; continue;
} }
@ -381,8 +391,6 @@ class PluginManager{
$loadedThisLoop++; $loadedThisLoop++;
if(($plugin = $this->loadPlugin($file, $loaders)) instanceof Plugin){ if(($plugin = $this->loadPlugin($file, $loaders)) instanceof Plugin){
$loadedPlugins[$name] = $plugin; $loadedPlugins[$name] = $plugin;
}else{
$this->server->getLogger()->critical($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_plugin_genericLoadError($name)));
} }
} }
} }