feat: move custom commands settings to individual section.

This commit is contained in:
huanghongxun 2021-09-04 01:26:05 +08:00
parent 353d2794c9
commit cabba82118
5 changed files with 140 additions and 60 deletions

View File

@ -168,7 +168,6 @@ public class ComponentList extends Control {
node.setPadding(new Insets(8, 0, 0, 0)); node.setPadding(new Insets(8, 0, 0, 0));
{ {
Label advanced = new Label(title); Label advanced = new Label(title);
advanced.setStyle("-fx-text-fill: #616161");
node.getChildren().setAll(advanced); node.getChildren().setAll(advanced);
} }
return node; return node;

View File

@ -22,9 +22,9 @@ import javafx.application.Platform;
import javafx.beans.InvalidationListener; import javafx.beans.InvalidationListener;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
import javafx.beans.property.*; import javafx.beans.property.*;
import javafx.geometry.HPos;
import javafx.geometry.Insets; import javafx.geometry.Insets;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.scene.Node;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane; import javafx.scene.control.ScrollPane;
import javafx.scene.image.Image; import javafx.scene.image.Image;
@ -82,7 +82,6 @@ public final class VersionSettingsPage extends StackPane implements DecoratorPag
private final JFXTextField txtWrapper; private final JFXTextField txtWrapper;
private final JFXTextField txtPrecallingCommand; private final JFXTextField txtPrecallingCommand;
private final JFXTextField txtServerIP; private final JFXTextField txtServerIP;
private final ComponentList advancedSettingsPane;
private final ComponentList componentList; private final ComponentList componentList;
private final ComponentList iconPickerItemWrapper; private final ComponentList iconPickerItemWrapper;
private final JFXComboBox<LauncherVisibility> cboLauncherVisibility; private final JFXComboBox<LauncherVisibility> cboLauncherVisibility;
@ -192,7 +191,7 @@ public final class VersionSettingsPage extends StackPane implements DecoratorPag
JFXSlider slider = new JFXSlider(0, 1, 0); JFXSlider slider = new JFXSlider(0, 1, 0);
HBox.setMargin(slider, new Insets(0, 0, 0, 8)); HBox.setMargin(slider, new Insets(0, 0, 0, 8));
HBox.setHgrow(slider, Priority.ALWAYS); HBox.setHgrow(slider, Priority.ALWAYS);
slider.setValueFactory(self -> Bindings.createStringBinding(() -> (int)(self.getValue() * 100) + "%", self.valueProperty())); slider.setValueFactory(self -> Bindings.createStringBinding(() -> (int) (self.getValue() * 100) + "%", self.valueProperty()));
AtomicBoolean changedByTextField = new AtomicBoolean(false); AtomicBoolean changedByTextField = new AtomicBoolean(false);
FXUtils.onChangeAndOperate(maxMemoryProperty, maxMemory -> { FXUtils.onChangeAndOperate(maxMemoryProperty, maxMemory -> {
changedByTextField.set(true); changedByTextField.set(true);
@ -201,7 +200,7 @@ public final class VersionSettingsPage extends StackPane implements DecoratorPag
}); });
slider.valueProperty().addListener((value, oldVal, newVal) -> { slider.valueProperty().addListener((value, oldVal, newVal) -> {
if (changedByTextField.get()) return; if (changedByTextField.get()) return;
maxMemoryProperty.set((int)(value.getValue().doubleValue() * OperatingSystem.TOTAL_MEMORY)); maxMemoryProperty.set((int) (value.getValue().doubleValue() * OperatingSystem.TOTAL_MEMORY));
}); });
JFXTextField txtMaxMemory = new JFXTextField(); JFXTextField txtMaxMemory = new JFXTextField();
@ -231,7 +230,7 @@ public final class VersionSettingsPage extends StackPane implements DecoratorPag
allocateMemory.maxWidthProperty().bind(Bindings.createDoubleBinding(() -> allocateMemory.maxWidthProperty().bind(Bindings.createDoubleBinding(() ->
progressBarPane.getWidth() * progressBarPane.getWidth() *
Math.min(1.0, Math.min(1.0,
(double)(HMCLGameRepository.getAllocatedMemory(maxMemoryProperty.get() * 1024L * 1024L, memoryStatusProperty.get().getAvailable(), chkAutoAllocate.isSelected()) (double) (HMCLGameRepository.getAllocatedMemory(maxMemoryProperty.get() * 1024L * 1024L, memoryStatusProperty.get().getAvailable(), chkAutoAllocate.isSelected())
+ memoryStatusProperty.get().getUsed()) / memoryStatusProperty.get().getTotal()), progressBarPane.widthProperty(), + memoryStatusProperty.get().getUsed()) / memoryStatusProperty.get().getTotal()), progressBarPane.widthProperty(),
maxMemoryProperty, memoryStatusProperty, chkAutoAllocate.selectedProperty())); maxMemoryProperty, memoryStatusProperty, chkAutoAllocate.selectedProperty()));
@ -331,14 +330,6 @@ public final class VersionSettingsPage extends StackPane implements DecoratorPag
FXUtils.setLimitHeight(chkShowLogs, 20); FXUtils.setLimitHeight(chkShowLogs, 20);
} }
componentList.getContent().setAll(javaItem, gameDirItem, maxMemoryPane, launcherVisibilityPane, dimensionPane, showLogsPane);
}
Node advancedHintPane = ComponentList.createComponentListTitle(i18n("settings.advanced"));
advancedSettingsPane = new ComponentList();
advancedSettingsPane.setDepth(1);
{
BorderPane processPriorityPane = new BorderPane(); BorderPane processPriorityPane = new BorderPane();
{ {
Label label = new Label(i18n("settings.advanced.process_priority")); Label label = new Label(i18n("settings.advanced.process_priority"));
@ -351,44 +342,99 @@ public final class VersionSettingsPage extends StackPane implements DecoratorPag
FXUtils.setLimitWidth(cboProcessPriority, 300); FXUtils.setLimitWidth(cboProcessPriority, 300);
} }
txtJVMArgs = new JFXTextField(); GridPane serverPane = new GridPane();
txtJVMArgs.setLabelFloat(true); {
txtJVMArgs.setPromptText(i18n("settings.advanced.jvm_args")); ColumnConstraints title = new ColumnConstraints();
txtJVMArgs.getStyleClass().add("fit-width"); ColumnConstraints value = new ColumnConstraints();
StackPane.setMargin(txtJVMArgs, new Insets(0, 0, 8, 0)); value.setFillWidth(true);
value.setHgrow(Priority.ALWAYS);
txtGameArgs = new JFXTextField(); value.setHalignment(HPos.RIGHT);
txtGameArgs.setLabelFloat(true); serverPane.setHgap(16);
txtGameArgs.setPromptText(i18n("settings.advanced.minecraft_arguments")); serverPane.setVgap(8);
txtGameArgs.getStyleClass().add("fit-width"); serverPane.getColumnConstraints().setAll(title, value);
StackPane.setMargin(txtGameArgs, new Insets(0, 0, 8, 0));
txtMetaspace = new JFXTextField();
txtMetaspace.setLabelFloat(true);
txtMetaspace.setPromptText(i18n("settings.advanced.java_permanent_generation_space"));
txtMetaspace.getStyleClass().add("fit-width");
StackPane.setMargin(txtMetaspace, new Insets(0, 0, 8, 0));
FXUtils.setValidateWhileTextChanged(txtMetaspace, true);
txtMetaspace.setValidators(new NumberValidator(i18n("input.number"), true));
txtWrapper = new JFXTextField();
txtWrapper.setLabelFloat(true);
txtWrapper.setPromptText(i18n("settings.advanced.wrapper_launcher"));
txtWrapper.getStyleClass().add("fit-width");
StackPane.setMargin(txtWrapper, new Insets(0, 0, 8, 0));
txtPrecallingCommand = new JFXTextField();
txtPrecallingCommand.setLabelFloat(true);
txtPrecallingCommand.setPromptText(i18n("settings.advanced.precall_command"));
txtPrecallingCommand.getStyleClass().add("fit-width");
StackPane.setMargin(txtPrecallingCommand, new Insets(0, 0, 8, 0));
txtServerIP = new JFXTextField(); txtServerIP = new JFXTextField();
txtServerIP.setLabelFloat(true); txtServerIP.setLabelFloat(true);
txtServerIP.setPromptText(i18n("settings.advanced.server_ip")); txtServerIP.setPromptText(i18n("settings.advanced.server_ip.prompt"));
txtServerIP.getStyleClass().add("fit-width"); txtServerIP.getStyleClass().add("fit-width");
StackPane.setMargin(txtServerIP, new Insets(0, 0, 8, 0)); FXUtils.setLimitWidth(txtServerIP, 300);
serverPane.addRow(0, new Label(i18n("settings.advanced.server_ip")), txtServerIP);
}
componentList.getContent().setAll(javaItem, gameDirItem, maxMemoryPane, launcherVisibilityPane, dimensionPane, showLogsPane, processPriorityPane, serverPane);
}
HBox advancedHintPane = new HBox();
advancedHintPane.setAlignment(Pos.CENTER);
advancedHintPane.setPadding(new Insets(16, 0, 8, 0));
{
Label advanced = new Label(i18n("settings.advanced"));
advanced.setStyle("-fx-font-size: 12px;");
advancedHintPane.getChildren().setAll(advanced);
}
ComponentList customCommandsPane = new ComponentList();
customCommandsPane.disableProperty().bind(chkEnableSpecificSettings.selectedProperty().not());
{
GridPane pane = new GridPane();
ColumnConstraints title = new ColumnConstraints();
ColumnConstraints value = new ColumnConstraints();
value.setFillWidth(true);
value.setHgrow(Priority.ALWAYS);
pane.setHgap(16);
pane.setVgap(8);
pane.getColumnConstraints().setAll(title, value);
txtGameArgs = new JFXTextField();
txtGameArgs.setLabelFloat(true);
txtGameArgs.setPromptText(i18n("settings.advanced.minecraft_arguments.prompt"));
txtGameArgs.getStyleClass().add("fit-width");
pane.addRow(0, new Label(i18n("settings.advanced.minecraft_arguments")), txtGameArgs);
txtPrecallingCommand = new JFXTextField();
txtPrecallingCommand.setPromptText(i18n("settings.advanced.precall_command.prompt"));
txtPrecallingCommand.getStyleClass().add("fit-width");
pane.addRow(1, new Label(i18n("settings.advanced.precall_command")), txtPrecallingCommand);
txtWrapper = new JFXTextField();
txtWrapper.setPromptText(i18n("settings.advanced.wrapper_launcher.prompt"));
txtWrapper.getStyleClass().add("fit-width");
pane.addRow(2, new Label(i18n("settings.advanced.wrapper_launcher")), txtWrapper);
customCommandsPane.getContent().setAll(pane);
}
ComponentList jvmPane = new ComponentList();
jvmPane.disableProperty().bind(chkEnableSpecificSettings.selectedProperty().not());
{
GridPane pane = new GridPane();
ColumnConstraints title = new ColumnConstraints();
ColumnConstraints value = new ColumnConstraints();
value.setFillWidth(true);
value.setHgrow(Priority.ALWAYS);
pane.setHgap(16);
pane.setVgap(8);
pane.getColumnConstraints().setAll(title, value);
txtJVMArgs = new JFXTextField();
txtJVMArgs.setLabelFloat(true);
txtJVMArgs.setPromptText(i18n("settings.advanced.jvm_args.prompt"));
txtJVMArgs.getStyleClass().add("fit-width");
pane.addRow(0, new Label(i18n("settings.advanced.jvm_args")), txtJVMArgs);
txtMetaspace = new JFXTextField();
txtMetaspace.setPromptText(i18n("settings.advanced.java_permanent_generation_space.prompt"));
txtMetaspace.getStyleClass().add("fit-width");
FXUtils.setValidateWhileTextChanged(txtMetaspace, true);
txtMetaspace.setValidators(new NumberValidator(i18n("input.number"), true));
pane.addRow(1, new Label(i18n("settings.advanced.java_permanent_generation_space")), txtMetaspace);
jvmPane.getContent().setAll(pane);
}
ComponentList workaroundPane = new ComponentList();
workaroundPane.disableProperty().bind(chkEnableSpecificSettings.selectedProperty().not());
{
nativesDirItem = new MultiFileItem<>(true); nativesDirItem = new MultiFileItem<>(true);
nativesDirItem.setTitle(i18n("settings.advanced.natives_directory")); nativesDirItem.setTitle(i18n("settings.advanced.natives_directory"));
nativesDirItem.setChooserTitle(i18n("settings.advanced.natives_directory.choose")); nativesDirItem.setChooserTitle(i18n("settings.advanced.natives_directory.choose"));
@ -456,10 +502,14 @@ public final class VersionSettingsPage extends StackPane implements DecoratorPag
FXUtils.setLimitHeight(chkUseNativeOpenAL, 20); FXUtils.setLimitHeight(chkUseNativeOpenAL, 20);
} }
advancedSettingsPane.getContent().setAll(processPriorityPane, txtJVMArgs, txtGameArgs, txtMetaspace, txtWrapper, txtPrecallingCommand, txtServerIP, nativesDirItem, noJVMArgsPane, noGameCheckPane, noJVMCheckPane, useNativeGLFWPane, useNativeOpenALPane); workaroundPane.getContent().setAll(nativesDirItem, noJVMArgsPane, noGameCheckPane, noJVMCheckPane, useNativeGLFWPane, useNativeOpenALPane);
} }
rootPane.getChildren().setAll(iconPickerItemWrapper, settingsTypePane, componentList, advancedHintPane, advancedSettingsPane); rootPane.getChildren().setAll(iconPickerItemWrapper, settingsTypePane, componentList,
advancedHintPane,
ComponentList.createComponentListTitle(i18n("settings.advanced.custom_commands")), customCommandsPane,
ComponentList.createComponentListTitle(i18n("settings.advanced.jvm")), jvmPane,
ComponentList.createComponentListTitle(i18n("settings.advanced.workaround")), workaroundPane);
initialize(); initialize();
@ -519,7 +569,6 @@ public final class VersionSettingsPage extends StackPane implements DecoratorPag
}); });
componentList.disableProperty().bind(chkEnableSpecificSettings.selectedProperty().not()); componentList.disableProperty().bind(chkEnableSpecificSettings.selectedProperty().not());
advancedSettingsPane.disableProperty().bind(chkEnableSpecificSettings.selectedProperty().not());
} }
@Override @Override

View File

@ -510,6 +510,8 @@ settings.advanced.dont_check_jvm_validity=Don't check whether JVM can launch the
settings.advanced.game_dir.default=Standard (.minecraft/) settings.advanced.game_dir.default=Standard (.minecraft/)
settings.advanced.game_dir.independent=Independent (.minecraft/versions/<version name>/, except for assets and libraries) settings.advanced.game_dir.independent=Independent (.minecraft/versions/<version name>/, except for assets and libraries)
settings.advanced.java_permanent_generation_space=PermGen Space/MB settings.advanced.java_permanent_generation_space=PermGen Space/MB
settings.advanced.java_permanent_generation_space.prompt=Metaspace on Java 8 and above, MB
settings.advanced.jvm=Java Virtual Machine Settings
settings.advanced.jvm_args=Java VM Arguments (overriding defaults) settings.advanced.jvm_args=Java VM Arguments (overriding defaults)
settings.advanced.launcher_visibility.close=Close the launcher when the game launched. settings.advanced.launcher_visibility.close=Close the launcher when the game launched.
settings.advanced.launcher_visibility.hide=Hide the launcher when the game launched. settings.advanced.launcher_visibility.hide=Hide the launcher when the game launched.
@ -521,7 +523,8 @@ settings.advanced.natives_directory=Local Library Path (LWJGL)
settings.advanced.natives_directory.choose=Choose Local Library Path settings.advanced.natives_directory.choose=Choose Local Library Path
settings.advanced.natives_directory.default=Standerd (.minecraft/versions/<version name>/natives/) settings.advanced.natives_directory.default=Standerd (.minecraft/versions/<version name>/natives/)
settings.advanced.no_jvm_args=No Default JVM Args settings.advanced.no_jvm_args=No Default JVM Args
settings.advanced.precall_command=Pre-Launch command (will be executed before game starts) settings.advanced.precall_command=Pre-launch command
settings.advanced.precall_command.prompt=Will be executed before game starts
settings.advanced.process_priority=Process Priority settings.advanced.process_priority=Process Priority
settings.advanced.process_priority.low=Low settings.advanced.process_priority.low=Low
settings.advanced.process_priority.below_normal=Below Normal settings.advanced.process_priority.below_normal=Below Normal
@ -529,9 +532,12 @@ settings.advanced.process_priority.normal=Normal
settings.advanced.process_priority.above_normal=Above Normal settings.advanced.process_priority.above_normal=Above Normal
settings.advanced.process_priority.high=High settings.advanced.process_priority.high=High
settings.advanced.server_ip=Server Address settings.advanced.server_ip=Server Address
settings.advanced.server_ip.prompt=Join server when game launched
settings.advanced.use_native_glfw=[Linux] Use system GLFW settings.advanced.use_native_glfw=[Linux] Use system GLFW
settings.advanced.use_native_openal=[Linux] Use system OpenAL settings.advanced.use_native_openal=[Linux] Use system OpenAL
settings.advanced.wrapper_launcher=Wrapper Launcher (i.e. optirun...) settings.advanced.workaround=Workarounds
settings.advanced.wrapper_launcher=Wrapper command
settings.advanced.wrapper_launcher.prompt=Allows launching using an extra wrapper program like 'optirun' on Linux.
settings.custom=Custom settings.custom=Custom

View File

@ -357,25 +357,42 @@ selector.custom=自訂
settings=遊戲設定 settings=遊戲設定
settings.advanced=進階設定 settings.advanced=進階設定
settings.advanced.custom_commands=自訂命令
settings.advanced.dont_check_game_completeness=不檢查遊戲完整性 settings.advanced.dont_check_game_completeness=不檢查遊戲完整性
settings.advanced.dont_check_jvm_validity=不檢查 JVM 與遊戲的相容性 settings.advanced.dont_check_jvm_validity=不檢查 JVM 與遊戲的相容性
settings.advanced.game_dir.default=預設(.minecraft/ settings.advanced.game_dir.default=預設(.minecraft/
settings.advanced.game_dir.independent=各版本獨立(.minecraft/versions/<版本名>/,除 assets、libraries settings.advanced.game_dir.independent=各版本獨立(.minecraft/versions/<版本名>/,除 assets、libraries
settings.advanced.java_permanent_generation_space=記憶體永久儲存區域(不必填寫,格式: MB settings.advanced.java_permanent_generation_space=記憶體永久儲存區域
settings.advanced.jvm_args=Java 虛擬機參數(不必填寫,覆蓋默認設置) settings.advanced.java_permanent_generation_space.prompt=格式: MB
settings.advanced.jvm=Java 虛擬機設定
settings.advanced.jvm_args=Java 虛擬機參數
settings.advanced.jvm_args.prompt=填寫此處可以覆蓋默認設定
settings.advanced.launcher_visibility.close=遊戲啟動後結束啟動器 settings.advanced.launcher_visibility.close=遊戲啟動後結束啟動器
settings.advanced.launcher_visibility.hide=遊戲啟動後隱藏啟動器 settings.advanced.launcher_visibility.hide=遊戲啟動後隱藏啟動器
settings.advanced.launcher_visibility.hide_and_reopen=隱藏啟動器並在遊戲結束後重新開啟 settings.advanced.launcher_visibility.hide_and_reopen=隱藏啟動器並在遊戲結束後重新開啟
settings.advanced.launcher_visibility.keep=不隱藏啟動器 settings.advanced.launcher_visibility.keep=不隱藏啟動器
settings.advanced.launcher_visible=啟動器可見性 settings.advanced.launcher_visible=啟動器可見性
settings.advanced.minecraft_arguments=Minecraft 額外參數(不必填寫) settings.advanced.minecraft_arguments=Minecraft 額外參數
settings.advanced.minecraft_arguments.prompt=默認
settings.advanced.natives_directory=本地庫路徑LWJGL settings.advanced.natives_directory=本地庫路徑LWJGL
settings.advanced.natives_directory.choose=選擇本地庫路徑 settings.advanced.natives_directory.choose=選擇本地庫路徑
settings.advanced.natives_directory.default=預設(.minecraft/versions/<版本名>/natives/ settings.advanced.natives_directory.default=預設(.minecraft/versions/<版本名>/natives/
settings.advanced.no_jvm_args=不使用預設的 JVM 參數 settings.advanced.no_jvm_args=不使用預設的 JVM 參數
settings.advanced.precall_command=啟動前執行指令(不必填寫,將在遊戲啟動前呼叫使用) settings.advanced.precall_command=啟動前執行指令
settings.advanced.server_ip=直接進入伺服器 IP 位址(不必填寫,啟動遊戲後直接進入對應伺服器) settings.advanced.precall_command.prompt=將在遊戲啟動前呼叫使用
settings.advanced.wrapper_launcher=前置指令(不必填寫,如 optirun settings.advanced.process_priority=進程優先度
settings.advanced.process_priority.low=低(節省遊戲占用資源,可能會造成遊戲卡頓)
settings.advanced.process_priority.below_normal=較低(節省遊戲占用資源,可能會造成遊戲卡頓)
settings.advanced.process_priority.normal=中(平衡)
settings.advanced.process_priority.above_normal=較高(優先保證遊戲運行,但可能會導致其他程序卡頓)
settings.advanced.process_priority.high=高(優先保證遊戲運行,但可能會導致其他程序卡頓)
settings.advanced.server_ip=伺服器位址
settings.advanced.server_ip.prompt=默認,啟動遊戲後直接進入對應伺服器
settings.advanced.use_native_glfw=[Linux] 使用系統 GLFW
settings.advanced.use_native_openal=[Linux] 使用系統 OpenAL
settings.advanced.workaround=除錯選項
settings.advanced.wrapper_launcher=前置指令
settings.advanced.wrapper_launcher.prompt=如填寫 optirun 後,啟動命令將從 "java ..." 變為 "optirun java ..."
settings.custom=自訂 settings.custom=自訂

View File

@ -518,33 +518,42 @@ selector.custom=自定义
settings=设置 settings=设置
settings.advanced=高级设置 settings.advanced=高级设置
settings.advanced.custom_commands=自定义命令
settings.advanced.dont_check_game_completeness=不检查游戏完整性 settings.advanced.dont_check_game_completeness=不检查游戏完整性
settings.advanced.dont_check_jvm_validity=不检查 JVM 与游戏的兼容性 settings.advanced.dont_check_jvm_validity=不检查 JVM 与游戏的兼容性
settings.advanced.game_dir.default=默认(.minecraft/ settings.advanced.game_dir.default=默认(.minecraft/
settings.advanced.game_dir.independent=各版本独立(.minecraft/versions/<版本名>/,除 assets、libraries settings.advanced.game_dir.independent=各版本独立(.minecraft/versions/<版本名>/,除 assets、libraries
settings.advanced.java_permanent_generation_space=内存永久保存区域(不必填写,单位 MB settings.advanced.java_permanent_generation_space=内存永久保存区域
settings.advanced.jvm_args=Java 虚拟机参数(不必填写,覆盖默认设置) settings.advanced.java_permanent_generation_space.prompt=单位 MB
settings.advanced.jvm=Java 虚拟机设置
settings.advanced.jvm_args=Java 虚拟机参数
settings.advanced.jvm_args.prompt=填写此处可以覆盖默认设置
settings.advanced.launcher_visibility.close=游戏启动后结束启动器 settings.advanced.launcher_visibility.close=游戏启动后结束启动器
settings.advanced.launcher_visibility.hide=游戏启动后隐藏启动器 settings.advanced.launcher_visibility.hide=游戏启动后隐藏启动器
settings.advanced.launcher_visibility.hide_and_reopen=隐藏启动器并在游戏结束后重新打开 settings.advanced.launcher_visibility.hide_and_reopen=隐藏启动器并在游戏结束后重新打开
settings.advanced.launcher_visibility.keep=保持启动器可见 settings.advanced.launcher_visibility.keep=保持启动器可见
settings.advanced.launcher_visible=启动器可见性 settings.advanced.launcher_visible=启动器可见性
settings.advanced.minecraft_arguments=Minecraft 额外参数(不必填写) settings.advanced.minecraft_arguments=游戏参数
settings.advanced.minecraft_arguments.prompt=默认
settings.advanced.natives_directory=本地库路径LWJGL settings.advanced.natives_directory=本地库路径LWJGL
settings.advanced.natives_directory.choose=选择本地库路径 settings.advanced.natives_directory.choose=选择本地库路径
settings.advanced.natives_directory.default=预设(.minecraft/versions/<版本名>/natives/ settings.advanced.natives_directory.default=预设(.minecraft/versions/<版本名>/natives/
settings.advanced.no_jvm_args=不添加默认的 JVM 参数 settings.advanced.no_jvm_args=不添加默认的 JVM 参数
settings.advanced.precall_command=启动前执行命令(不必填写,将在游戏启动前调用) settings.advanced.precall_command=启动前执行命令
settings.advanced.precall_command.prompt=将在游戏启动前调用
settings.advanced.process_priority=进程优先级 settings.advanced.process_priority=进程优先级
settings.advanced.process_priority.low=低(节省游戏占用资源,可能会造成游戏卡顿) settings.advanced.process_priority.low=低(节省游戏占用资源,可能会造成游戏卡顿)
settings.advanced.process_priority.below_normal=较低(节省游戏占用资源,可能会造成游戏卡顿) settings.advanced.process_priority.below_normal=较低(节省游戏占用资源,可能会造成游戏卡顿)
settings.advanced.process_priority.normal=中(平衡) settings.advanced.process_priority.normal=中(平衡)
settings.advanced.process_priority.above_normal=较高(优先保证游戏运行,但可能会导致其他程序卡顿) settings.advanced.process_priority.above_normal=较高(优先保证游戏运行,但可能会导致其他程序卡顿)
settings.advanced.process_priority.high=高(优先保证游戏运行,但可能会导致其他程序卡顿) settings.advanced.process_priority.high=高(优先保证游戏运行,但可能会导致其他程序卡顿)
settings.advanced.server_ip=直入服务器 IP 地址(不必填写,启动游戏后直接进入对应服务器) settings.advanced.server_ip=服务器地址
settings.advanced.server_ip.prompt=默认,启动游戏后可以直接进入对应服务器
settings.advanced.use_native_glfw=[Linux] 使用系统 GLFW settings.advanced.use_native_glfw=[Linux] 使用系统 GLFW
settings.advanced.use_native_openal=[Linux] 使用系统 OpenAL settings.advanced.use_native_openal=[Linux] 使用系统 OpenAL
settings.advanced.wrapper_launcher=前置指令(不必填写,如 optirun settings.advanced.workaround=调试选项
settings.advanced.wrapper_launcher=包装命令
settings.advanced.wrapper_launcher.prompt=如填写 optirun 后,启动命令将从 "java ..." 变为 "optirun java ..."
settings.custom=自定义 settings.custom=自定义