From 3ba75d2de32ca7cd7418953f8d55ba053edefe22 Mon Sep 17 00:00:00 2001 From: huangyuhui Date: Tue, 1 Mar 2016 12:37:12 +0800 Subject: [PATCH] Fixed #39 --- HMCL/build.gradle | 2 +- .../core/asset/MinecraftAssetService.java | 24 ++++++++++++++++++- .../core/service/IMinecraftAssetService.java | 2 ++ .../launcher/util/CrashReporter.java | 1 + .../hellominecraft/util/tasks/TaskList.java | 2 +- .../util/tasks/download/FileDownloadTask.java | 5 ++-- 6 files changed, 30 insertions(+), 6 deletions(-) diff --git a/HMCL/build.gradle b/HMCL/build.gradle index e9c37f477..407d50f75 100755 --- a/HMCL/build.gradle +++ b/HMCL/build.gradle @@ -34,7 +34,7 @@ if (buildnumber == null) def versionroot = System.getenv("VERSION_ROOT") if (versionroot == null) - versionroot = "2.4.0" + versionroot = "2.4.1" String mavenGroupId = 'HMCL' String mavenVersion = versionroot + '.' + buildnumber 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 6d4525cdf..ff6c27da1 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 @@ -76,11 +76,33 @@ public class MinecraftAssetService extends IMinecraftAssetService { MinecraftVersion mv = service.version().getVersionById(id); if (mv == null) return false; - return downloadMinecraftAssetsIndex(mv.getAssetsIndex()); + return downloadMinecraftAssetsIndexAsync(mv.getAssetsIndex()); } @Override public boolean downloadMinecraftAssetsIndex(AssetIndexDownloadInfo assets) { + File assetsLocation = getAssets(); + if (!assetsLocation.exists() && !assetsLocation.mkdirs()) + HMCLog.warn("Failed to make directories: " + assetsLocation); + File assetsIndex = new File(assetsLocation, "indexes/" + assets.getId() + ".json"); + File renamed = null; + if (assetsIndex.exists()) { + renamed = new File(assetsLocation, "indexes/" + assets.getId() + "-renamed.json"); + if (assetsIndex.renameTo(renamed)) + HMCLog.warn("Failed to rename " + assetsIndex + " to " + renamed); + } + if (new FileDownloadTask(assets.getUrl(service.getDownloadType()), IOUtils.tryGetCanonicalFile(assetsIndex), assets.sha1).setTag(assets.getId() + ".json").run()) { + if (renamed != null && !renamed.delete()) + HMCLog.warn("Failed to delete " + renamed + ", maybe you should do it."); + return true; + } + if (renamed != null && !renamed.renameTo(assetsIndex)) + HMCLog.warn("Failed to rename " + renamed + " to " + assetsIndex); + return false; + } + + @Override + public boolean downloadMinecraftAssetsIndexAsync(AssetIndexDownloadInfo assets) { File assetsLocation = getAssets(); if (!assetsLocation.exists() && !assetsLocation.mkdirs()) HMCLog.warn("Failed to make directories: " + assetsLocation); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/service/IMinecraftAssetService.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/service/IMinecraftAssetService.java index 5a7326f6b..508f4f36c 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/service/IMinecraftAssetService.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/service/IMinecraftAssetService.java @@ -45,6 +45,8 @@ public abstract class IMinecraftAssetService extends IMinecraftBasicService { */ public abstract boolean refreshAssetsIndex(String a); + public abstract boolean downloadMinecraftAssetsIndexAsync(AssetIndexDownloadInfo assetsId); + public abstract boolean downloadMinecraftAssetsIndex(AssetIndexDownloadInfo assetsId); public abstract File getAssetObject(String assetVersion, String name) throws IOException; 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 0d06db633..763a8ea78 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 @@ -49,6 +49,7 @@ public class CrashReporter implements Thread.UncaughtExceptionHandler { put("AWTError", ""); put("JFileChooser", "Has your operating system been installed completely or is a ghost system? "); put("JceSecurityManager", "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"); put("java.awt.HeadlessException", "crash.headless"); diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/util/tasks/TaskList.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/util/tasks/TaskList.java index f982d665f..b078ff7df 100755 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/util/tasks/TaskList.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/util/tasks/TaskList.java @@ -176,7 +176,7 @@ public class TaskList extends Thread { while (!in.isEmpty()) synchronized (in) { Invoker it = in.iterator().next(); - if (!it.task.abort()) + if (!it.task.abort() && futures.get(it) != null) futures.get(it).cancel(true); in.remove(it); } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/util/tasks/download/FileDownloadTask.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/util/tasks/download/FileDownloadTask.java index e54186e19..8664d6ec4 100755 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/util/tasks/download/FileDownloadTask.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/util/tasks/download/FileDownloadTask.java @@ -118,8 +118,7 @@ public class FileDownloadTask extends Task implements PreviousResult, Prev this.url = IOUtils.parseURL(p.getResult()); for (int repeat = 0; repeat < 6; repeat++) { - if (repeat > 0) { - HMCLog.warn("Failed to download, repeat: " + repeat); + if (repeat > 0) if (failedCallbackReturnsNewURL != null) { URL tmp = IOUtils.parseURL(failedCallbackReturnsNewURL.apply(repeat)); if (tmp != null) { @@ -127,7 +126,7 @@ public class FileDownloadTask extends Task implements PreviousResult, Prev HMCLog.warn("Switch to: " + url); } } - } + HMCLog.log("Downloading: " + url + ", to: " + filePath); if (!shouldContinue) break; try {