feat(ui): title opacity setting.
This commit is contained in:
@@ -158,6 +158,9 @@ public final class Config implements Cloneable, Observable {
|
|||||||
@SerializedName("logLines")
|
@SerializedName("logLines")
|
||||||
private IntegerProperty logLines = new SimpleIntegerProperty(100);
|
private IntegerProperty logLines = new SimpleIntegerProperty(100);
|
||||||
|
|
||||||
|
@SerializedName("titleTransparent")
|
||||||
|
private BooleanProperty titleTransparent = new SimpleBooleanProperty(false);
|
||||||
|
|
||||||
@SerializedName("authlibInjectorServers")
|
@SerializedName("authlibInjectorServers")
|
||||||
private ObservableList<AuthlibInjectorServer> authlibInjectorServers = FXCollections.observableArrayList(server -> new Observable[] { server });
|
private ObservableList<AuthlibInjectorServer> authlibInjectorServers = FXCollections.observableArrayList(server -> new Observable[] { server });
|
||||||
|
|
||||||
@@ -581,4 +584,15 @@ public final class Config implements Cloneable, Observable {
|
|||||||
return preferredLoginType;
|
return preferredLoginType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isTitleTransparent() {
|
||||||
|
return titleTransparent.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public BooleanProperty titleTransparentProperty() {
|
||||||
|
return titleTransparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTitleTransparent(boolean titleTransparent) {
|
||||||
|
this.titleTransparent.set(titleTransparent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,14 +45,14 @@ public class OptionToggleButton extends StackPane {
|
|||||||
getChildren().setAll(container);
|
getChildren().setAll(container);
|
||||||
|
|
||||||
VBox left = new VBox();
|
VBox left = new VBox();
|
||||||
|
left.setMouseTransparent(true);
|
||||||
Label titleLabel = new Label();
|
Label titleLabel = new Label();
|
||||||
titleLabel.setMouseTransparent(true);
|
|
||||||
titleLabel.textProperty().bind(title);
|
titleLabel.textProperty().bind(title);
|
||||||
Label subtitleLabel = new Label();
|
Label subtitleLabel = new Label();
|
||||||
subtitleLabel.setMouseTransparent(true);
|
subtitleLabel.setMouseTransparent(true);
|
||||||
subtitleLabel.textProperty().bind(subtitle);
|
subtitleLabel.textProperty().bind(subtitle);
|
||||||
pane.setLeft(left);
|
pane.setLeft(left);
|
||||||
BorderPane.setAlignment(left, Pos.CENTER_LEFT);
|
left.setAlignment(Pos.CENTER_LEFT);
|
||||||
|
|
||||||
JFXToggleButton toggleButton = new JFXToggleButton();
|
JFXToggleButton toggleButton = new JFXToggleButton();
|
||||||
pane.setRight(toggleButton);
|
pane.setRight(toggleButton);
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ public class Decorator extends Control {
|
|||||||
private final BooleanProperty canBack = new SimpleBooleanProperty(false);
|
private final BooleanProperty canBack = new SimpleBooleanProperty(false);
|
||||||
private final BooleanProperty canClose = new SimpleBooleanProperty(false);
|
private final BooleanProperty canClose = new SimpleBooleanProperty(false);
|
||||||
private final BooleanProperty showCloseAsHome = new SimpleBooleanProperty(false);
|
private final BooleanProperty showCloseAsHome = new SimpleBooleanProperty(false);
|
||||||
|
private final BooleanProperty titleTransparent = new SimpleBooleanProperty(false);
|
||||||
private final Stage primaryStage;
|
private final Stage primaryStage;
|
||||||
private Navigation.NavigationDirection navigationDirection = Navigation.NavigationDirection.START;
|
private Navigation.NavigationDirection navigationDirection = Navigation.NavigationDirection.START;
|
||||||
private StackPane drawerWrapper;
|
private StackPane drawerWrapper;
|
||||||
@@ -204,6 +205,18 @@ public class Decorator extends Control {
|
|||||||
this.dragging.set(dragging);
|
this.dragging.set(dragging);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isTitleTransparent() {
|
||||||
|
return titleTransparent.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public BooleanProperty titleTransparentProperty() {
|
||||||
|
return titleTransparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTitleTransparent(boolean titleTransparent) {
|
||||||
|
this.titleTransparent.set(titleTransparent);
|
||||||
|
}
|
||||||
|
|
||||||
public ObjectProperty<EventHandler<ActionEvent>> onBackNavButtonActionProperty() {
|
public ObjectProperty<EventHandler<ActionEvent>> onBackNavButtonActionProperty() {
|
||||||
return onBackNavButtonAction;
|
return onBackNavButtonAction;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ public class DecoratorController {
|
|||||||
public DecoratorController(Stage stage, Node mainPage) {
|
public DecoratorController(Stage stage, Node mainPage) {
|
||||||
decorator = new Decorator(stage);
|
decorator = new Decorator(stage);
|
||||||
decorator.setOnCloseButtonAction(Launcher::stopApplication);
|
decorator.setOnCloseButtonAction(Launcher::stopApplication);
|
||||||
|
decorator.titleTransparentProperty().bind(config().titleTransparentProperty());
|
||||||
|
|
||||||
navigator = new Navigator();
|
navigator = new Navigator();
|
||||||
navigator.setOnNavigated(this::onNavigated);
|
navigator.setOnNavigated(this::onNavigated);
|
||||||
|
|||||||
@@ -106,19 +106,17 @@ public class DecoratorSkin extends SkinBase<Decorator> {
|
|||||||
|
|
||||||
parent.getChildren().add(wrapper);
|
parent.getChildren().add(wrapper);
|
||||||
|
|
||||||
// center node with a animation layer at bottom, a container layer at middle and a "welcome" layer at top.
|
// center node with an animation layer at bottom, a container layer at middle and a "welcome" layer at top.
|
||||||
StackPane container = new StackPane();
|
StackPane container = new StackPane();
|
||||||
container.backgroundProperty().bind(skinnable.contentBackgroundProperty());
|
|
||||||
FXUtils.setOverflowHidden(container);
|
FXUtils.setOverflowHidden(container);
|
||||||
|
|
||||||
// animation layer at bottom
|
// animation layer at bottom
|
||||||
|
HBox drawerPane = new HBox();
|
||||||
{
|
{
|
||||||
HBox layer = new HBox();
|
|
||||||
leftPane = new StackPane();
|
leftPane = new StackPane();
|
||||||
leftPane.setPrefWidth(0);
|
leftPane.setPrefWidth(0);
|
||||||
leftPane.getStyleClass().add("jfx-decorator-drawer");
|
leftPane.getStyleClass().add("jfx-decorator-drawer");
|
||||||
layer.getChildren().setAll(leftPane);
|
drawerPane.getChildren().setAll(leftPane);
|
||||||
container.getChildren().add(layer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// content layer at middle
|
// content layer at middle
|
||||||
@@ -153,7 +151,26 @@ public class DecoratorSkin extends SkinBase<Decorator> {
|
|||||||
|
|
||||||
titleContainer = new StackPane();
|
titleContainer = new StackPane();
|
||||||
titleContainer.setPickOnBounds(false);
|
titleContainer.setPickOnBounds(false);
|
||||||
titleContainer.getStyleClass().addAll("jfx-tool-bar", "background");
|
titleContainer.getStyleClass().addAll("jfx-tool-bar");
|
||||||
|
|
||||||
|
FXUtils.onChangeAndOperate(skinnable.titleTransparentProperty(), titleTransparent -> {
|
||||||
|
if (titleTransparent) {
|
||||||
|
wrapper.backgroundProperty().bind(skinnable.contentBackgroundProperty());
|
||||||
|
container.backgroundProperty().unbind();
|
||||||
|
container.setBackground(null);
|
||||||
|
titleContainer.getStyleClass().remove("background");
|
||||||
|
container.getChildren().remove(drawerPane);
|
||||||
|
wrapper.getChildren().add(0, drawerPane);
|
||||||
|
} else {
|
||||||
|
container.backgroundProperty().bind(skinnable.contentBackgroundProperty());
|
||||||
|
wrapper.backgroundProperty().unbind();
|
||||||
|
wrapper.setBackground(null);
|
||||||
|
titleContainer.getStyleClass().add("background");
|
||||||
|
wrapper.getChildren().remove(drawerPane);
|
||||||
|
container.getChildren().add(0, drawerPane);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
control.capableDraggingWindow(titleContainer);
|
control.capableDraggingWindow(titleContainer);
|
||||||
|
|
||||||
BorderPane titleBar = new BorderPane();
|
BorderPane titleBar = new BorderPane();
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ public class DownloadPage extends BorderPane implements DecoratorPage {
|
|||||||
|
|
||||||
Profiles.registerVersionsListener(this::loadVersions);
|
Profiles.registerVersionsListener(this::loadVersions);
|
||||||
|
|
||||||
tab.getSelectionModel().select(newGameTab);
|
tab.select(newGameTab);
|
||||||
FXUtils.onChangeAndOperate(tab.getSelectionModel().selectedItemProperty(), newValue -> {
|
FXUtils.onChangeAndOperate(tab.getSelectionModel().selectedItemProperty(), newValue -> {
|
||||||
if (newValue.initializeIfNeeded()) {
|
if (newValue.initializeIfNeeded()) {
|
||||||
if (newValue.getNode() instanceof VersionPage.VersionLoadable) {
|
if (newValue.getNode() instanceof VersionPage.VersionLoadable) {
|
||||||
@@ -115,37 +115,37 @@ public class DownloadPage extends BorderPane implements DecoratorPage {
|
|||||||
item.setTitle(i18n("game"));
|
item.setTitle(i18n("game"));
|
||||||
item.setLeftGraphic(wrap(SVG::gamepad));
|
item.setLeftGraphic(wrap(SVG::gamepad));
|
||||||
item.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(newGameTab));
|
item.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(newGameTab));
|
||||||
item.setOnAction(e -> tab.getSelectionModel().select(newGameTab));
|
item.setOnAction(e -> tab.select(newGameTab));
|
||||||
})
|
})
|
||||||
.addNavigationDrawerItem(item -> {
|
.addNavigationDrawerItem(item -> {
|
||||||
item.setTitle(i18n("mods"));
|
item.setTitle(i18n("mods"));
|
||||||
item.setLeftGraphic(wrap(SVG::puzzle));
|
item.setLeftGraphic(wrap(SVG::puzzle));
|
||||||
item.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(modTab));
|
item.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(modTab));
|
||||||
item.setOnAction(e -> tab.getSelectionModel().select(modTab));
|
item.setOnAction(e -> tab.select(modTab));
|
||||||
})
|
})
|
||||||
.addNavigationDrawerItem(settingsItem -> {
|
.addNavigationDrawerItem(settingsItem -> {
|
||||||
settingsItem.setTitle(i18n("modpack"));
|
settingsItem.setTitle(i18n("modpack"));
|
||||||
settingsItem.setLeftGraphic(wrap(SVG::pack));
|
settingsItem.setLeftGraphic(wrap(SVG::pack));
|
||||||
settingsItem.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(modpackTab));
|
settingsItem.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(modpackTab));
|
||||||
settingsItem.setOnAction(e -> tab.getSelectionModel().select(modpackTab));
|
settingsItem.setOnAction(e -> tab.select(modpackTab));
|
||||||
})
|
})
|
||||||
.addNavigationDrawerItem(item -> {
|
.addNavigationDrawerItem(item -> {
|
||||||
item.setTitle(i18n("resourcepack"));
|
item.setTitle(i18n("resourcepack"));
|
||||||
item.setLeftGraphic(wrap(SVG::textureBox));
|
item.setLeftGraphic(wrap(SVG::textureBox));
|
||||||
item.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(resourcePackTab));
|
item.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(resourcePackTab));
|
||||||
item.setOnAction(e -> tab.getSelectionModel().select(resourcePackTab));
|
item.setOnAction(e -> tab.select(resourcePackTab));
|
||||||
})
|
})
|
||||||
// .addNavigationDrawerItem(item -> {
|
// .addNavigationDrawerItem(item -> {
|
||||||
// item.setTitle(i18n("download.curseforge.customization"));
|
// item.setTitle(i18n("download.curseforge.customization"));
|
||||||
// item.setLeftGraphic(wrap(SVG::script));
|
// item.setLeftGraphic(wrap(SVG::script));
|
||||||
// item.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(customizationTab));
|
// item.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(customizationTab));
|
||||||
// item.setOnAction(e -> tab.getSelectionModel().select(customizationTab));
|
// item.setOnAction(e -> tab.select(customizationTab));
|
||||||
// })
|
// })
|
||||||
.addNavigationDrawerItem(item -> {
|
.addNavigationDrawerItem(item -> {
|
||||||
item.setTitle(i18n("world"));
|
item.setTitle(i18n("world"));
|
||||||
item.setLeftGraphic(wrap(SVG::earth));
|
item.setLeftGraphic(wrap(SVG::earth));
|
||||||
item.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(worldTab));
|
item.activeProperty().bind(tab.getSelectionModel().selectedItemProperty().isEqualTo(worldTab));
|
||||||
item.setOnAction(e -> tab.getSelectionModel().select(worldTab));
|
item.setOnAction(e -> tab.select(worldTab));
|
||||||
});
|
});
|
||||||
FXUtils.setLimitWidth(sideBar, 200);
|
FXUtils.setLimitWidth(sideBar, 200);
|
||||||
setLeft(sideBar);
|
setLeft(sideBar);
|
||||||
@@ -212,6 +212,10 @@ public class DownloadPage extends BorderPane implements DecoratorPage {
|
|||||||
return state.getReadOnlyProperty();
|
return state.getReadOnlyProperty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void showGameDownloads() {
|
||||||
|
tab.select(newGameTab);
|
||||||
|
}
|
||||||
|
|
||||||
private class DownloadNavigator implements Navigation {
|
private class DownloadNavigator implements Navigation {
|
||||||
private final Map<String, Object> settings = new HashMap<>();
|
private final Map<String, Object> settings = new HashMap<>();
|
||||||
|
|
||||||
|
|||||||
@@ -147,9 +147,10 @@ public class FeedbackPage extends VBox implements PageAware {
|
|||||||
if (empty) return;
|
if (empty) return;
|
||||||
content.setTitle(feedback.getTitle());
|
content.setTitle(feedback.getTitle());
|
||||||
content.setSubtitle(feedback.getAuthor());
|
content.setSubtitle(feedback.getAuthor());
|
||||||
content.getTags().add("#" + feedback.getId());
|
content.getTags().setAll(
|
||||||
content.getTags().add(i18n("feedback.state." + feedback.getState().name().toLowerCase(Locale.US)));
|
"#" + feedback.getId(),
|
||||||
content.getTags().add(i18n("feedback.type." + feedback.getType().name().toLowerCase(Locale.US)));
|
i18n("feedback.state." + feedback.getState().name().toLowerCase(Locale.US)),
|
||||||
|
i18n("feedback.type." + feedback.getType().name().toLowerCase(Locale.US)));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
listView.setOnMouseClicked(e -> {
|
listView.setOnMouseClicked(e -> {
|
||||||
|
|||||||
@@ -59,10 +59,10 @@ public class PersonalizationPage extends StackPane {
|
|||||||
scrollPane.setFitToWidth(true);
|
scrollPane.setFitToWidth(true);
|
||||||
getChildren().setAll(scrollPane);
|
getChildren().setAll(scrollPane);
|
||||||
|
|
||||||
|
ComponentList themeList = new ComponentList();
|
||||||
{
|
{
|
||||||
ComponentList themeList = new ComponentList();
|
|
||||||
BorderPane themePane = new BorderPane();
|
BorderPane themePane = new BorderPane();
|
||||||
themeList.getContent().setAll(themePane);
|
themeList.getContent().add(themePane);
|
||||||
|
|
||||||
Label left = new Label(i18n("settings.launcher.theme"));
|
Label left = new Label(i18n("settings.launcher.theme"));
|
||||||
BorderPane.setAlignment(left, Pos.CENTER_LEFT);
|
BorderPane.setAlignment(left, Pos.CENTER_LEFT);
|
||||||
@@ -81,9 +81,14 @@ public class PersonalizationPage extends StackPane {
|
|||||||
});
|
});
|
||||||
themeColorPickerContainer.getChildren().setAll(picker);
|
themeColorPickerContainer.getChildren().setAll(picker);
|
||||||
Platform.runLater(() -> JFXDepthManager.setDepth(picker, 0));
|
Platform.runLater(() -> JFXDepthManager.setDepth(picker, 0));
|
||||||
|
|
||||||
content.getChildren().addAll(ComponentList.createComponentListTitle(i18n("settings.launcher.appearance")), themeList);
|
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
OptionToggleButton titleTransparentButton = new OptionToggleButton();
|
||||||
|
themeList.getContent().add(titleTransparentButton);
|
||||||
|
titleTransparentButton.selectedProperty().bindBidirectional(config().titleTransparentProperty());
|
||||||
|
titleTransparentButton.setTitle(i18n("settings.launcher.title_transparent"));
|
||||||
|
}
|
||||||
|
content.getChildren().addAll(ComponentList.createComponentListTitle(i18n("settings.launcher.appearance")), themeList);
|
||||||
|
|
||||||
{
|
{
|
||||||
ComponentList componentList = new ComponentList();
|
ComponentList componentList = new ComponentList();
|
||||||
|
|||||||
@@ -149,9 +149,6 @@ public class MultiplayerPageSkin extends SkinBase<MultiplayerPage> {
|
|||||||
scrollPane.setFitToHeight(true);
|
scrollPane.setFitToHeight(true);
|
||||||
root.setCenter(scrollPane);
|
root.setCenter(scrollPane);
|
||||||
|
|
||||||
HintPane hint = new HintPane(MessageDialogPane.MessageType.INFO);
|
|
||||||
hint.setText(i18n("multiplayer.hint"));
|
|
||||||
|
|
||||||
ComponentList roomPane = new ComponentList();
|
ComponentList roomPane = new ComponentList();
|
||||||
{
|
{
|
||||||
TransitionPane transitionPane = new TransitionPane();
|
TransitionPane transitionPane = new TransitionPane();
|
||||||
@@ -290,7 +287,6 @@ public class MultiplayerPageSkin extends SkinBase<MultiplayerPage> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
content.getChildren().setAll(
|
content.getChildren().setAll(
|
||||||
hint,
|
|
||||||
ComponentList.createComponentListTitle(i18n("multiplayer.session")),
|
ComponentList.createComponentListTitle(i18n("multiplayer.session")),
|
||||||
roomPane,
|
roomPane,
|
||||||
ComponentList.createComponentListTitle(i18n("multiplayer.nat")),
|
ComponentList.createComponentListTitle(i18n("multiplayer.nat")),
|
||||||
|
|||||||
@@ -168,7 +168,7 @@ public class GameListPage extends ListPageBase<GameListItem> implements Decorato
|
|||||||
.add(installModpackItem)
|
.add(installModpackItem)
|
||||||
.add(refreshItem)
|
.add(refreshItem)
|
||||||
.add(globalManageItem);
|
.add(globalManageItem);
|
||||||
FXUtils.setLimitHeight(bottomLeftCornerList, 40 * 3 + 12 * 2);
|
FXUtils.setLimitHeight(bottomLeftCornerList, 40 * 4 + 12 * 2);
|
||||||
left.setBottom(bottomLeftCornerList);
|
left.setBottom(bottomLeftCornerList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,6 @@ import org.jackhuang.hmcl.ui.construct.MessageDialogPane;
|
|||||||
import org.jackhuang.hmcl.ui.construct.PromptDialogPane;
|
import org.jackhuang.hmcl.ui.construct.PromptDialogPane;
|
||||||
import org.jackhuang.hmcl.ui.construct.Validator;
|
import org.jackhuang.hmcl.ui.construct.Validator;
|
||||||
import org.jackhuang.hmcl.ui.download.ModpackInstallWizardProvider;
|
import org.jackhuang.hmcl.ui.download.ModpackInstallWizardProvider;
|
||||||
import org.jackhuang.hmcl.ui.download.VanillaInstallWizardProvider;
|
|
||||||
import org.jackhuang.hmcl.ui.export.ExportWizardProvider;
|
import org.jackhuang.hmcl.ui.export.ExportWizardProvider;
|
||||||
import org.jackhuang.hmcl.util.Logging;
|
import org.jackhuang.hmcl.util.Logging;
|
||||||
import org.jackhuang.hmcl.util.StringUtils;
|
import org.jackhuang.hmcl.util.StringUtils;
|
||||||
@@ -64,10 +63,8 @@ public final class Versions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void addNewGame() {
|
public static void addNewGame() {
|
||||||
Profile profile = Profiles.getSelectedProfile();
|
Controllers.getDownloadPage().showGameDownloads();
|
||||||
if (profile.getRepository().isLoaded()) {
|
Controllers.navigate(Controllers.getDownloadPage());
|
||||||
Controllers.getDecorator().startWizard(new VanillaInstallWizardProvider(profile), i18n("install.new_game"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void importModpack() {
|
public static void importModpack() {
|
||||||
@@ -255,9 +252,6 @@ public final class Versions {
|
|||||||
public static void modifyGlobalSettings(Profile profile) {
|
public static void modifyGlobalSettings(Profile profile) {
|
||||||
Controllers.getSettingsPage().showGameSettings(profile);
|
Controllers.getSettingsPage().showGameSettings(profile);
|
||||||
Controllers.navigate(Controllers.getSettingsPage());
|
Controllers.navigate(Controllers.getSettingsPage());
|
||||||
// VersionSettingsPage page = new VersionSettingsPage();
|
|
||||||
// page.loadVersion(profile, null);
|
|
||||||
// Controllers.navigate(page);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void modifyGameSettings(Profile profile, String version) {
|
public static void modifyGameSettings(Profile profile, String version) {
|
||||||
|
|||||||
@@ -636,7 +636,7 @@ multiplayer.powered_by=Multiplayer service is provided by <a href="https://noin.
|
|||||||
multiplayer.report=Report
|
multiplayer.report=Report
|
||||||
multiplayer.relay=Relay Mode
|
multiplayer.relay=Relay Mode
|
||||||
multiplayer.relay.hint=For users who has a static token, and whose tested NAT type is bad-symmetric
|
multiplayer.relay.hint=For users who has a static token, and whose tested NAT type is bad-symmetric
|
||||||
multiplayer.session=Room
|
multiplayer.session=Session
|
||||||
multiplayer.session.name.format=%1$s's Room
|
multiplayer.session.name.format=%1$s's Room
|
||||||
multiplayer.session.name.motd=HMCL Multiplayer Session - %s
|
multiplayer.session.name.motd=HMCL Multiplayer Session - %s
|
||||||
multiplayer.session.close=Close Room
|
multiplayer.session.close=Close Room
|
||||||
@@ -761,7 +761,7 @@ settings.advanced.game_dir.independent=Independent (.minecraft/versions/<version
|
|||||||
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.java_permanent_generation_space.prompt=Metaspace on Java 8 and above, MB
|
||||||
settings.advanced.jvm=Java Virtual Machine Settings
|
settings.advanced.jvm=Java Virtual Machine Settings
|
||||||
settings.advanced.jvm_args=Java VM Arguments (overriding defaults)
|
settings.advanced.jvm_args=Java VM Arguments
|
||||||
settings.advanced.jvm_args.prompt=Fill in here to override the default settings
|
settings.advanced.jvm_args.prompt=Fill in here to override the default settings
|
||||||
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.
|
||||||
@@ -839,6 +839,7 @@ settings.launcher.proxy.port=Port
|
|||||||
settings.launcher.proxy.socks=Socks
|
settings.launcher.proxy.socks=Socks
|
||||||
settings.launcher.proxy.username=Account
|
settings.launcher.proxy.username=Account
|
||||||
settings.launcher.theme=Theme
|
settings.launcher.theme=Theme
|
||||||
|
settings.launcher.title_transparent=Title transparent
|
||||||
settings.launcher.version_list_source=Version List Source
|
settings.launcher.version_list_source=Version List Source
|
||||||
|
|
||||||
settings.memory=Game Memory
|
settings.memory=Game Memory
|
||||||
@@ -853,6 +854,7 @@ settings.physical_memory=Physical Memory Size
|
|||||||
settings.show_log=Show Logs
|
settings.show_log=Show Logs
|
||||||
settings.skin=Now changing skin of offline account is supported! Go to account page and change your skin now!
|
settings.skin=Now changing skin of offline account is supported! Go to account page and change your skin now!
|
||||||
settings.tabs.installers=Installers
|
settings.tabs.installers=Installers
|
||||||
|
settings.take_effect_after_restart=Take effect after restart
|
||||||
settings.type=Version setting type
|
settings.type=Version setting type
|
||||||
settings.type.global=Global game settings (all settings shared among games)
|
settings.type.global=Global game settings (all settings shared among games)
|
||||||
settings.type.global.manage=Global Game Settings
|
settings.type.global.manage=Global Game Settings
|
||||||
|
|||||||
@@ -838,6 +838,7 @@ settings.launcher.proxy.port=連線埠
|
|||||||
settings.launcher.proxy.socks=Socks
|
settings.launcher.proxy.socks=Socks
|
||||||
settings.launcher.proxy.username=帳戶
|
settings.launcher.proxy.username=帳戶
|
||||||
settings.launcher.theme=主題
|
settings.launcher.theme=主題
|
||||||
|
settings.launcher.title_transparent=標題欄透明
|
||||||
settings.launcher.version_list_source=版本列表來源
|
settings.launcher.version_list_source=版本列表來源
|
||||||
|
|
||||||
settings.memory=遊戲記憶體
|
settings.memory=遊戲記憶體
|
||||||
@@ -852,6 +853,7 @@ settings.physical_memory=實體記憶體大小
|
|||||||
settings.show_log=查看記錄
|
settings.show_log=查看記錄
|
||||||
settings.skin=現已支持離線帳戶更換皮膚,你可以到帳戶頁面更改離線帳戶的皮膚和披風(多人遊戲下其他玩家無法看到你的皮膚)
|
settings.skin=現已支持離線帳戶更換皮膚,你可以到帳戶頁面更改離線帳戶的皮膚和披風(多人遊戲下其他玩家無法看到你的皮膚)
|
||||||
settings.tabs.installers=自動安裝
|
settings.tabs.installers=自動安裝
|
||||||
|
settings.take_effect_after_restart=重啟後生效
|
||||||
settings.type=版本設定類型
|
settings.type=版本設定類型
|
||||||
settings.type.global=全域版本設定(使用該設定的版本共用一套設定)
|
settings.type.global=全域版本設定(使用該設定的版本共用一套設定)
|
||||||
settings.type.global.manage=全域遊戲設定
|
settings.type.global.manage=全域遊戲設定
|
||||||
|
|||||||
@@ -838,6 +838,7 @@ settings.launcher.proxy.port=端口
|
|||||||
settings.launcher.proxy.socks=Socks
|
settings.launcher.proxy.socks=Socks
|
||||||
settings.launcher.proxy.username=帐户
|
settings.launcher.proxy.username=帐户
|
||||||
settings.launcher.theme=主题
|
settings.launcher.theme=主题
|
||||||
|
settings.launcher.title_transparent=标题栏透明
|
||||||
settings.launcher.version_list_source=版本列表源
|
settings.launcher.version_list_source=版本列表源
|
||||||
|
|
||||||
settings.memory=游戏内存
|
settings.memory=游戏内存
|
||||||
@@ -852,6 +853,7 @@ settings.physical_memory=物理内存大小
|
|||||||
settings.show_log=查看日志
|
settings.show_log=查看日志
|
||||||
settings.skin=现已支持离线账户更换皮肤,你可以到账户页面更改离线账户的皮肤和披风(多人游戏下其他玩家无法看到你的皮肤)
|
settings.skin=现已支持离线账户更换皮肤,你可以到账户页面更改离线账户的皮肤和披风(多人游戏下其他玩家无法看到你的皮肤)
|
||||||
settings.tabs.installers=自动安装
|
settings.tabs.installers=自动安装
|
||||||
|
settings.take_effect_after_restart=重启后生效
|
||||||
settings.type=版本设置类型
|
settings.type=版本设置类型
|
||||||
settings.type.global=全局版本设置(使用该设置的版本共用一套设定)
|
settings.type.global=全局版本设置(使用该设置的版本共用一套设定)
|
||||||
settings.type.global.manage=全局游戏设置
|
settings.type.global.manage=全局游戏设置
|
||||||
|
|||||||
Reference in New Issue
Block a user