From 8d01340d22936c0c1f2dd84168dcec72fd9d896d Mon Sep 17 00:00:00 2001 From: beu Date: Sun, 22 Jun 2025 18:57:33 +0200 Subject: [PATCH] fix missing management of loading and unloading plugins --- .../MatchManagerECircuitMania.php | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/MatchManagerSuite/MatchManagerECircuitMania.php b/MatchManagerSuite/MatchManagerECircuitMania.php index 23c2135..28da3c8 100644 --- a/MatchManagerSuite/MatchManagerECircuitMania.php +++ b/MatchManagerSuite/MatchManagerECircuitMania.php @@ -14,6 +14,7 @@ use ManiaControl\Callbacks\Structures\TrackMania\OnWayPointEventStructure; use ManiaControl\Callbacks\TimerListener; use ManiaControl\Manialinks\ManialinkPageAnswerListener; use ManiaControl\Players\Player; +use ManiaControl\Plugins\PluginManager; use ManiaControl\Plugins\PluginMenu; if (!class_exists('MatchManagerSuite\MatchManagerCore')) { @@ -114,6 +115,8 @@ class MatchManagerECircuitMania implements CallbackListener, ManialinkPageAnswer return; } + $this->maniaControl->getCallbackManager()->registerCallbackListener(PluginManager::CB_PLUGIN_LOADED, $this, 'handlePluginLoaded'); + $this->maniaControl->getCallbackManager()->registerCallbackListener(PluginManager::CB_PLUGIN_UNLOADED, $this, 'handlePluginUnloaded'); $this->maniaControl->getCallbackManager()->registerScriptCallbackListener(self::CB_STARTMAP, $this, 'handleStartMap'); $this->maniaControl->getCallbackManager()->registerCallbackListener(Callbacks::MP_STARTROUNDSTART, $this, 'handleStartRound'); $this->maniaControl->getCallbackManager()->registerCallbackListener(Callbacks::TM_ONWAYPOINT, $this, 'handleOnWaypoint'); @@ -161,6 +164,22 @@ class MatchManagerECircuitMania implements CallbackListener, ManialinkPageAnswer } } + /** + * handlePluginUnloaded + * + * @param string $pluginClass + * @param Plugin $plugin + * @return void + */ + public function handlePluginUnloaded(string $pluginClass, Plugin $plugin) { + if ($pluginClass == self::MATCHMANAGERCORE_PLUGIN) { + $this->maniaControl->getChat()->sendErrorToAdmins(self::PLUGIN_NAME . " disabled because MatchManager Core is now disabled"); + $this->log(self::PLUGIN_NAME . " disabled because MatchManager Core is now disabled"); + $this->maniaControl->getPluginManager()->deactivatePlugin((get_class($this))); + } + } + + /** * Add items in AdminUI plugin */ @@ -353,5 +372,11 @@ class MatchManagerECircuitMania implements CallbackListener, ManialinkPageAnswer /** * Unload the plugin and its Resources */ - public function unload() {} + public function unload() { + /** @var \MatchManagerSuite\MatchManagerAdminUI|null */ + $adminUIPlugin = $this->maniaControl->getPluginManager()->getPlugin(self::MATCHMANAGERADMINUI_PLUGIN); + if ($adminUIPlugin !== null) { + $adminUIPlugin->removeMenuItem(self::ML_ACTION_OPENSETTINGS); + } + } } \ No newline at end of file