PluginManager: return the created RegisteredListener from registerEvent()

this allows the handler to be later unregistered when used with a plain closure instead of a magic `Listener`.
This commit is contained in:
Dylan K. Taylor 2022-03-22 16:20:37 +00:00
parent ab93135b84
commit 9963fcf849
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D

View File

@ -576,7 +576,7 @@ class PluginManager{
*
* @throws \ReflectionException
*/
public function registerEvent(string $event, \Closure $handler, int $priority, Plugin $plugin, bool $handleCancelled = false) : void{
public function registerEvent(string $event, \Closure $handler, int $priority, Plugin $plugin, bool $handleCancelled = false) : RegisteredListener{
if(!is_subclass_of($event, Event::class)){
throw new PluginException($event . " is not an Event");
}
@ -589,6 +589,8 @@ class PluginManager{
$timings = new TimingsHandler("Plugin: " . $plugin->getDescription()->getFullName() . " Event: " . $handlerName . "(" . (new \ReflectionClass($event))->getShortName() . ")");
HandlerListManager::global()->getListFor($event)->register(new RegisteredListener($handler, $priority, $plugin, $handleCancelled, $timings));
$registeredListener = new RegisteredListener($handler, $priority, $plugin, $handleCancelled, $timings);
HandlerListManager::global()->getListFor($event)->register($registeredListener);
return $registeredListener;
}
}