From 20b0df4b57d95d27e9ffe8dccabbc6245162e7a5 Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Date: Thu, 10 Jul 2014 17:39:20 +0200 Subject: [PATCH] Added deprecation warning on plugin events --- src/pocketmine/plugin/PluginManager.php | 9 ++++++++- src/pocketmine/resources/pocketmine.yml | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/pocketmine/plugin/PluginManager.php b/src/pocketmine/plugin/PluginManager.php index e07942412..3d55c638f 100644 --- a/src/pocketmine/plugin/PluginManager.php +++ b/src/pocketmine/plugin/PluginManager.php @@ -666,9 +666,15 @@ class PluginManager{ $ignoreCancelled = true; } } + $parameters = $method->getParameters(); if(count($parameters) === 1 and $parameters[0]->getClass() instanceof \ReflectionClass and is_subclass_of($parameters[0]->getClass()->getName(), "pocketmine\\event\\Event")){ - $this->registerEvent($parameters[0]->getClass()->getName(), $listener, $priority, new MethodEventExecutor($method->getName()), $plugin, $ignoreCancelled); + $class = $parameters[0]->getClass()->getName(); + $reflection = new \ReflectionClass($class); + if(preg_match("/^[\t ]*\\* @deprecated[\t ]{1,}$/m", (string) $reflection->getDocComment(), $matches) > 0 and $this->server->getProperty("settings.deprecated-verbose", true)){ + $this->server->getLogger()->warning('"'.$plugin->getName().'" has registered a listener for '.$class.' on method "'.get_class($listener).'::'.$method.', but the event is Deprecated.'); + } + $this->registerEvent($class, $listener, $priority, new MethodEventExecutor($method->getName()), $plugin, $ignoreCancelled); } } } @@ -688,6 +694,7 @@ class PluginManager{ if(!is_subclass_of($event, "pocketmine\\event\\Event")){ throw new \Exception($event . " is not a valid Event"); } + if(!$plugin->isEnabled()){ throw new \Exception("Plugin attempted to register " . $event . " while not enabled"); } diff --git a/src/pocketmine/resources/pocketmine.yml b/src/pocketmine/resources/pocketmine.yml index 398c89016..a932e6269 100644 --- a/src/pocketmine/resources/pocketmine.yml +++ b/src/pocketmine/resources/pocketmine.yml @@ -6,6 +6,7 @@ settings: shutdown-message: "Server closed" plugin-profiling: false query-plugins: true + deprecated-verbose: true advanced-cache: false upnp-forwarding: false send-usage: true