Skip to content

Commit 9d5f8a9

Browse files
GlavoCiiLu
andauthored
[release/3.6] 修复 LWJGL 路径显示错误的问题 (#4447)
#4192 Co-authored-by: 辞庐 <109708109+CiiLu@users.noreply.github.com>
1 parent fe2e963 commit 9d5f8a9

4 files changed

Lines changed: 27 additions & 4 deletions

File tree

HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/AdvancedVersionSettingPage.java

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,9 @@
1818
import org.jackhuang.hmcl.ui.construct.*;
1919
import org.jackhuang.hmcl.ui.decorator.DecoratorPage;
2020
import org.jackhuang.hmcl.util.platform.OperatingSystem;
21+
import org.jackhuang.hmcl.util.platform.Platform;
22+
import org.jetbrains.annotations.Nullable;
2123

22-
import java.nio.file.Paths;
2324
import java.util.Arrays;
2425
import java.util.Locale;
2526

@@ -52,7 +53,7 @@ public final class AdvancedVersionSettingPage extends StackPane implements Decor
5253
private final MultiFileItem.FileOption<NativesDirectoryType> nativesDirCustomOption;
5354
private final JFXComboBox<Renderer> cboRenderer;
5455

55-
public AdvancedVersionSettingPage(Profile profile, String versionId, VersionSetting versionSetting) {
56+
public AdvancedVersionSettingPage(Profile profile, @Nullable String versionId, VersionSetting versionSetting) {
5657
this.profile = profile;
5758
this.versionId = versionId;
5859
this.versionSetting = versionSetting;
@@ -239,8 +240,27 @@ void bindProperties() {
239240
useNativeOpenALPane.selectedProperty().bindBidirectional(versionSetting.useNativeOpenALProperty());
240241

241242
nativesDirItem.selectedDataProperty().bindBidirectional(versionSetting.nativesDirTypeProperty());
242-
nativesDirSublist.subtitleProperty().bind(Bindings.createStringBinding(() -> Paths.get(profile.getRepository().getRunDirectory(versionId).getAbsolutePath() + "/natives").normalize().toString(),
243-
versionSetting.nativesDirProperty(), versionSetting.nativesDirTypeProperty()));
243+
nativesDirSublist.subtitleProperty().bind(Bindings.createStringBinding(() -> {
244+
if (versionSetting.getNativesDirType() == NativesDirectoryType.VERSION_FOLDER) {
245+
String nativesDirName = "natives-" + Platform.SYSTEM_PLATFORM;
246+
if (versionId == null) {
247+
return String.format("%s/%s/%s",
248+
profile.getRepository().getBaseDirectory().toPath().resolve("versions").toAbsolutePath().normalize(),
249+
i18n("settings.advanced.natives_directory.default.version_id"),
250+
nativesDirName
251+
);
252+
} else {
253+
return profile.getRepository().getVersionRoot(versionId).toPath()
254+
.toAbsolutePath().normalize()
255+
.resolve(nativesDirName)
256+
.toString();
257+
}
258+
} else if (versionSetting.getNativesDirType() == NativesDirectoryType.CUSTOM) {
259+
return versionSetting.getNativesDir();
260+
} else {
261+
return null;
262+
}
263+
}, versionSetting.nativesDirProperty(), versionSetting.nativesDirTypeProperty()));
244264
}
245265

246266
void unbindProperties() {

HMCL/src/main/resources/assets/lang/I18N.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1269,6 +1269,7 @@ settings.advanced.natives_directory=Native Library Path
12691269
settings.advanced.natives_directory.choose=Choose the location of the desired native library
12701270
settings.advanced.natives_directory.custom=Custom
12711271
settings.advanced.natives_directory.default=Default
1272+
settings.advanced.natives_directory.default.version_id=<Version ID>
12721273
settings.advanced.natives_directory.hint=This option is intended only for users of Apple silicon or other not officially supported platforms. Please do not edit this option unless you know what you are doing.\n\
12731274
\n\
12741275
Before proceeding, please make sure all libraries (e.g. lwjgl.dll, libopenal.so) are provided in your desired directory.\n\

HMCL/src/main/resources/assets/lang/I18N_zh.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1064,6 +1064,7 @@ settings.advanced.natives_directory=本機庫路徑 (LWJGL)
10641064
settings.advanced.natives_directory.choose=選取本機庫路徑
10651065
settings.advanced.natives_directory.custom=自訂 (由你提供遊戲需要的本機庫)
10661066
settings.advanced.natives_directory.default=預設 (由啟動器提供遊戲本機庫)
1067+
settings.advanced.natives_directory.default.version_id=<版本 ID>
10671068
settings.advanced.natives_directory.hint=本選項提供給 Apple Silicon 等未受遊戲官方支援的平台來自訂遊戲本機庫。如果你不知道本選項的含義,請你不要修改本選項,否則會導致遊戲無法啟動。\n\n如果你要修改本選項,你需要保證自訂目錄下有遊戲所需的本機庫檔案,如 lwjgl.dll (liblwjgl.so), openal.dll (libopenal.so) 等檔案。啟動器不會幫你補全缺少的本機庫檔案。\n\n注意:建議指定的本機庫檔案路徑使用全英文字元,否則可能導致遊戲啟動失敗。
10681069
settings.advanced.no_jvm_args=不新增預設的 Java 虛擬機參數
10691070
settings.advanced.precall_command=遊戲啟動前執行指令

HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1074,6 +1074,7 @@ settings.advanced.natives_directory=本地库路径 (LWJGL)
10741074
settings.advanced.natives_directory.choose=选择本地库路径
10751075
settings.advanced.natives_directory.custom=自定义 (由你提供游戏需要的本地库)
10761076
settings.advanced.natives_directory.default=默认 (由启动器提供游戏本地库)
1077+
settings.advanced.natives_directory.default.version_id=<版本 ID>
10771078
settings.advanced.natives_directory.hint=本选项提供给 Apple Silicon 等未受游戏官方支持的平台来自定义游戏本地库。如果你不知道本选项的含义,请不要修改本选项,否则会导致游戏无法启动!\n\n如果你要修改本选项,你需要保证自定义文件夹下有游戏所需的本地库文件,如 lwjgl.dll (liblwjgl.so)、openal.dll (libopenal.so) 等文件。启动器不会帮你补全缺少的本地库文件!\n\n注意:指定的本地库文件路径建议只包含英文大小写字母、数字和下划线,否则可能会导致启动游戏失败。
10781079
settings.advanced.no_jvm_args=不添加默认的 Java 虚拟机参数
10791080
settings.advanced.precall_command=游戏启动前执行命令

0 commit comments

Comments
 (0)