فهرست منبع

Make Updater work with our versioning setup.

GJ 11 سال پیش
والد
کامیت
3bc029a0de
1فایلهای تغییر یافته به همراه34 افزوده شده و 15 حذف شده
  1. 34 15
      src/main/java/net/h31ix/updater/Updater.java

+ 34 - 15
src/main/java/net/h31ix/updater/Updater.java

@@ -437,30 +437,49 @@ public class Updater
         if(type != UpdateType.NO_VERSION_CHECK)
         if(type != UpdateType.NO_VERSION_CHECK)
         {
         {
             String version = plugin.getDescription().getVersion();
             String version = plugin.getDescription().getVersion();
+            title = title.substring(6);
 
 
-            String[] oldTokens = version.replaceAll("(?i)(-)(.+?)(-)", "-").split("[.]|-b");
-            String[] newTokens = title.replaceAll("(?i)(-)(.+?)(-)", "-").split("[.]|-b");
+            String[] oldTokens = version.split("-");
+            String[] newTokens = title.split("-");
 
 
-            for (int i = 0; i < 4; i++) {
-                Integer newVer = Integer.parseInt(newTokens[i]);
-                Integer oldVer;
+            int oldVersion = Integer.parseInt(oldTokens[0].replaceAll(".", ""));
+            int newVersion = Integer.parseInt(newTokens[0].replaceAll(".", ""));
 
 
-                try {
-                    oldVer = Integer.parseInt(oldTokens[i]);
-                }
-                catch (NumberFormatException e) {
-                    plugin.getLogger().warning("Could not get information about this mcMMO version; perhaps you are running a custom one?");
-                    result = UpdateResult.FAIL_NOVERSION;
-                    return false;
+            // Check versions
+            if (oldVersion < newVersion) {
+                return true;
+            }
+
+            // Check release vs. beta & dev
+            if (newTokens.length == 0 && oldTokens.length == 2 && oldVersion == newVersion) {
+                return true;
+            }
+
+            // Check beta vs. dev
+            if (version.contains("dev") && title.contains("beta")) {
+                if (Integer.parseInt(oldTokens[1].substring(3)) < Integer.parseInt(newTokens[1].substring(4))) {
+                    return true;
                 }
                 }
 
 
-                if (oldVer < newVer) {
+                result = UpdateResult.NO_UPDATE;
+                return false;
+            }
+
+            // Check beta vs. beta
+            if (version.contains("beta") && title.contains("beta")) {
+                if (Integer.parseInt(oldTokens[1].substring(4)) < Integer.parseInt(newTokens[1].substring(4))) {
                     return true;
                     return true;
                 }
                 }
+
+                result = UpdateResult.NO_UPDATE;
+                return false;
             }
             }
 
 
-            result = Updater.UpdateResult.NO_UPDATE;
-            return false;
+            if (oldTokens.length == 2 && !version.contains("beta") && !version.contains("dev")) {
+                plugin.getLogger().warning("Could not get information about this mcMMO version; perhaps you are running a custom one?");
+                result = UpdateResult.FAIL_NOVERSION;
+                return false;
+            }
         }
         }
 
 
         return true;
         return true;