From 3af115ce373238d8a1895db9fbfbc170f4280f17 Mon Sep 17 00:00:00 2001 From: Glavo Date: Wed, 13 Oct 2021 21:47:50 +0800 Subject: [PATCH] Use separate native folder for each platform --- HMCL/src/main/resources/assets/lang/I18N_es.properties | 2 +- HMCL/src/main/resources/assets/lang/I18N_ru.properties | 2 +- .../java/org/jackhuang/hmcl/game/DefaultGameRepository.java | 5 +++-- .../main/java/org/jackhuang/hmcl/game/GameRepository.java | 4 +++- .../main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java | 4 ++-- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/HMCL/src/main/resources/assets/lang/I18N_es.properties b/HMCL/src/main/resources/assets/lang/I18N_es.properties index 8d89c10c9..261d4ad89 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_es.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_es.properties @@ -342,7 +342,7 @@ settings.advanced.launcher_visible=Visibilidad de launcher settings.advanced.minecraft_arguments=Minecraft Arguments settings.advanced.natives_directory=Loka biblioteko- vojo (LWJGL) settings.advanced.natives_directory.choose=Elektu lokan bibliotekvojn -settings.advanced.natives_directory.default=Por defecto (.minecraft/versions//natives/) +settings.advanced.natives_directory.default=Por defecto (El lanzador proporciona la biblioteca local del juego) settings.advanced.no_jvm_args=No JVM Args por defecto settings.advanced.precall_command=Comando pre-inicio (será ejecutado antes de inicio del juego) settings.advanced.server_ip=Host de servidor diff --git a/HMCL/src/main/resources/assets/lang/I18N_ru.properties b/HMCL/src/main/resources/assets/lang/I18N_ru.properties index 2562b20fb..6773a7e1b 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_ru.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_ru.properties @@ -359,7 +359,7 @@ settings.advanced.launcher_visible=Видимость лаунчера settings.advanced.minecraft_arguments=Параметры Minecraft settings.advanced.natives_directory=путь к локальной библиотеке (LWJGL) settings.advanced.natives_directory.choose=Выберите путь к локальной библиотеке -settings.advanced.natives_directory.default=По умолчанию (.minecraft/versions/<версия>/natives/) +settings.advanced.natives_directory.default=По умолчанию (Локальная библиотека игры предоставляется лаунчером) settings.advanced.no_jvm_args=По умолчанию параметры JVM отсутствуют settings.advanced.precall_command=Команда предзапуска (будет выполнено до запуска игры) settings.advanced.server_ip=Адрес сервера 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 6703dcfac..ce1f7ad4e 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/DefaultGameRepository.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/DefaultGameRepository.java @@ -36,6 +36,7 @@ import org.jackhuang.hmcl.util.Lang; import org.jackhuang.hmcl.util.ToStringBuilder; import org.jackhuang.hmcl.util.gson.JsonUtils; import org.jackhuang.hmcl.util.io.FileUtils; +import org.jackhuang.hmcl.util.platform.Platform; import org.jetbrains.annotations.Nullable; import java.io.File; @@ -154,8 +155,8 @@ public class DefaultGameRepository implements GameRepository { } @Override - public File getNativeDirectory(String id) { - return new File(getVersionRoot(id), "natives"); + public File getNativeDirectory(String id, Platform platform) { + return new File(getVersionRoot(id), "natives-" + platform); } @Override 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 551ef912e..455cab482 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/GameRepository.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/GameRepository.java @@ -18,6 +18,7 @@ package org.jackhuang.hmcl.game; import org.jackhuang.hmcl.task.Task; +import org.jackhuang.hmcl.util.platform.Platform; import java.io.File; import java.io.IOException; @@ -123,9 +124,10 @@ public interface GameRepository extends VersionProvider { * always fail({@code UnsupportedOperationException}) and not to use it. * * @param id version id + * @param platform the platform of native libraries * @return the native directory */ - File getNativeDirectory(String id); + File getNativeDirectory(String id, Platform platform); /** * Get minecraft jar 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 b72a14f3b..331e9248f 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java @@ -356,7 +356,7 @@ public class DefaultLauncher extends Launcher { public ManagedProcess launch() throws IOException, InterruptedException { File nativeFolder = null; if (options.getNativesDirType() == NativesDirectoryType.VERSION_FOLDER) { - nativeFolder = repository.getNativeDirectory(version.getId()); + nativeFolder = repository.getNativeDirectory(version.getId(), options.getJava().getPlatform()); } else { nativeFolder = new File(options.getNativesDir()); } @@ -431,7 +431,7 @@ public class DefaultLauncher extends Launcher { File nativeFolder = null; if (options.getNativesDirType() == NativesDirectoryType.VERSION_FOLDER) { - nativeFolder = repository.getNativeDirectory(version.getId()); + nativeFolder = repository.getNativeDirectory(version.getId(), options.getJava().getPlatform()); } else { nativeFolder = new File(options.getNativesDir()); }