From f6d5dd5a82470841f7d8b06dd50c8cf8fd6f5ac2 Mon Sep 17 00:00:00 2001 From: huangyuhui Date: Tue, 15 Mar 2016 18:49:31 +0800 Subject: [PATCH] Fixed NullPointerException when a version not exists. --- .../launcher/core/asset/MinecraftAssetService.java | 3 ++- .../launcher/core/download/MinecraftDownloadService.java | 2 +- .../launcher/core/version/MinecraftLibrary.java | 7 ++++++- .../hellominecraft/launcher/util/CrashReporter.java | 2 +- .../jackhuang/hellominecraft/util/tasks/TaskWindow.java | 3 ++- 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/asset/MinecraftAssetService.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/asset/MinecraftAssetService.java index 6d0c29b65..a81f4ac21 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/asset/MinecraftAssetService.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/asset/MinecraftAssetService.java @@ -56,7 +56,8 @@ public class MinecraftAssetService extends IMinecraftAssetService { } public Task downloadAssets(final MinecraftVersion mv) { - Utils.requireNonNull(mv); + if (mv == null) + return null; return new TaskInfo("Download Assets") { Collection afters = new HashSet<>(); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/download/MinecraftDownloadService.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/download/MinecraftDownloadService.java index 802af8a09..e752c77ac 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/download/MinecraftDownloadService.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/download/MinecraftDownloadService.java @@ -55,7 +55,7 @@ public class MinecraftDownloadService extends IMinecraftDownloadService { return downloadLibraries; MinecraftVersion v = mv.resolve(service.version()); for (IMinecraftLibrary l : v.getLibraries()) - if (l != null && l.allow()) { + if (l != null && l.allow() && l.getDownloadInfo() != null) { File ff = l.getFilePath(service.baseDirectory()); if (!ff.exists()) { String libURL = l.getDownloadInfo().getUrl(service.getDownloadType()); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/version/MinecraftLibrary.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/version/MinecraftLibrary.java index 8eda0d255..91259565c 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/version/MinecraftLibrary.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/version/MinecraftLibrary.java @@ -89,6 +89,8 @@ public class MinecraftLibrary extends IMinecraftLibrary { public String formatName() { String[] s = name.split(":"); + if (s.length < 3) + return null; StringBuilder sb = new StringBuilder(s[0].replace('.', '/')).append('/').append(s[1]).append('/').append(s[2]).append('/').append(s[1]).append('-').append(s[2]); if (natives != null) sb.append('-').append(getNative()); @@ -120,8 +122,11 @@ public class MinecraftLibrary extends IMinecraftLibrary { downloads.artifact = info = new LibraryDownloadInfo(); else info = downloads.artifact; - if (StrUtils.isBlank(info.path)) + if (StrUtils.isBlank(info.path)) { info.path = formatName(); + if (info.path == null) + return null; + } info.forgeURL = this.url; return info; } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/util/CrashReporter.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/util/CrashReporter.java index 2b69f7805..3a3573b7e 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/util/CrashReporter.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/util/CrashReporter.java @@ -48,7 +48,7 @@ public class CrashReporter implements Thread.UncaughtExceptionHandler { put("MessageBox", ""); put("AWTError", ""); put("JFileChooser", "Has your operating system been installed completely or is a ghost system? "); - put("JceSecurity", "Has your operating system been installed completely or is a ghost system? "); + put("Jce", "Has your operating system been installed completely or is a ghost system? "); put("couldn't create component peer", "Fucking computer!"); put("sun.awt.shell.Win32ShellFolder2", "crash.user_fault"); put("UnsatisfiedLinkError", "crash.user_fault"); diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/util/tasks/TaskWindow.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/util/tasks/TaskWindow.java index 4309f569d..f783e5257 100755 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/util/tasks/TaskWindow.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/util/tasks/TaskWindow.java @@ -322,7 +322,8 @@ public class TaskWindow extends javax.swing.JDialog boolean flag; public TaskWindowFactory append(Task t) { - ll.add(t); + if (t != null) + ll.add(t); return this; }