Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -626,7 +626,7 @@ public LaunchOptions.Builder getLaunchOptions(JavaRuntime javaVersion, Path game
.setEnableDebugLogOutput(vs.getInheritable(GameSettings::enableDebugLogOutputProperty))
.setAllowAutoAgent(vs.getInheritable(GameSettings::allowAutoAgentProperty))
.setDisableAutoGameOptions(vs.getInheritable(GameSettings::disableAutoGameOptionsProperty))
.setUseNativeGLFW(vs.getInheritable(GameSettings::useNativeGLFWProperty))
.setUseNativeGLFWorSDL(vs.getInheritable(GameSettings::useNativeGLFWorSDLProperty))
.setUseNativeOpenAL(vs.getInheritable(GameSettings::useNativeOpenALProperty))
.setUseHighPerformanceGPU(vs.getInheritable(GameSettings::highPerformanceProperty))
.setDaemon(!makeLaunchScript && vs.getInheritable(GameSettings::launcherVisibilityProperty).isDaemon())
Expand Down
10 changes: 5 additions & 5 deletions HMCL/src/main/java/org/jackhuang/hmcl/setting/GameSettings.java
Original file line number Diff line number Diff line change
Expand Up @@ -813,15 +813,15 @@ public InheritableProperty<String> nativesDirectoryProperty() {
}

/// Property name for using native GLFW.
public static final String PROPERTY_USE_NATIVE_GLFW = "useNativeGLFW";
public static final String PROPERTY_USE_NATIVE_GLFW_OR_SDL = "useNativeGLFW";

/// If `true`, HMCL will use native GLFW.
@SerializedName(PROPERTY_USE_NATIVE_GLFW)
private final InheritableProperty<Boolean> useNativeGLFW = newInheritableProperty(PROPERTY_USE_NATIVE_GLFW, false);
@SerializedName(PROPERTY_USE_NATIVE_GLFW_OR_SDL)
private final InheritableProperty<Boolean> useNativeGLFWorSDL = newInheritableProperty(PROPERTY_USE_NATIVE_GLFW_OR_SDL, false);

/// Returns the native GLFW property.
public InheritableProperty<Boolean> useNativeGLFWProperty() {
return useNativeGLFW;
public InheritableProperty<Boolean> useNativeGLFWorSDLProperty() {
return useNativeGLFWorSDL;
}

/// Property name for using native OpenAL.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@ static GameSettings.Instance toInstance(
GameSettings.PROPERTY_NOT_PATCH_NATIVES,
GameSettings.PROPERTY_USE_CUSTOM_NATIVES,
GameSettings.PROPERTY_NATIVES_DIRECTORY,
GameSettings.PROPERTY_USE_NATIVE_GLFW,
GameSettings.PROPERTY_USE_NATIVE_GLFW_OR_SDL,
GameSettings.PROPERTY_USE_NATIVE_OPENAL
));
}
Expand Down Expand Up @@ -342,7 +342,7 @@ private static void copyCommonProperties(
boolean useCustomNatives = isLegacyCustomNativesDirectory(source);
target.useCustomNativesProperty().setValue(useCustomNatives);
target.nativesDirectoryProperty().setValue(useCustomNatives ? JsonUtils.getString(source, "nativesDir", "") : "");
target.useNativeGLFWProperty().setValue(JsonUtils.getBoolean(source, "useNativeGLFW", false));
target.useNativeGLFWorSDLProperty().setValue(JsonUtils.getBoolean(source, "useNativeGLFW", false));
target.useNativeOpenALProperty().setValue(JsonUtils.getBoolean(source, "useNativeOpenAL", false));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@
*/
package org.jackhuang.hmcl.ui.game;

import org.jackhuang.hmcl.game.HMCLGameInstance;

import com.jfoenix.controls.JFXButton;
import com.jfoenix.controls.JFXComboBox;
import com.jfoenix.controls.JFXSlider;
Expand Down Expand Up @@ -841,10 +839,10 @@ public GameSettingsPage(
nativeLibrarySettings.getContent().add(noNativesPatchPane);
noNativesPatchPane.setTitle(i18n("settings.advanced.dont_patch_natives"));

var useNativeGLFWPane = createIndependentBooleanButton(GameSettings::useNativeGLFWProperty);
nativeLibrarySettings.getContent().add(useNativeGLFWPane);
useNativeGLFWPane.setTitle(i18n("settings.advanced.use_native_glfw"));
useNativeGLFWPane.setSubtitle(i18n("settings.advanced.linux_freebsd_only"));
var useNativeGLFWORsdlPane = createIndependentBooleanButton(GameSettings::useNativeGLFWorSDLProperty);
nativeLibrarySettings.getContent().add(useNativeGLFWORsdlPane);
useNativeGLFWORsdlPane.setTitle(i18n("settings.advanced.use_native_glfw_or_sdl"));
useNativeGLFWORsdlPane.setSubtitle(i18n("settings.advanced.linux_freebsd_only"));

var useNativeOpenALPane = createIndependentBooleanButton(GameSettings::useNativeOpenALProperty);
nativeLibrarySettings.getContent().add(useNativeOpenALPane);
Expand Down
10 changes: 5 additions & 5 deletions HMCL/src/main/java/org/jackhuang/hmcl/util/NativePatcher.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@
*/
package org.jackhuang.hmcl.util;

import org.jackhuang.hmcl.game.*;
import org.jackhuang.hmcl.addon.mod.LocalModFile;
import org.jackhuang.hmcl.addon.mod.ModManager;
import org.jackhuang.hmcl.game.*;
import org.jackhuang.hmcl.java.JavaRuntime;
import org.jackhuang.hmcl.setting.GameSettings;
import org.jackhuang.hmcl.util.gson.JsonUtils;
import org.jackhuang.hmcl.util.platform.Architecture;
import org.jackhuang.hmcl.java.JavaRuntime;
import org.jackhuang.hmcl.util.platform.OSVersion;
import org.jackhuang.hmcl.util.platform.OperatingSystem;
import org.jackhuang.hmcl.util.platform.Platform;
Expand Down Expand Up @@ -97,17 +97,17 @@ public static GameInstanceManifest patchNative(DefaultGameInstance instance,
return manifest.withLibraries(newLibraries);
}

final boolean useNativeGLFW = settings.getInheritable(GameSettings::useNativeGLFWProperty);
final boolean useNativeGLFWorSDL = settings.getInheritable(GameSettings::useNativeGLFWorSDLProperty);
final boolean useNativeOpenAL = settings.getInheritable(GameSettings::useNativeOpenALProperty);

if (OperatingSystem.CURRENT_OS.isLinuxOrBSD()
&& (useNativeGLFW || useNativeOpenAL) && gameVersion.compareTo("1.19") >= 0) {
&& (useNativeGLFWorSDL || useNativeOpenAL) && gameVersion.compareTo("1.19") >= 0) {

manifest = manifest.withLibraries(manifest.getLibraries().stream()
.filter(library -> {
if (library.classifier() != null && library.classifier().startsWith("natives")
&& "org.lwjgl".equals(library.groupId())) {
if ((useNativeGLFW && "lwjgl-glfw".equals(library.artifactId()))
if ((useNativeGLFWorSDL && ("lwjgl-glfw".equals(library.artifactId()) || library.artifactId().contains("sdl")))
|| (useNativeOpenAL && "lwjgl-openal".equals(library.artifactId()))) {
LOG.info("Filter out " + library.name());
return false;
Expand Down
3 changes: 2 additions & 1 deletion HMCL/src/main/resources/assets/lang/I18N.properties
Original file line number Diff line number Diff line change
Expand Up @@ -1477,8 +1477,9 @@ settings.advanced.renderer.zink.desc=OpenGL renderer based on Vulkan
settings.advanced.server_ip=Server Address
settings.advanced.server_ip.prompt=Automatically join after launching the game
settings.advanced.unsupported_system_options=Settings not applicable to the current system
settings.advanced.use_native_glfw=Use System GLFW
settings.advanced.use_native_glfw_or_sdl=Use System GLFW / SDL
settings.advanced.use_native_openal=Use System OpenAL
settings.advanced.use_native_sdl=Use System SDL
settings.advanced.linux_freebsd_only=Linux/FreeBSD Only
settings.advanced.windows_only=Windows Only
settings.advanced.wrapper_launcher=Wrapper Command
Expand Down
2 changes: 1 addition & 1 deletion HMCL/src/main/resources/assets/lang/I18N_ar.properties
Original file line number Diff line number Diff line change
Expand Up @@ -1341,7 +1341,7 @@ settings.advanced.renderer.zink=Mesa Zink
settings.advanced.server_ip=عنوان الخادم
settings.advanced.server_ip.prompt=الانضمام تلقائياً بعد تشغيل اللعبة
settings.advanced.unsupported_system_options=إعدادات غير مطبّقة على النظام الحالي
settings.advanced.use_native_glfw=استخدام GLFW النظام
settings.advanced.use_native_glfw_or_sdl=استخدام GLFW / SDL النظام
settings.advanced.use_native_openal=استخدام OpenAL النظام
settings.advanced.linux_freebsd_only=Linux/FreeBSD فقط
settings.advanced.wrapper_launcher=أمر التغليف
Expand Down
2 changes: 1 addition & 1 deletion HMCL/src/main/resources/assets/lang/I18N_de.properties
Original file line number Diff line number Diff line change
Expand Up @@ -1475,7 +1475,7 @@ settings.advanced.renderer.zink.desc=OpenGL-Renderer basierend auf Vulkan
settings.advanced.server_ip=Serveradresse
settings.advanced.server_ip.prompt=Nach Spielstart automatisch beitreten
settings.advanced.unsupported_system_options=Für das aktuelle System nicht zutreffende Einstellungen
settings.advanced.use_native_glfw=System-GLFW verwenden
settings.advanced.use_native_glfw_or_sdl=System-GLFW / SDL verwenden
settings.advanced.use_native_openal=System-OpenAL verwenden
settings.advanced.linux_freebsd_only=Nur Linux/FreeBSD
settings.advanced.windows_only=Nur Windows
Expand Down
2 changes: 1 addition & 1 deletion HMCL/src/main/resources/assets/lang/I18N_es.properties
Original file line number Diff line number Diff line change
Expand Up @@ -1242,7 +1242,7 @@ settings.advanced.renderer.zink=Mesa Zink
settings.advanced.server_ip=Dirección del servidor
settings.advanced.server_ip.prompt=Entrar automáticamente después de ejecutar el juego
settings.advanced.unsupported_system_options=Configuración no aplicable al sistema actual
settings.advanced.use_native_glfw=Utilizar GLFW nativo
settings.advanced.use_native_glfw_or_sdl=Utilizar GLFW / SDL nativo
settings.advanced.use_native_openal=Utilizar OpenAL nativo
settings.advanced.linux_freebsd_only=Sólo Linux/FreeBSD
settings.advanced.wrapper_launcher=Comando Wrapper
Expand Down
2 changes: 1 addition & 1 deletion HMCL/src/main/resources/assets/lang/I18N_ja.properties
Original file line number Diff line number Diff line change
Expand Up @@ -790,7 +790,7 @@ settings.advanced.renderer.zink=Mesa Zink
settings.advanced.server_ip=サーバーアドレス
settings.advanced.server_ip.prompt=ゲームの起動時にサーバーに参加する
settings.advanced.unsupported_system_options=サポートされていないシステムオプション
settings.advanced.use_native_glfw=システムGLFWを使用する
settings.advanced.use_native_glfw_or_sdl=システムGLFW / SDLを使用する
settings.advanced.use_native_openal=システムOpenALを使用する
settings.advanced.linux_freebsd_only=Linux/FreeBSDのみ
settings.advanced.wrapper_launcher=パッキングオーダー
Expand Down
2 changes: 1 addition & 1 deletion HMCL/src/main/resources/assets/lang/I18N_lzh.properties
Original file line number Diff line number Diff line change
Expand Up @@ -1074,7 +1074,7 @@ settings.advanced.renderer.zink=Mesa Zink
settings.advanced.server_ip=伺服器之址
settings.advanced.server_ip.prompt=本之址,啟訖徑入是伺服器
settings.advanced.unsupported_system_options=不逮今之械網所選
settings.advanced.use_native_glfw=用 GLFW
settings.advanced.use_native_glfw_or_sdl=用 GLFW / SDL
settings.advanced.use_native_openal=用開聲庫
settings.advanced.linux_freebsd_only=惟磷若/FreeBSD
settings.advanced.wrapper_launcher=包裝之令
Expand Down
2 changes: 1 addition & 1 deletion HMCL/src/main/resources/assets/lang/I18N_ru.properties
Original file line number Diff line number Diff line change
Expand Up @@ -1234,7 +1234,7 @@ settings.advanced.renderer.zink=Mesa Zink
settings.advanced.server_ip=Адрес сервера
settings.advanced.server_ip.prompt=Присоединяться к серверу при запуске игры
settings.advanced.unsupported_system_options=Настройки, не применимые к текущей системе
settings.advanced.use_native_glfw=Использовать системный GLFW
settings.advanced.use_native_glfw_or_sdl=Использовать системный GLFW / SDL
settings.advanced.use_native_openal=Использовать системный OpenAL
settings.advanced.linux_freebsd_only=Только для Linux/FreeBSD
settings.advanced.wrapper_launcher=Команда-оболочка
Expand Down
2 changes: 1 addition & 1 deletion HMCL/src/main/resources/assets/lang/I18N_uk.properties
Original file line number Diff line number Diff line change
Expand Up @@ -1443,7 +1443,7 @@ settings.advanced.renderer.zink.desc=Рендерер OpenGL на базі Vulka
settings.advanced.server_ip=Адреса сервера
settings.advanced.server_ip.prompt=Автоматично приєднатися після запуску гри
settings.advanced.unsupported_system_options=Налаштування, що не застосовуються до поточної системи
settings.advanced.use_native_glfw=Використовувати системний GLFW
settings.advanced.use_native_glfw_or_sdl=Використовувати системний GLFW / SDL
settings.advanced.use_native_openal=Використовувати системний OpenAL
settings.advanced.linux_freebsd_only=Лише Linux/FreeBSD
settings.advanced.windows_only=Тільки для Windows
Expand Down
3 changes: 2 additions & 1 deletion HMCL/src/main/resources/assets/lang/I18N_zh.properties
Original file line number Diff line number Diff line change
Expand Up @@ -1283,8 +1283,9 @@ settings.advanced.renderer.zink.desc=基於 Vulkan 的 OpenGL 繪製器
settings.advanced.server_ip=伺服器位址
settings.advanced.server_ip.prompt=預設,啟動遊戲後直接進入對應伺服器
settings.advanced.unsupported_system_options=不適用於目前系統的選項
settings.advanced.use_native_glfw=使用系統 GLFW
settings.advanced.use_native_glfw_or_sdl=使用系統 GLFW / SDL
settings.advanced.use_native_openal=使用系統 OpenAL
settings.advanced.use_native_sdl=使用系統 SDL
settings.advanced.linux_freebsd_only=僅限 Linux/FreeBSD
settings.advanced.windows_only=僅限 Windows
settings.advanced.wrapper_launcher=前置指令
Expand Down
3 changes: 2 additions & 1 deletion HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties
Original file line number Diff line number Diff line change
Expand Up @@ -1288,8 +1288,9 @@ settings.advanced.renderer.zink.desc=基于 Vulkan 的 OpenGL 渲染器
settings.advanced.server_ip=服务器地址
settings.advanced.server_ip.prompt=默认,启动游戏后可以直接进入对应服务器
settings.advanced.unsupported_system_options=不适用于当前系统的选项
settings.advanced.use_native_glfw=使用系统 GLFW
settings.advanced.use_native_glfw_or_sdl=使用系统 GLFW / SDL
settings.advanced.use_native_openal=使用系统 OpenAL
settings.advanced.use_native_sdl=使用系统 SDL
settings.advanced.linux_freebsd_only=仅 Linux/FreeBSD
settings.advanced.windows_only=仅 Windows
settings.advanced.wrapper_launcher=包装命令
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ public ProcessPriority getProcessPriority() {
return renderer;
}

public boolean isUseNativeGLFW() {
public boolean isUseNativeGLFWorSDL() {
return useNativeGLFW;
}

Expand Down Expand Up @@ -471,7 +471,7 @@ public Builder setRenderer(Renderer renderer) {
return this;
}

public Builder setUseNativeGLFW(boolean useNativeGLFW) {
public Builder setUseNativeGLFWorSDL(boolean useNativeGLFW) {
options.useNativeGLFW = useNativeGLFW;
return this;
}
Expand Down
14 changes: 10 additions & 4 deletions HMCLCore/src/main/java/org/jackhuang/hmcl/game/Library.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,10 @@
import org.jetbrains.annotations.NotNullByDefault;
import org.jetbrains.annotations.Nullable;

import java.util.*;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;

/// A class that describes a Minecraft dependency.
///
Expand Down Expand Up @@ -193,9 +196,12 @@ public boolean isNative() {
return true;
}

return downloads != null
&& downloads.classifiers() != null
&& downloads.classifiers().keySet().stream().anyMatch(s -> s.startsWith("native"));
if (downloads != null && downloads.classifiers() != null
&& downloads.classifiers().keySet().stream().anyMatch(s -> s.startsWith("native"))) {
return true;
}

return this.artifact().getClassifier() != null && this.artifact().getClassifier().startsWith("natives-");
}

public @Nullable LibraryDownloadInfo getRawDownloadInfo() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -467,9 +467,14 @@ public void decompressNatives(Path destination) throws NotDecompressingNativesEx
if (ext.equals("sha1") || ext.equals("git"))
return false;

if (options.isUseNativeGLFW() && FileUtils.getName(destFile).toLowerCase(Locale.ROOT).contains("glfw")) {
if (options.isUseNativeGLFWorSDL() && FileUtils.getName(destFile).toLowerCase(Locale.ROOT).contains("glfw")) {
return false;
}

if (options.isUseNativeGLFWorSDL() && FileUtils.getName(destFile).toLowerCase(Locale.ROOT).contains("sdl")) {
return false;
}

if (options.isUseNativeOpenAL() && FileUtils.getName(destFile).toLowerCase(Locale.ROOT).contains("openal")) {
return false;
}
Expand Down