From 2b84cb7be409160c38aa63e49f7b35b0b491dc91 Mon Sep 17 00:00:00 2001 From: Covered123 <58715544+JavierLeon9966@users.noreply.github.com> Date: Fri, 20 May 2022 13:01:34 -0300 Subject: [PATCH] DisablePluginException now can be used to disable plugins (#4780) closes #2671 --- src/plugin/DisablePluginException.php | 28 +++++++++++++++++++++++++++ src/plugin/PluginManager.php | 7 ++++++- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/plugin/DisablePluginException.php diff --git a/src/plugin/DisablePluginException.php b/src/plugin/DisablePluginException.php new file mode 100644 index 000000000..3c24e84b6 --- /dev/null +++ b/src/plugin/DisablePluginException.php @@ -0,0 +1,28 @@ +server->getLogger()->info($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_plugin_enable($plugin->getDescription()->getFullName()))); $plugin->getScheduler()->setEnabled(true); - $plugin->onEnableStateChange(true); + try{ + $plugin->onEnableStateChange(true); + }catch(DisablePluginException){ + $this->disablePlugin($plugin); + } + if($plugin->isEnabled()){ //the plugin may have disabled itself during onEnable() $this->enabledPlugins[$plugin->getDescription()->getName()] = $plugin;