From 71704228a9e95b3a0d6c34f8c531c6024bca2095 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 19 Dec 2016 17:15:45 +0000 Subject: [PATCH 1/2] Added support for API alpha/beta/whatever suffixes --- src/pocketmine/plugin/PluginManager.php | 26 +++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/pocketmine/plugin/PluginManager.php b/src/pocketmine/plugin/PluginManager.php index a878dadf7..093afc69e 100644 --- a/src/pocketmine/plugin/PluginManager.php +++ b/src/pocketmine/plugin/PluginManager.php @@ -214,16 +214,22 @@ class PluginManager{ $compatible = false; //Check multiple dependencies foreach($description->getCompatibleApis() as $version){ - //Format: majorVersion.minorVersion.patch - $version = array_map("intval", explode(".", $version)); - $apiVersion = array_map("intval", explode(".", $this->server->getApiVersion())); - //Completely different API version - if($version[0] !== $apiVersion[0]){ - continue; - } - //If the plugin requires new API features, being backwards compatible - if($version[1] > $apiVersion[1]){ - continue; + //Format: majorVersion.minorVersion.patch (3.0.0) + // or: majorVersion.minorVersion.patch-devBuild (3.0.0-alpha1) + if($version !== $this->server->getApiVersion()){ + $pluginApi = array_pad(explode("-", $version), 2, ""); //0 = version, 1 = suffix (optional) + $serverApi = array_pad(explode("-", $this->server->getApiVersion()), 2, ""); + + $pluginNumbers = array_map("intval", explode(".", $pluginApi[0])); + $serverNumbers = array_map("intval", explode(".", $serverApi[0])); + + if($pluginNumbers[0] !== $serverNumbers[0]){ //Completely different API version + continue; + }elseif($pluginNumbers[1] > $serverNumbers[1]){ //If the plugin requires new API features, being backwards compatible + continue; + }elseif($pluginApi[1] !== $serverApi[1]){ //Different release phase (alpha vs. beta) or phase build (alpha.1 vs alpha.2) + continue; + } } $compatible = true; From 3433a931c1568a6b5b25faf7e1b23fcc444c3ad4 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 19 Dec 2016 19:30:11 +0000 Subject: [PATCH 2/2] Fix load order (no tolerance for mismatches with suffixes) --- src/pocketmine/plugin/PluginManager.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/pocketmine/plugin/PluginManager.php b/src/pocketmine/plugin/PluginManager.php index 093afc69e..9736e2069 100644 --- a/src/pocketmine/plugin/PluginManager.php +++ b/src/pocketmine/plugin/PluginManager.php @@ -220,14 +220,18 @@ class PluginManager{ $pluginApi = array_pad(explode("-", $version), 2, ""); //0 = version, 1 = suffix (optional) $serverApi = array_pad(explode("-", $this->server->getApiVersion()), 2, ""); + if($pluginApi[1] !== $serverApi[1]){ //Different release phase (alpha vs. beta) or phase build (alpha.1 vs alpha.2) + continue; + } + $pluginNumbers = array_map("intval", explode(".", $pluginApi[0])); $serverNumbers = array_map("intval", explode(".", $serverApi[0])); if($pluginNumbers[0] !== $serverNumbers[0]){ //Completely different API version continue; - }elseif($pluginNumbers[1] > $serverNumbers[1]){ //If the plugin requires new API features, being backwards compatible - continue; - }elseif($pluginApi[1] !== $serverApi[1]){ //Different release phase (alpha vs. beta) or phase build (alpha.1 vs alpha.2) + } + + if($pluginNumbers[1] > $serverNumbers[1]){ //If the plugin requires new API features, being backwards compatible continue; } }