From 9ba6cddde7178051c0e3c887cf1d46dac095eacb Mon Sep 17 00:00:00 2001 From: huangyuhui Date: Sun, 4 Mar 2018 19:09:11 +0800 Subject: [PATCH] Fix update --- HMCL/build.gradle | 2 +- .../main/java/org/jackhuang/hmcl/Launcher.java | 15 ++++++++------- .../java/org/jackhuang/hmcl/ui/Controllers.java | 1 + .../org/jackhuang/hmcl/util/IntVersionNumber.java | 13 ++++++++----- .../org/jackhuang/hmcl/util/VersionNumber.java | 12 +++++------- 5 files changed, 23 insertions(+), 20 deletions(-) diff --git a/HMCL/build.gradle b/HMCL/build.gradle index b162ec9f8..673386f29 100644 --- a/HMCL/build.gradle +++ b/HMCL/build.gradle @@ -18,7 +18,7 @@ if (buildnumber == null) def versionroot = System.getenv("VERSION_ROOT") if (versionroot == null) - versionroot = "3.0" + versionroot = "3.1" String mavenVersion = versionroot + '.' + buildnumber version = mavenVersion diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java b/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java index 058b33b4a..74911b03b 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java @@ -49,6 +49,14 @@ public final class Launcher extends Application { Controllers.initialize(primaryStage); primaryStage.setResizable(false); primaryStage.setScene(Controllers.getScene()); + + UPDATE_CHECKER.process(false) + .then(Task.of(Schedulers.javafx(), () -> { + if (UPDATE_CHECKER.isOutOfDate()) + Controllers.showUpdate(); + })) + .start(); + primaryStage.show(); } catch (Throwable e) { CRASH_REPORTER.uncaughtException(Thread.currentThread(), e); @@ -65,13 +73,6 @@ public final class Launcher extends Application { Logging.LOG.info("*** " + TITLE + " ***"); - UPDATE_CHECKER.process(false) - .then(Task.of(Schedulers.javafx(), () -> { - if (UPDATE_CHECKER.isOutOfDate()) - Controllers.showUpdate(); - })) - .start(); - launch(args); } catch (Throwable e) { // Fucking JavaFX will suppress the exception and will break our crash reporter. CRASH_REPORTER.uncaughtException(Thread.currentThread(), e); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java index 610753499..cbca99630 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java @@ -17,6 +17,7 @@ */ package org.jackhuang.hmcl.ui; +import com.jfoenix.concurrency.JFXUtilities; import com.jfoenix.controls.JFXDialog; import javafx.scene.Node; import javafx.scene.Scene; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/IntVersionNumber.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/IntVersionNumber.java index c96425e11..b2c5e966d 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/IntVersionNumber.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/IntVersionNumber.java @@ -43,11 +43,14 @@ public final class IntVersionNumber extends VersionNumber { if (!(o instanceof IntVersionNumber)) return 0; IntVersionNumber other = (IntVersionNumber) o; - int len = Math.min(this.version.size(), other.version.size()); - for (int i = 0; i < len; ++i) - if (!version.get(i).equals(other.version.get(i))) - return version.get(i).compareTo(other.version.get(i)); - return Integer.compare(this.version.size(), other.version.size()); + int len = Math.max(this.version.size(), other.version.size()); + for (int i = 0; i < len; ++i) { + int thisInt = Lang.get(this.version, i).orElse(0); + int otherInt = Lang.get(other.version, i).orElse(0); + if (thisInt != otherInt) + return Integer.compare(thisInt, otherInt); + } + return 0; } @Override diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/VersionNumber.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/VersionNumber.java index d9fefc1f3..a510439ab 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/VersionNumber.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/VersionNumber.java @@ -40,13 +40,11 @@ public abstract class VersionNumber implements Comparable { throw new IllegalArgumentException("The version " + version + " is malformed, only dots and digits are allowed."); String[] s = version.split("\\."); - int last = s.length - 1; - for (int i = s.length - 1; i >= 0; --i) - if (Integer.parseInt(s[i]) == 0) - last = i; - ArrayList versions = new ArrayList<>(last + 1); - for (int i = 0; i <= last; ++i) - versions.add(Integer.parseInt(s[i])); + ArrayList versions = new ArrayList<>(s.length); + for (String value : s) versions.add(Integer.parseInt(value)); + while (!versions.isEmpty() && versions.get(versions.size() - 1) == 0) + versions.remove(versions.size() - 1); + return new IntVersionNumber(Collections.unmodifiableList(versions)); }