From 7c510f9fb8655598a26b1b5937bcb0046d0960d4 Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Sun, 3 May 2020 19:21:54 +0800 Subject: [PATCH] add: allow installing OptiFine 1.14.4 and Forge in same game version --- .gitignore | 3 + HMCL/build.gradle | 8 ++- .../hmcl/game/HMCLGameRepository.java | 5 +- .../jackhuang/hmcl/game/LauncherHelper.java | 15 ++++- .../resources/assets/lang/I18N.properties | 1 + .../resources/assets/lang/I18N_es.properties | 1 + .../resources/assets/lang/I18N_ru.properties | 1 + .../resources/assets/lang/I18N_zh.properties | 1 + .../assets/lang/I18N_zh_CN.properties | 1 + .../hmcl/download/LibraryAnalyzer.java | 4 ++ .../jackhuang/hmcl/download/MaintainTask.java | 57 ++++++++++++++---- .../hmcl/download/forge/ForgeInstallTask.java | 3 +- .../liteloader/LiteLoaderInstallTask.java | 2 +- .../optifine/OptiFineInstallTask.java | 6 +- .../hmcl/game/DefaultGameRepository.java | 7 ++- .../jackhuang/hmcl/game/GameRepository.java | 2 + .../hmcl/game/VersionLibraryBuilder.java | 25 ++++++-- .../hmcl/launch/DefaultLauncher.java | 1 + .../HMCLTransformerDiscoveryService-1.0.jar | Bin 0 -> 2243 bytes ...er.serviceapi.ITransformerDiscoveryService | 1 + HMCLTransformerDiscoveryService/build.gradle | 12 ++++ .../lib/modlauncher-4.1.0.jar | Bin 0 -> 115195 bytes .../hmcl/HMCLTransformerDiscoveryService.java | 44 ++++++++++++++ ...er.serviceapi.ITransformerDiscoveryService | 1 + build.gradle | 1 - settings.gradle | 1 + 26 files changed, 176 insertions(+), 27 deletions(-) create mode 100644 HMCLCore/src/main/resources/assets/game/HMCLTransformerDiscoveryService-1.0.jar create mode 100644 HMCLTransformerDiscoveryService/bin/main/META-INF/services/cpw.mods.modlauncher.serviceapi.ITransformerDiscoveryService create mode 100644 HMCLTransformerDiscoveryService/build.gradle create mode 100644 HMCLTransformerDiscoveryService/lib/modlauncher-4.1.0.jar create mode 100644 HMCLTransformerDiscoveryService/src/main/java/org/jackhuang/hmcl/HMCLTransformerDiscoveryService.java create mode 100644 HMCLTransformerDiscoveryService/src/main/resources/META-INF/services/cpw.mods.modlauncher.serviceapi.ITransformerDiscoveryService diff --git a/.gitignore b/.gitignore index 760c29d96..5e6b85816 100644 --- a/.gitignore +++ b/.gitignore @@ -17,17 +17,20 @@ NVIDIA /build/ /HMCL/build/ /HMCLCore/build/ +/HMCLTransformerDiscoveryService/build/ # idea .idea /out/ /HMCL/out/ /HMCLCore/out/ +/HMCLTransformerDiscoveryService/out/ # eclipse /bin/ /HMCL/bin/ /HMCLCore/bin/ +/HMCLTransformerDiscoveryService/bin/ .classpath .project .settings diff --git a/HMCL/build.gradle b/HMCL/build.gradle index 16d1bdb20..917cf3bfa 100644 --- a/HMCL/build.gradle +++ b/HMCL/build.gradle @@ -1,3 +1,9 @@ +buildscript { + dependencies { + classpath 'org.tukaani:xz:1.8' + } +} + plugins { id 'com.github.johnrengelman.shadow' version '4.0.0' id 'application' @@ -77,7 +83,7 @@ def repack(File file) { jar { manifest { - attributes 'Created-By': 'Copyright(c) 2013-2018 huangyuhui.', + attributes 'Created-By': 'Copyright(c) 2013-2020 huangyuhui.', 'Main-Class': mainClassName, 'Multi-Release': 'true', 'Implementation-Version': version diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameRepository.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameRepository.java index b6789d7d5..a6181ddbf 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameRepository.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameRepository.java @@ -20,6 +20,7 @@ package org.jackhuang.hmcl.game; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import javafx.scene.image.Image; +import org.jackhuang.hmcl.download.LibraryAnalyzer; import org.jackhuang.hmcl.mod.Modpack; import org.jackhuang.hmcl.setting.Profile; import org.jackhuang.hmcl.setting.VersionSetting; @@ -218,9 +219,9 @@ public class HMCLGameRepository extends DefaultGameRepository { if (iconFile.exists()) return new Image("file:" + iconFile.getAbsolutePath()); else if (version.getMainClass() != null && - ("net.minecraft.launchwrapper.Launch".equals(version.getMainClass()) + (LibraryAnalyzer.LAUNCH_WRAPPER_MAIN.equals(version.getMainClass()) || version.getMainClass().startsWith("net.fabricmc") - || "cpw.mods.modlauncher.Launcher".equals(version.getMainClass()))) + || LibraryAnalyzer.MOD_LAUNCHER_MAIN.equals(version.getMainClass()))) return newImage("/assets/img/furnace.png"); else return newImage("/assets/img/grass.png"); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java index fa78440e8..b5706a924 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java @@ -23,6 +23,7 @@ import org.jackhuang.hmcl.Launcher; import org.jackhuang.hmcl.auth.*; import org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorDownloadException; import org.jackhuang.hmcl.download.DefaultDependencyManager; +import org.jackhuang.hmcl.download.LibraryAnalyzer; import org.jackhuang.hmcl.download.MaintainTask; import org.jackhuang.hmcl.download.game.GameAssetIndexDownloadTask; import org.jackhuang.hmcl.download.game.LibraryDownloadException; @@ -330,7 +331,7 @@ public final class LauncherHelper { // LaunchWrapper 1.12 will crash because of assuming the system class loader is an instance of URLClassLoader. if (!flag && java.getParsedVersion() >= JavaVersion.JAVA_9_AND_LATER - && version.getMainClass().contains("launchwrapper") + && version.getMainClass().equals(LibraryAnalyzer.LAUNCH_WRAPPER_MAIN) && version.getLibraries().stream() .filter(library -> "launchwrapper".equals(library.getArtifactId())) .anyMatch(library -> VersionNumber.asVersion(library.getVersion()).compareTo(VersionNumber.asVersion("1.13")) < 0)) { @@ -421,6 +422,18 @@ public final class LauncherHelper { } } + // OptiFine 1.14.4 is not compatible with Forge 28.2.2 and later versions. + if (!flag) { + boolean hasForge28_2_2 = version.getLibraries().stream().filter(it -> it.is("net.minecraftforge", "forge")) + .anyMatch(it -> + VersionNumber.VERSION_COMPARATOR.compare("1.14.4-28.2.2", it.getVersion()) <= 0); + boolean hasOptiFine = version.getLibraries().stream().anyMatch(it -> it.is("optifine", "OptiFine")); + if (hasForge28_2_2 && hasOptiFine && gameVersion.compareTo(VersionNumber.asVersion("1.14.4")) == 0) { + Controllers.confirm(i18n("launch.advice.forge28_2_2_optifine"), i18n("message.error"), onAccept, null); + flag = true; + } + } + if (!flag) onAccept.run(); } diff --git a/HMCL/src/main/resources/assets/lang/I18N.properties b/HMCL/src/main/resources/assets/lang/I18N.properties index b1358b5d3..706e0ba9e 100644 --- a/HMCL/src/main/resources/assets/lang/I18N.properties +++ b/HMCL/src/main/resources/assets/lang/I18N.properties @@ -169,6 +169,7 @@ launch.advice.corrected=We have already fixed the JVM selection. If you want to launch.advice.uncorrected=If you are sure that the game can be started normally, you can disable the Java VM check in game settings. launch.advice.different_platform=Your OS is 64-Bit but your Java is 32-Bit. The 64-Bit Java is recommended. launch.advice.forge2760_liteloader=Forge 2760 and higher are not compatible with LiteLoader, please consider upgrading Forge to 2773 or later. Shall we continue launching? +launch.advice.forge28_2_2_optifine=Forge 28.2.2 and later versions are not compatible with OptiFine. Please consider downgrading Forge to 28.2.1 or earlier versions. Shall we continue launching? launch.advice.java8_1_13=Minecraft 1.13 and later can only run on Java 8 or later. launch.advice.java8_51_1_13=Minecraft 1.13 may crash on Java 8 earlier than 1.8.0_51. Please install the latest version of Java 8. launch.advice.java9=You cannot launch Minecraft 1.12 or earlier with Java 9 or later versions of Java. diff --git a/HMCL/src/main/resources/assets/lang/I18N_es.properties b/HMCL/src/main/resources/assets/lang/I18N_es.properties index c29131074..7e6452fe1 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_es.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_es.properties @@ -165,6 +165,7 @@ launch.advice.corrected=Ya hemos corregido la selección de JVM y el juego puede launch.advice.uncorrected=Si está seguro que el juego puede ser lanzado normalmente, puede deshabilitar el Java VM checker en la configuración del juego. launch.advice.different_platform=Su SO es 64-Bit pero su Java es 32-Bit. 64-Bit Java es recomendado. launch.advice.forge2760_liteloader=Forge 2760 y posterior no es compatible con LiteLoader, considere actualizando Forge a 2773 o más. +launch.advice.forge28_2_2_optifine=Forge 28.2.2 and later versions are not compatible with OptiFine. Please consider downgrading Forge to 28.2.1 or earlier versions. Shall we continue launching? launch.advice.java8_1_13=Minecraft 1.13 y posterior sólo pueden correr en Java 8 o luego. launch.advice.java8_51_1_13=Minecraft 1.13 puediera fallar en Java 8 anterior 1.8.0_51. Debe instalar la versión de Java 8 más reciente. launch.advice.java9=No puedes lanzar Minecraft hasta que su versión de juego sea más allá de 1.13 con Java 9 o posterior. diff --git a/HMCL/src/main/resources/assets/lang/I18N_ru.properties b/HMCL/src/main/resources/assets/lang/I18N_ru.properties index de720a3f5..122945d36 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_ru.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_ru.properties @@ -169,6 +169,7 @@ launch.advice.corrected=Мы уже исправили выбор JVMЕ. Есл launch.advice.uncorrected=Если вы уверены, что игра запускается нормально, то можете отключить проверку Java VM в настройках игры. launch.advice.different_platform=Ваша ОС 64-битная, а ваша Java 32-битная. Рекомендуется использовать 64-битный Java. launch.advice.forge2760_liteloader=Forge 2760 и выше не совместимы с LiteLoader, рассмотрите возможность обновления Forge до 2773 или более поздней версии. +launch.advice.forge28_2_2_optifine=Forge 28.2.2 and later versions are not compatible with OptiFine. Please consider downgrading Forge to 28.2.1 or earlier versions. Shall we continue launching? launch.advice.java8_1_13=Minecraft 1.13 и выше может работать только на Java 8 или более поздней версии. launch.advice.java8_51_1_13=У Minecraft 1.13 может произойти сбой на Java 8 меньше, чем 1.8.0_51. Установите последнюю версию Java 8. launch.advice.java9=Вы не можете запустить Minecraft 1.12 или более ранней версии с Java 9 или более новых версий Java. diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh.properties b/HMCL/src/main/resources/assets/lang/I18N_zh.properties index e2bf3f512..034b1f0a3 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh.properties @@ -169,6 +169,7 @@ launch.advice.corrected=我們已經修正了問題。如果您確實希望使 launch.advice.uncorrected=如果您確實希望使用您自訂的 Java 虛擬機,您可以在遊戲設定中關閉 Java 虛擬機相容性檢查。 launch.advice.different_platform=您的系統為 64 位元,但是 Java 是 32 位元,建議您安裝 64 位 Java。 launch.advice.forge2760_liteloader=Forge 2760 與 LiteLoader 不相容。請刪除 LiteLoader 或者變更 Forge 至 2773 或更新的版本。是否繼續啟動? +launch.advice.forge28_2_2_optifine=Forge 28.2.2 或更高版本與 OptiFine 不相容。請變更 Forge 至 28.2.1 或更低版本。是否繼續啟動? launch.advice.java8_1_13=Minecraft 1.13 只支援 Java 8 或更高版本,請使用 Java 8 或最新版本。 launch.advice.java8_51_1_13=低於 1.8.0_51 的 Java 版本可能會導致 Minecraft 1.13 崩潰。建議您到 https://java.com 安裝最新版的 Java 8。 launch.advice.java9=低於 (包含) 1.13 的有安裝 Mod 的 Minecraft 版本不支援 Java 9 或更高版本,請使用 Java 8。 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 e6b2b639f..f33e891f1 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties @@ -169,6 +169,7 @@ launch.advice.corrected=我们已经修复了问题。如果您确实希望使 launch.advice.uncorrected=如果您确实希望使用您自定义的 Java 虚拟机,您可以在游戏设置中关闭 Java 虚拟机兼容性检查。 launch.advice.different_platform=您的系统是 64 位,但是 Java 是 32 位的,建议您安装 64 位 Java。 launch.advice.forge2760_liteloader=Forge 2760 与 LiteLoader 不兼容。请删除 LiteLoader 或者更换 Forge 至 2773 或更新的版本。是否继续启动? +launch.advice.forge28_2_2_optifine=Forge 28.2.2 或更高版本与 OptiFine 不兼容。请更换 Forge 至 28.2.1 或更低版本。是否继续启动? launch.advice.java8_1_13=Minecraft 1.13 只支持 Java 8 或更高版本,请使用 Java 8 或最新版本。 launch.advice.java8_51_1_13=低于 1.8.0_51 的 Java 版本可能会导致 Minecraft 1.13 崩溃。建议您到 https://java.com 安装最新版的 Java 8。 launch.advice.java9=低于 1.13 的有安装 Mod 的 Minecraft 版本不支持 Java 9 或更高版本,请使用 Java 8。 diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/LibraryAnalyzer.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/LibraryAnalyzer.java index 248622673..d7f2ac419 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/LibraryAnalyzer.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/LibraryAnalyzer.java @@ -198,4 +198,8 @@ public final class LibraryAnalyzer implements Iterable { private final GameRepository repository; @@ -60,13 +64,15 @@ public class MaintainTask extends Task { String mainClass = version.resolve(null).getMainClass(); - if (mainClass != null && mainClass.contains("launchwrapper")) { - return maintainOptiFineLibrary(repository, maintainGameWithLaunchWrapper(unique(version), true)); + if (mainClass != null && mainClass.equals(LibraryAnalyzer.LAUNCH_WRAPPER_MAIN)) { + return maintainOptiFineLibrary(repository, maintainGameWithLaunchWrapper(unique(version), true), false); + } else if (mainClass != null && mainClass.equals(LibraryAnalyzer.MOD_LAUNCHER_MAIN)) { + // Forge 1.13 and OptiFine + return maintainOptiFineLibrary(repository, maintainGameWithModLauncher(repository, unique(version)), true); } else { // Vanilla Minecraft does not need maintain - // Forge 1.13 support not implemented, not compatible with OptiFine currently. // Fabric does not need maintain, nothing compatible with fabric now. - return maintainOptiFineLibrary(repository, unique(version)); + return maintainOptiFineLibrary(repository, unique(version), false); } } @@ -116,7 +122,34 @@ public class MaintainTask extends Task { return mainClass == null ? ret : ret.setMainClass(mainClass); } - private static Version maintainOptiFineLibrary(GameRepository repository, Version version) { + private static Version maintainGameWithModLauncher(GameRepository repository, Version version) { + LibraryAnalyzer libraryAnalyzer = LibraryAnalyzer.analyze(version); + VersionLibraryBuilder builder = new VersionLibraryBuilder(version); + + if (!libraryAnalyzer.has(FORGE)) return version; + + if (libraryAnalyzer.has(OPTIFINE)) { + Library hmclTransformerDiscoveryService = new Library(new Artifact("org.jackhuang.hmcl", "transformer-discovery-service", "1.0")); + Optional optiFine = version.getLibraries().stream().filter(library -> library.is("optifine", "OptiFine")).findAny(); + boolean libraryExisting = version.getLibraries().stream().anyMatch(library -> library.is("org.jackhuang.hmcl", "transformer-discovery-service")); + optiFine.ifPresent(library -> { + builder.addJvmArgument("-Dhmcl.transformer.candidates=${libraries_directory}/" + library.getPath()); + if (!libraryExisting) builder.addLibrary(hmclTransformerDiscoveryService); + Path libraryPath = repository.getLibraryFile(version, hmclTransformerDiscoveryService).toPath(); + try { + Files.createDirectories(libraryPath.getParent()); + Files.copy(MaintainTask.class.getResourceAsStream("/assets/game/HMCLTransformerDiscoveryService-1.0.jar"), + libraryPath, StandardCopyOption.REPLACE_EXISTING); + } catch (IOException e) { + Logging.LOG.log(Level.WARNING, "Unable to unpack HMCLTransformerDiscoveryService", e); + } + }); + } + + return builder.build(); + } + + private static Version maintainOptiFineLibrary(GameRepository repository, Version version, boolean remove) { LibraryAnalyzer libraryAnalyzer = LibraryAnalyzer.analyze(version); List libraries = new ArrayList<>(version.getLibraries()); @@ -135,7 +168,7 @@ public class MaintainTask extends Task { // Although we have altered priority of OptiFine higher than Forge, // there still exists a situation that Forge is installed without patch. // Here we manually alter the position of OptiFine library in classpath. - libraries.add(newLibrary); + if (!remove) libraries.add(newLibrary); } } 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 a558b65cc..943dd7e83 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 @@ -19,6 +19,7 @@ package org.jackhuang.hmcl.download.forge; import org.jackhuang.hmcl.download.DefaultDependencyManager; import org.jackhuang.hmcl.download.DependencyManager; +import org.jackhuang.hmcl.download.LibraryAnalyzer; import org.jackhuang.hmcl.download.VersionMismatchException; import org.jackhuang.hmcl.download.optifine.OptiFineInstallTask; import org.jackhuang.hmcl.game.GameVersion; @@ -104,7 +105,7 @@ public final class ForgeInstallTask extends Task { String originalMainClass = version.resolve(dependencyManager.getGameRepository()).getMainClass(); if (VersionNumber.VERSION_COMPARATOR.compare("1.13", remote.getGameVersion()) <= 0) { // Forge 1.13 is not compatible with any other libraries. - if (!"net.minecraft.client.main.Main".equals(originalMainClass) && !"cpw.mods.modlauncher.Launcher".equals(originalMainClass)) + if (!LibraryAnalyzer.VANILLA_MAIN.equals(originalMainClass) && !LibraryAnalyzer.MOD_LAUNCHER_MAIN.equals(originalMainClass) && !LibraryAnalyzer.LAUNCH_WRAPPER_MAIN.equals(originalMainClass)) throw new OptiFineInstallTask.UnsupportedOptiFineInstallationException(); } else { // Forge 1.12 and older versions is compatible with vanilla and launchwrapper. diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/liteloader/LiteLoaderInstallTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/liteloader/LiteLoaderInstallTask.java index 1d5c38b73..5999fc6fd 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/liteloader/LiteLoaderInstallTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/liteloader/LiteLoaderInstallTask.java @@ -69,7 +69,7 @@ public final class LiteLoaderInstallTask extends Task { remote.getSelfVersion(), 60000, new Arguments().addGameArguments("--tweakClass", "com.mumfrey.liteloader.launch.LiteLoaderTweaker"), - "net.minecraft.launchwrapper.Launch", + LibraryAnalyzer.LAUNCH_WRAPPER_MAIN, Lang.merge(remote.getLibraries(), Collections.singleton(library))) .setLogging(Collections.emptyMap()) // Mods may log in malformed format, causing XML parser to crash. So we suppress using official log4j configuration ); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/optifine/OptiFineInstallTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/optifine/OptiFineInstallTask.java index 8764ed495..97ab70ba5 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/optifine/OptiFineInstallTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/optifine/OptiFineInstallTask.java @@ -121,7 +121,7 @@ public final class OptiFineInstallTask extends Task { @Override public void execute() throws Exception { String originalMainClass = version.resolve(dependencyManager.getGameRepository()).getMainClass(); - if (!"net.minecraft.client.main.Main".equals(originalMainClass) && !"net.minecraft.launchwrapper.Launch".equals(originalMainClass)) + if (!LibraryAnalyzer.VANILLA_MAIN.equals(originalMainClass) && !LibraryAnalyzer.LAUNCH_WRAPPER_MAIN.equals(originalMainClass) && !LibraryAnalyzer.MOD_LAUNCHER_MAIN.equals(originalMainClass)) throw new OptiFineInstallTask.UnsupportedOptiFineInstallationException(); List libraries = new LinkedList<>(); @@ -183,9 +183,9 @@ public final class OptiFineInstallTask extends Task { setResult(new Version( LibraryAnalyzer.LibraryType.OPTIFINE.getPatchId(), remote.getSelfVersion(), - 90000, + 10000, new Arguments().addGameArguments("--tweakClass", "optifine.OptiFineTweaker"), - "net.minecraft.launchwrapper.Launch", + LibraryAnalyzer.LAUNCH_WRAPPER_MAIN, libraries )); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/DefaultGameRepository.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/DefaultGameRepository.java index 1824a688d..01a0255e0 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/DefaultGameRepository.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/DefaultGameRepository.java @@ -96,12 +96,17 @@ public class DefaultGameRepository implements GameRepository { return versions.values(); } + @Override + public File getLibrariesDirectory(Version version) { + return new File(getBaseDirectory(), "libraries"); + } + @Override public File getLibraryFile(Version version, Library lib) { if ("local".equals(lib.getHint()) && lib.getFileName() != null) return new File(getVersionRoot(version.getId()), "libraries/" + lib.getFileName()); else - return new File(getBaseDirectory(), "libraries/" + lib.getPath()); + return new File(getLibrariesDirectory(version), lib.getPath()); } public Path getArtifactFile(Version version, Artifact artifact) { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/GameRepository.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/GameRepository.java index f32da6006..cefbde81a 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/GameRepository.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/GameRepository.java @@ -99,6 +99,8 @@ public interface GameRepository extends VersionProvider { */ File getRunDirectory(String id); + File getLibrariesDirectory(Version version); + /** * Get the library file in disk. * This method allows versions and libraries that are not loaded by this game repository. diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/VersionLibraryBuilder.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/VersionLibraryBuilder.java index 275944f3d..272c0aebb 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/VersionLibraryBuilder.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/VersionLibraryBuilder.java @@ -20,8 +20,7 @@ package org.jackhuang.hmcl.game; import org.jackhuang.hmcl.util.StringUtils; import org.jackhuang.hmcl.util.platform.CommandBuilder; -import java.util.ArrayList; -import java.util.List; +import java.util.*; /** * @@ -31,12 +30,17 @@ public final class VersionLibraryBuilder { private final Version version; private final List mcArgs; private final List game; + private final List jvm; + private final List libraries; private final boolean useMcArgs; + private boolean jvmChanged = false; public VersionLibraryBuilder(Version version) { this.version = version; + this.libraries = new ArrayList<>(version.getLibraries()); this.mcArgs = version.getMinecraftArguments().map(StringUtils::tokenize).map(ArrayList::new).orElse(null); this.game = version.getArguments().map(Arguments::getGame).map(ArrayList::new).orElseGet(ArrayList::new); + this.jvm = new ArrayList<>(version.getArguments().map(Arguments::getJvm).orElse(Arguments.DEFAULT_JVM_ARGUMENTS)); this.useMcArgs = mcArgs != null; } @@ -47,7 +51,10 @@ public final class VersionLibraryBuilder { // so we regenerate the minecraftArgument without escaping. ret = ret.setMinecraftArguments(new CommandBuilder().addAllWithoutParsing(mcArgs).toString()); } - return ret.setArguments(ret.getArguments().map(args -> args.withGame(game)).orElse(new Arguments(game, null))); + return ret.setArguments(ret.getArguments() + .map(args -> args.withGame(game)) + .map(args -> jvmChanged ? args.withJvm(jvm) : args).orElse(new Arguments(game, jvmChanged ? jvm : null))) + .setLibraries(libraries); } public void removeTweakClass(String target) { @@ -138,8 +145,18 @@ public final class VersionLibraryBuilder { } } - public void addArgument(String... args) { + public void addGameArgument(String... args) { for (String arg : args) game.add(new StringArgument(arg)); } + + public void addJvmArgument(String... args) { + jvmChanged = true; + for (String arg : args) + jvm.add(new StringArgument(arg)); + } + + public void addLibrary(Library library) { + libraries.add(library); + } } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java index f2d717cd0..148a6fb11 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java @@ -153,6 +153,7 @@ public class DefaultLauncher extends Launcher { configuration.put("${natives_directory}", nativeFolder.getAbsolutePath()); configuration.put("${game_assets}", gameAssets.getAbsolutePath()); configuration.put("${assets_root}", gameAssets.getAbsolutePath()); + configuration.put("${libraries_directory}", repository.getLibrariesDirectory(version).getAbsolutePath()); res.addAll(Arguments.parseArguments(version.getArguments().map(Arguments::getJvm).orElseGet(this::getDefaultJVMArguments), configuration)); if (authInfo.getArguments() != null && authInfo.getArguments().getJvm() != null && !authInfo.getArguments().getJvm().isEmpty()) diff --git a/HMCLCore/src/main/resources/assets/game/HMCLTransformerDiscoveryService-1.0.jar b/HMCLCore/src/main/resources/assets/game/HMCLTransformerDiscoveryService-1.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..3ea51be50926e0b72ac87e7c8e73086edbbd6f04 GIT binary patch literal 2243 zcmWIWW@h1HVBp|jNGw|%zyJhHAOZ+Df!NnI#8KDN&rP41Apk|;rh2A#(m(~0KrDi+ z(AUw=)6F$FM9CTC}qCg$N+EsUW$BR4q*!vcTp@ zH?_zmvp6}wEVZaIIJKxOGdWc+IVZ8Wcy3sBxU{Q8omz~TnYX8=h^X$RWhM(!H-@ck z3YBuW;BZkP?p5xlnJUb)@0ONNo>lMq+H%%68QZ#VKW5wP+br#=kh!An#JMxp@1M?m zzIV=_pWiRvXS{RFS$494dm-oP#TCrkOH@8C^Apeaz3|sdXmv&W@z|OLW%5}Omka#e z#a_SKvoJCEuzS{S)23Wm`NzV%mb}(dWs+as+iH=tWv`K(Fd*PO|b9kIKNojvx6)}C^2B+)!20q_5B}<$=z3K4b zS^fs$^G|=z(qFp!$*W0cSGOwpZ-2OKx@2D3u9t60BwO}92rYHyu1sW6sZ~3&E%^C1 zomC#v_K}CUm%g6xYJodbRi>SaSNRU{jlP{}5|LZqgzfvXC;GGQM$J&AOV2m#UGhk( zf>B>;M^7g2ciuONw+<}-;p2SofSp~s$KB$)6AFs+-CIPrOZ4zRR%q4F_-WKy$sGSM zo0p%bra9lVCjCM6pM-|R2MQjVOn>rP$5Kj%*_DG?b&BM=dFNR~W6Ry9SUS!PG~Fh$ zEq>3HbA4==CRwEH_WQXM}YMeBD@icB9rI^X3~()tBzPdwsFP z=92cKl-`wJp0ysY^;11#AX2eyiH3Pq=#}O;-`QE4_dff*$MLVR%ysF*LCY?y)H%*S zbfu7G_uV?%9xGQXU(GJVBev(4-J5;3#7a+4Un~DvTDG&t^7(?(9kp-TEP0f+WAe+_ zOX7pimc*vU-tKd2exy?JIBCzMmk*z~O#YJ*R+A8M?#tyjj+|%P-)Svhf$l2_TQs3)KlQMpGx1SUH zy3tqJ%q-^Rv9CIZ|F)_ByPqnvY5!ZN@43@%m&LU;%~)j|Q@`$efbO^Jhh?_jP?1>n z;`=12YhTn8CVVs5t<0Hl=~RYn)F06|g1JI77QQb~+0!)rW%d!Siq>-r{_4c3>ZZml zFm-%=^|*)4u><-NIY}=xB_DHcVVNaS*>sWRUqfBZqsk@*hU*1_nM_+e1lGF->K&gK z6?i4DudXL=YO2-J)u%EW#n$c!?q=Svc(di=ksF15-yZue=~Ld}*;LEO9O$vNsfYK@ z0SP1ZhsO+@CiyI}Z*A?Ed-TW0FUy~s?yCLUvV5lpx5V5XH;x=R?_txmBcs^V+cD2A zV)}#2t0rG@?vOuu^tP_peZ{%f72@yzG9yY^^g>SvSSG=X<6=mOQ;boHT{eCjV+K@d z0>pk;btD&*>*eOB6oZJI#L~RvjMO4MsCkJ6nR=dhO1RVdUe`~1`J6ka;d{pW`sowC z=PrK!Q2LEi)9Z}3-)a3*zPd#xb^Olhd+V;^@zd2h?c?_pT-Y-*i7?}?WPr{D0s)4% zjvyND#{h3sZRk}FNHGX3Y19OgaBWBx5V8sA!3nBoAOK`>8ITF8b@1r`)jALW(lHCj z1nEH3LHP87>L3UJ={*5tqUr_LNazNj*GMoUmNfpxZU9mB6S^%RQ(;v;D2+h?$eI1D nNWltEap?NdQyk2MC5;EM>Zc_A1$eWvfz0OsLNB1BlfgUyP_HXA literal 0 HcmV?d00001 diff --git a/HMCLTransformerDiscoveryService/bin/main/META-INF/services/cpw.mods.modlauncher.serviceapi.ITransformerDiscoveryService b/HMCLTransformerDiscoveryService/bin/main/META-INF/services/cpw.mods.modlauncher.serviceapi.ITransformerDiscoveryService new file mode 100644 index 000000000..82fc86968 --- /dev/null +++ b/HMCLTransformerDiscoveryService/bin/main/META-INF/services/cpw.mods.modlauncher.serviceapi.ITransformerDiscoveryService @@ -0,0 +1 @@ +org.jackhuang.hmcl.HMCLTransformerDiscoveryService diff --git a/HMCLTransformerDiscoveryService/build.gradle b/HMCLTransformerDiscoveryService/build.gradle new file mode 100644 index 000000000..82d65da47 --- /dev/null +++ b/HMCLTransformerDiscoveryService/build.gradle @@ -0,0 +1,12 @@ +version '1.0' + +dependencies { + compileOnly project.files("lib/modlauncher-4.1.0.jar") +} + +jar { + manifest { + attributes 'Created-By': 'Copyright(c) 2013-2020 huangyuhui.', + 'Implementation-Version': version + } +} diff --git a/HMCLTransformerDiscoveryService/lib/modlauncher-4.1.0.jar b/HMCLTransformerDiscoveryService/lib/modlauncher-4.1.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..2dd8cb64e51cee8f2fef2f23c5827fe571ed2534 GIT binary patch literal 115195 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�q+!5JL`6yv#fb4 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 and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jackhuang.hmcl; + +import cpw.mods.modlauncher.serviceapi.ITransformerDiscoveryService; + +import java.io.File; +import java.nio.file.InvalidPathException; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class HMCLTransformerDiscoveryService implements ITransformerDiscoveryService { + private static final String CANDIDATES = System.getProperty("hmcl.transformer.candidates"); + + @Override + public List candidates(Path gameDirectory) { + return Arrays.stream(CANDIDATES.split(File.pathSeparator)) + .flatMap(path -> { + try { + return Stream.of(Paths.get(path)); + } catch (InvalidPathException e) { + return Stream.of(); + } + }).collect(Collectors.toList()); + } +} diff --git a/HMCLTransformerDiscoveryService/src/main/resources/META-INF/services/cpw.mods.modlauncher.serviceapi.ITransformerDiscoveryService b/HMCLTransformerDiscoveryService/src/main/resources/META-INF/services/cpw.mods.modlauncher.serviceapi.ITransformerDiscoveryService new file mode 100644 index 000000000..82fc86968 --- /dev/null +++ b/HMCLTransformerDiscoveryService/src/main/resources/META-INF/services/cpw.mods.modlauncher.serviceapi.ITransformerDiscoveryService @@ -0,0 +1 @@ +org.jackhuang.hmcl.HMCLTransformerDiscoveryService diff --git a/build.gradle b/build.gradle index bc6c1051a..f8443b1ce 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,6 @@ buildscript { maven { url 'https://plugins.gradle.org/m2/' } } dependencies { - classpath 'org.tukaani:xz:1.8' classpath 'gradle.plugin.com.hierynomus.gradle.plugins:license-gradle-plugin:0.15.0' } } diff --git a/settings.gradle b/settings.gradle index d9fd5ba34..32100c8ff 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,4 +1,5 @@ rootProject.name = 'HMCL3' include 'HMCL' include 'HMCLCore' +include 'HMCLTransformerDiscoveryService'