From 266c686a3a2f783efc529544d19f65d335a86ac5 Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Mon, 4 Mar 2019 11:39:30 +0800 Subject: [PATCH] Fix forge 1.13 installation --- HMCL/build.gradle | 2 +- HMCL/src/main/resources/assets/lang/I18N.properties | 2 +- .../main/resources/assets/lang/I18N_zh.properties | 2 +- .../main/resources/assets/lang/I18N_zh_CN.properties | 2 +- .../hmcl/download/forge/ForgeInstallTask.java | 3 ++- .../hmcl/download/forge/ForgeNewInstallProfile.java | 12 +++++++++++- .../hmcl/download/forge/ForgeNewInstallTask.java | 8 ++++++++ .../hmcl/download/game/GameAssetDownloadTask.java | 1 + .../hmcl/download/game/LibraryDownloadTask.java | 4 ++-- .../org/jackhuang/hmcl/mod/CurseCompletionTask.java | 2 +- 10 files changed, 29 insertions(+), 9 deletions(-) diff --git a/HMCL/build.gradle b/HMCL/build.gradle index 07b47b545..afa896d7c 100644 --- a/HMCL/build.gradle +++ b/HMCL/build.gradle @@ -112,7 +112,7 @@ def createExecutable(String suffix, String header) { processResources { ext.convertToBSS = { String resource -> - exclude resource + // exclude resource doFirst { def cssFile = new File(this.projectDir, "src/main/resources/" + resource) def bssFile = new File(this.projectDir, "build/compiled-resources/" + resource[0..-4] + "bss") diff --git a/HMCL/src/main/resources/assets/lang/I18N.properties b/HMCL/src/main/resources/assets/lang/I18N.properties index 69c7b3d76..be989d1c2 100644 --- a/HMCL/src/main/resources/assets/lang/I18N.properties +++ b/HMCL/src/main/resources/assets/lang/I18N.properties @@ -95,7 +95,7 @@ download.failed=Failed to download download.failed.empty=No candidates. Click here to return. download.failed.refresh=Unable to load version list. Click here to retry. download.provider.bmclapi=BMCLAPI (bangbang93, https://bmclapi2.bangbang93.com/) -download.provider.mojang=Mojang +download.provider.mojang=Mojang (Forge and OptiFine installation being downloaded from BMCLAPI) extension.bat=Windows Bat file extension.mod=Mod file diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh.properties b/HMCL/src/main/resources/assets/lang/I18N_zh.properties index a60b08d16..53364130a 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh.properties @@ -94,7 +94,7 @@ download.failed=下載失敗 download.failed.empty=沒有可供安裝的版本,點擊此處返回。 download.failed.refresh=載入版本列表失敗,點擊此處重試。 download.provider.bmclapi=BMCLAPI(bangbang93,https://bmclapi2.bangbang93.com/) -download.provider.mojang=官方伺服器(Mojang) +download.provider.mojang=官方伺服器(Forge 和 OptiFine 自動安裝的下載來源是 BMCLAPI) extension.bat=Windows 腳本 extension.mod=模組檔案 diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties index d743405e7..9d3c37abc 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties @@ -94,7 +94,7 @@ download.failed=下载失败 download.failed.empty=没有可供安装的版本,点击此处返回。 download.failed.refresh=加载版本列表失败,点击此处重试。 download.provider.bmclapi=BMCLAPI(bangbang93,https://bmclapi2.bangbang93.com/) -download.provider.mojang=官方(Mojang) +download.provider.mojang=官方(Forge 和 OptiFine 自动安装使用 BMCLAPI 下载源) extension.bat=Windows 脚本 extension.mod=模组文件 diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/forge/ForgeInstallTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/forge/ForgeInstallTask.java index c29de94a5..d250c9084 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/forge/ForgeInstallTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/forge/ForgeInstallTask.java @@ -58,7 +58,8 @@ public final class ForgeInstallTask extends TaskResult { public void preExecute() throws Exception { installer = Files.createTempFile("forge-installer", ".jar"); - dependent = new FileDownloadTask(NetworkUtils.toURL(remote.getUrl()), installer.toFile()); + dependent = new FileDownloadTask(NetworkUtils.toURL(remote.getUrl()), installer.toFile()) + .setCaching(true); } @Override diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/forge/ForgeNewInstallProfile.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/forge/ForgeNewInstallProfile.java index 3cd83c53a..7ede71444 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/forge/ForgeNewInstallProfile.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/forge/ForgeNewInstallProfile.java @@ -34,14 +34,16 @@ public class ForgeNewInstallProfile { private final int spec; private final String minecraft; private final String json; + private final Artifact path; private final List libraries; private final List processors; private final Map data; - public ForgeNewInstallProfile(int spec, String minecraft, String json, List libraries, List processors, Map data) { + public ForgeNewInstallProfile(int spec, String minecraft, String json, Artifact path, List libraries, List processors, Map data) { this.spec = spec; this.minecraft = minecraft; this.json = json; + this.path = path; this.libraries = libraries; this.processors = processors; this.data = data; @@ -69,6 +71,14 @@ public class ForgeNewInstallProfile { return json; } + /** + * Maven artifact path for the main jar to install. + * @return artifact path of the main jar. + */ + public Artifact getPath() { + return path; + } + /** * Libraries that processors depend on. * @return the required dependencies. diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/forge/ForgeNewInstallTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/forge/ForgeNewInstallTask.java index fe1250485..9773a32d2 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/forge/ForgeNewInstallTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/forge/ForgeNewInstallTask.java @@ -107,6 +107,14 @@ public class ForgeNewInstallTask extends TaskResult { FileUtils.copyFile(file, dest); } } + + { + Path mainJar = profile.getPath().getPath(fs.getPath("maven")); + if (Files.exists(mainJar)) { + Path dest = gameRepository.getArtifactFile(version, profile.getPath()); + FileUtils.copyFile(mainJar, dest); + } + } } dependents.add(new GameLibrariesTask(dependencyManager, version, profile.getLibraries())); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/GameAssetDownloadTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/GameAssetDownloadTask.java index 9c435ce41..1de763381 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/GameAssetDownloadTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/GameAssetDownloadTask.java @@ -89,6 +89,7 @@ public final class GameAssetDownloadTask extends Task { String url = dependencyManager.getDownloadProvider().getAssetBaseURL() + assetObject.getLocation(); FileDownloadTask task = new FileDownloadTask(NetworkUtils.toURL(url), file, new FileDownloadTask.IntegrityCheck("SHA-1", assetObject.getHash())); task.setName(assetObject.getHash()); + task.setCaching(true); dependencies.add(task .setCacheRepository(dependencyManager.getCacheRepository()) .setCaching(true) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/LibraryDownloadTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/LibraryDownloadTask.java index 311ffaa1a..cdfa3d1dc 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/LibraryDownloadTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/LibraryDownloadTask.java @@ -128,12 +128,12 @@ public class LibraryDownloadTask extends Task { try { URL packXz = NetworkUtils.toURL(url + ".pack.xz"); if (NetworkUtils.urlExists(packXz)) { - task = new FileDownloadTask(packXz, xzFile, null); + task = new FileDownloadTask(packXz, xzFile, null).setCaching(true); xz = true; } else { task = new FileDownloadTask(NetworkUtils.toURL(url), jar, - library.getDownload().getSha1() != null ? new IntegrityCheck("SHA-1", library.getDownload().getSha1()) : null); + library.getDownload().getSha1() != null ? new IntegrityCheck("SHA-1", library.getDownload().getSha1()) : null).setCaching(true); xz = false; } } catch (IOException e) { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/CurseCompletionTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/CurseCompletionTask.java index 9bac795b1..0a81865fd 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/CurseCompletionTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/CurseCompletionTask.java @@ -140,7 +140,7 @@ public final class CurseCompletionTask extends Task { for (CurseManifestFile file : newManifest.getFiles()) if (StringUtils.isNotBlank(file.getFileName())) { if (!modManager.hasSimpleMod(file.getFileName())) { - dependencies.add(new FileDownloadTask(file.getUrl(), modManager.getSimpleModPath(file.getFileName()).toFile())); + dependencies.add(new FileDownloadTask(file.getUrl(), modManager.getSimpleModPath(file.getFileName()).toFile()).setCaching(true)); } }