From 212c94ce98f9d20415e6f55aa64705f4ea7253d7 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 11 May 2022 13:07:45 +0100 Subject: [PATCH] PluginManager: Log an error message when a plugin disables itself during enabling --- composer.json | 2 +- composer.lock | 14 +++++++------- src/lang/KnownTranslationFactory.php | 11 +++++++++++ src/lang/KnownTranslationKeys.php | 2 ++ src/plugin/PluginManager.php | 7 +++++++ 5 files changed, 28 insertions(+), 8 deletions(-) diff --git a/composer.json b/composer.json index 1f747eabf..4079ecd1e 100644 --- a/composer.json +++ b/composer.json @@ -41,7 +41,7 @@ "pocketmine/classloader": "^0.2.0", "pocketmine/color": "^0.2.0", "pocketmine/errorhandler": "^0.6.0", - "pocketmine/locale-data": "~2.6.0", + "pocketmine/locale-data": "~2.7.0", "pocketmine/log": "^0.4.0", "pocketmine/log-pthreads": "^0.4.0", "pocketmine/math": "^0.4.0", diff --git a/composer.lock b/composer.lock index 6f4d1f27d..0638ac6a0 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "1987b70747167a4b099962f485f46bf4", + "content-hash": "c36ed8a47610c2fc26dfab18085c431c", "packages": [ { "name": "adhocore/json-comment", @@ -536,16 +536,16 @@ }, { "name": "pocketmine/locale-data", - "version": "2.6.2", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/pmmp/Language.git", - "reference": "eae9303493884edcc5321b50002a5dc956a36a23" + "reference": "f00216c4709d2c5a2af478498315206b336b8e2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/Language/zipball/eae9303493884edcc5321b50002a5dc956a36a23", - "reference": "eae9303493884edcc5321b50002a5dc956a36a23", + "url": "https://api.github.com/repos/pmmp/Language/zipball/f00216c4709d2c5a2af478498315206b336b8e2e", + "reference": "f00216c4709d2c5a2af478498315206b336b8e2e", "shasum": "" }, "type": "library", @@ -553,9 +553,9 @@ "description": "Language resources used by PocketMine-MP", "support": { "issues": "https://github.com/pmmp/Language/issues", - "source": "https://github.com/pmmp/Language/tree/2.6.2" + "source": "https://github.com/pmmp/Language/tree/2.7.0" }, - "time": "2022-04-10T20:44:40+00:00" + "time": "2022-05-10T13:29:27+00:00" }, { "name": "pocketmine/log", diff --git a/src/lang/KnownTranslationFactory.php b/src/lang/KnownTranslationFactory.php index 7bff33d9b..6458215ba 100644 --- a/src/lang/KnownTranslationFactory.php +++ b/src/lang/KnownTranslationFactory.php @@ -1759,6 +1759,13 @@ final class KnownTranslationFactory{ ]); } + public static function pocketmine_plugin_enableError(Translatable|string $param0, Translatable|string $param1) : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_ENABLEERROR, [ + 0 => $param0, + 1 => $param1, + ]); + } + public static function pocketmine_plugin_extensionNotLoaded(Translatable|string $extensionName) : Translatable{ return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_EXTENSIONNOTLOADED, [ "extensionName" => $extensionName, @@ -1859,6 +1866,10 @@ final class KnownTranslationFactory{ ]); } + public static function pocketmine_plugin_suicide() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_SUICIDE, []); + } + public static function pocketmine_plugin_unknownDependency(Translatable|string $param0) : Translatable{ return new Translatable(KnownTranslationKeys::POCKETMINE_PLUGIN_UNKNOWNDEPENDENCY, [ 0 => $param0, diff --git a/src/lang/KnownTranslationKeys.php b/src/lang/KnownTranslationKeys.php index ff3c448fe..9201f4b6f 100644 --- a/src/lang/KnownTranslationKeys.php +++ b/src/lang/KnownTranslationKeys.php @@ -368,6 +368,7 @@ final class KnownTranslationKeys{ public const POCKETMINE_PLUGIN_DUPLICATEPERMISSIONERROR = "pocketmine.plugin.duplicatePermissionError"; public const POCKETMINE_PLUGIN_EMPTYEXTENSIONVERSIONCONSTRAINT = "pocketmine.plugin.emptyExtensionVersionConstraint"; public const POCKETMINE_PLUGIN_ENABLE = "pocketmine.plugin.enable"; + public const POCKETMINE_PLUGIN_ENABLEERROR = "pocketmine.plugin.enableError"; public const POCKETMINE_PLUGIN_EXTENSIONNOTLOADED = "pocketmine.plugin.extensionNotLoaded"; public const POCKETMINE_PLUGIN_GENERICLOADERROR = "pocketmine.plugin.genericLoadError"; public const POCKETMINE_PLUGIN_INCOMPATIBLEAPI = "pocketmine.plugin.incompatibleAPI"; @@ -385,6 +386,7 @@ final class KnownTranslationKeys{ 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_SUICIDE = "pocketmine.plugin.suicide"; public const POCKETMINE_PLUGIN_UNKNOWNDEPENDENCY = "pocketmine.plugin.unknownDependency"; public const POCKETMINE_SAVE_START = "pocketmine.save.start"; public const POCKETMINE_SAVE_SUCCESS = "pocketmine.save.success"; diff --git a/src/plugin/PluginManager.php b/src/plugin/PluginManager.php index 5cb4e4637..47f3a257b 100644 --- a/src/plugin/PluginManager.php +++ b/src/plugin/PluginManager.php @@ -447,6 +447,13 @@ class PluginManager{ $this->enabledPlugins[$plugin->getDescription()->getName()] = $plugin; (new PluginEnableEvent($plugin))->call(); + }else{ + $this->server->getLogger()->critical($this->server->getLanguage()->translate( + KnownTranslationFactory::pocketmine_plugin_enableError( + $plugin->getName(), + KnownTranslationFactory::pocketmine_plugin_suicide() + ) + )); } } }