From 01526546b198212162eb7a97c22012171680b1a6 Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Mon, 7 Sep 2015 13:00:54 +0800 Subject: [PATCH] Fix: TaskWindow causes NullPointerException. --- .../org/jackhuang/hellominecraft/launcher/Launcher.java | 5 ++++- .../java/org/jackhuang/hellominecraft/tasks/TaskWindow.java | 4 ++++ .../main/java/org/jackhuang/hellominecraft/svrmgr/Main.java | 6 ++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Launcher.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Launcher.java index 82b671fa4..5675fb8b6 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Launcher.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Launcher.java @@ -117,6 +117,7 @@ public final class Launcher { println("*** Launching Game ***"); + int flag = 0; try { minecraftMain.invoke(null, new Object[]{cmds}); } catch (Throwable throwable) { @@ -130,9 +131,11 @@ public final class Launcher { LogWindow.instance.log(trace); LogWindow.instance.setExit(TrueFunction.instance); LogWindow.instance.setVisible(true); + + flag = 1; } println("*** Game Exited ***"); - System.exit(1); + System.exit(flag); } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java index a88f082f0..c5466e60d 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java @@ -224,6 +224,7 @@ public class TaskWindow extends javax.swing.JDialog task.setProgressProviderListener(this); SwingUtilities.invokeLater(() -> { + if(taskList == null) return; tasks.add(task); progresses.add(0); SwingUtils.appendLast(lstDownload, task.getInfo(), "0%"); @@ -238,6 +239,7 @@ public class TaskWindow extends javax.swing.JDialog @Override public void onDone(Task task) { SwingUtilities.invokeLater(() -> { + if(taskList == null) return; pgsTotal.setMaximum(taskList.taskCount()); pgsTotal.setValue(pgsTotal.getValue() + 1); int idx = tasks.indexOf(task); @@ -251,6 +253,7 @@ public class TaskWindow extends javax.swing.JDialog @Override public void onFailed(Task task) { SwingUtilities.invokeLater(() -> { + if(taskList == null) return; failReasons.add(task.getInfo() + ": " + (null == task.getFailReason() ? "No exception" : task.getFailReason().getLocalizedMessage())); pgsTotal.setMaximum(taskList.taskCount()); pgsTotal.setValue(pgsTotal.getValue() + 1); @@ -270,6 +273,7 @@ public class TaskWindow extends javax.swing.JDialog @Override public void setStatus(Task task, String sta) { SwingUtilities.invokeLater(() -> { + if(taskList == null) return; int idx = tasks.indexOf(task); if (idx == -1) return; SwingUtils.setValueAt(lstDownload, task.getInfo() + ": " + sta, idx, 0); diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/Main.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/Main.java index c26281281..f4951bb84 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/Main.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/Main.java @@ -20,6 +20,7 @@ import java.awt.Font; import java.io.PrintWriter; import java.io.StringWriter; import java.text.ParseException; +import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import org.jackhuang.hellominecraft.HMCLog; @@ -29,6 +30,7 @@ import org.jackhuang.hellominecraft.utils.UpdateChecker; import org.jackhuang.hellominecraft.svrmgr.views.MainWindow; import org.jackhuang.hellominecraft.utils.VersionNumber; import org.jackhuang.hellominecraft.lookandfeel.HelloMinecraftLookAndFeel; +import org.jackhuang.hellominecraft.utils.system.MessageBox; /** * @@ -53,8 +55,8 @@ public class Main { } catch (ParseException | UnsupportedLookAndFeelException ex) { HMCLog.warn("Failed to set look and feel", ex); } - new UpdateChecker(new VersionNumber(firstVer, secondVer, thirdVer), "hmcsm", SettingsManager.settings.checkUpdate, () -> { - SettingsManager.settings.checkUpdate = false; + new UpdateChecker(new VersionNumber(firstVer, secondVer, thirdVer), "hmcsm", () -> { + SwingUtilities.invokeLater(() -> MessageBox.Show("发现更新!")); }).start(); new MainWindow().setVisible(true); } catch (Throwable t) {