diff --git a/src/pocketmine/plugin/PluginManager.php b/src/pocketmine/plugin/PluginManager.php index e7861c8dc..0a52f58d9 100644 --- a/src/pocketmine/plugin/PluginManager.php +++ b/src/pocketmine/plugin/PluginManager.php @@ -703,7 +703,15 @@ class PluginManager{ $handlerClosure = $method->getClosure($listener); try{ - $eventClass = $parameters[0]->getClass(); + $paramType = $parameters[0]->getType(); + //isBuiltin() returns false for builtin classes .................. + if($paramType instanceof \ReflectionNamedType && !$paramType->isBuiltin()){ + /** @phpstan-var class-string $paramClass */ + $paramClass = $paramType->getName(); + $eventClass = new \ReflectionClass($paramClass); + }else{ + $eventClass = null; + } }catch(\ReflectionException $e){ //class doesn't exist if(isset($tags["softDepend"]) && !isset($this->plugins[$tags["softDepend"]])){ $this->server->getLogger()->debug("Not registering @softDepend listener " . Utils::getNiceClosureName($handlerClosure) . "() because plugin \"" . $tags["softDepend"] . "\" not found");