getPlugin(); $plugin->getServer()->getPluginManager()->registerEvent( ParentEvent::class, function(ParentEvent $event) : void{ $this->callOrder[] = ParentEvent::class; }, EventPriority::NORMAL, $plugin ); $plugin->getServer()->getPluginManager()->registerEvent( ChildEvent::class, function(ChildEvent $event) : void{ $this->callOrder[] = ChildEvent::class; }, EventPriority::NORMAL, $plugin ); $plugin->getServer()->getPluginManager()->registerEvent( GrandchildEvent::class, function(GrandchildEvent $event) : void{ $this->callOrder[] = GrandchildEvent::class; }, EventPriority::NORMAL, $plugin ); $event = new GrandchildEvent(); $event->call(); if($this->callOrder === self::EXPECTED_ORDER){ $this->setResult(Test::RESULT_OK); }else{ $plugin->getLogger()->error("Expected order: " . implode(", ", self::EXPECTED_ORDER) . ", got: " . implode(", ", $this->callOrder)); $this->setResult(Test::RESULT_FAILED); } } }