diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/EnumBackgroundImage.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/EnumBackgroundImage.java index f5b54292c..0192759e1 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/EnumBackgroundImage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/EnumBackgroundImage.java @@ -21,5 +21,6 @@ public enum EnumBackgroundImage { DEFAULT, CUSTOM, CLASSIC, - NETWORK + NETWORK, + TRANSLUCENT } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorController.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorController.java index 39e343584..1009a2cdd 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorController.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorController.java @@ -24,11 +24,13 @@ import javafx.beans.binding.Bindings; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.event.EventHandler; +import javafx.geometry.Insets; import javafx.scene.Node; import javafx.scene.image.Image; import javafx.scene.input.DragEvent; import javafx.scene.input.KeyEvent; import javafx.scene.layout.*; +import javafx.scene.paint.Color; import javafx.stage.Stage; import org.jackhuang.hmcl.Launcher; import org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorDnD; @@ -43,6 +45,7 @@ import org.jackhuang.hmcl.ui.construct.Navigator; import org.jackhuang.hmcl.ui.construct.StackContainerPane; import org.jackhuang.hmcl.ui.wizard.Refreshable; import org.jackhuang.hmcl.ui.wizard.WizardProvider; +import org.jackhuang.hmcl.util.io.NetworkUtils; import java.io.IOException; import java.nio.file.Files; @@ -140,9 +143,15 @@ public class DecoratorController { .orElse(null); } if (config().getBackgroundImageType() == EnumBackgroundImage.NETWORK) { - image = new Image(config().getBackgroundImageUrl(), true); + if (!NetworkUtils.isURL(config().getBackgroundImageUrl())) { + image = loadDefaultBackgroundImage(); + } else { + image = new Image(config().getBackgroundImageUrl(), true); + } } else if (config().getBackgroundImageType() == EnumBackgroundImage.CLASSIC) { image = newImage("/assets/img/background-classic.jpg"); + } else if (config().getBackgroundImageType() == EnumBackgroundImage.TRANSLUCENT) { + return new Background(new BackgroundFill(new Color(1, 1, 1, 0.5), CornerRadii.EMPTY, Insets.EMPTY)); } if (image == null) { image = loadDefaultBackgroundImage(); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/PersonalizationPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/PersonalizationPage.java index 6a0b18569..71f8ed3c3 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/PersonalizationPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/PersonalizationPage.java @@ -102,6 +102,7 @@ public class PersonalizationPage extends StackPane { backgroundItem.loadChildren(Arrays.asList( new MultiFileItem.Option<>(i18n("launcher.background.default"), EnumBackgroundImage.DEFAULT), new MultiFileItem.Option<>(i18n("launcher.background.classic"), EnumBackgroundImage.CLASSIC), + new MultiFileItem.Option<>(i18n("launcher.background.translucent"), EnumBackgroundImage.TRANSLUCENT), new MultiFileItem.FileOption<>(i18n("settings.custom"), EnumBackgroundImage.CUSTOM) .setChooserTitle(i18n("launcher.background.choose")) .bindBidirectional(config().backgroundImageProperty()), diff --git a/HMCL/src/main/resources/assets/lang/I18N.properties b/HMCL/src/main/resources/assets/lang/I18N.properties index 7f2b07c86..00d34c26b 100644 --- a/HMCL/src/main/resources/assets/lang/I18N.properties +++ b/HMCL/src/main/resources/assets/lang/I18N.properties @@ -490,6 +490,7 @@ launcher.background.classic=Classic launcher.background.choose=Choose a background image file launcher.background.default=Standard launcher.background.network=Network +launcher.background.translucent=Translucent launcher.cache_directory=Directory for caching launcher.cache_directory.clean=Clear launcher.cache_directory.choose=Choose the directory for caching diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh.properties b/HMCL/src/main/resources/assets/lang/I18N_zh.properties index fe8079733..f41c581ab 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh.properties @@ -490,6 +490,7 @@ launcher.background.choose=選擇背景路徑 launcher.background.classic=經典 launcher.background.default=預設(自動尋找啟動器同目錄下的 background.png/jpg 及 bg 資料夾內的圖片) launcher.background.network=網路 +launcher.background.translucent=半透明 launcher.cache_directory=檔案下載快取目錄 launcher.cache_directory.clean=清理 launcher.cache_directory.choose=選擇檔案下載快取目錄 diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties index 940f21555..ea9e41e12 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties @@ -490,6 +490,7 @@ launcher.background.choose=选择背景路径 launcher.background.classic=经典 launcher.background.default=默认(自动检索启动器同目录下的 background.png/jpg 及 bg 文件夹内的图片) launcher.background.network=网络 +launcher.background.translucent=半透明 launcher.cache_directory=文件下载缓存目录 launcher.cache_directory.clean=清理 launcher.cache_directory.choose=选择文件下载缓存目录