From fdd8b1873076ccf07a3e543c9682f49bd06c0601 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=9E=E5=BA=90?= <109708109+Ciilu@users.noreply.github.com> Date: Sun, 15 Mar 2026 13:06:20 +0800 Subject: [PATCH] update --- .../ui/account/OfflineAccountSkinPane.java | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/OfflineAccountSkinPane.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/OfflineAccountSkinPane.java index 25467e7e15..88d53558a0 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/OfflineAccountSkinPane.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/OfflineAccountSkinPane.java @@ -21,6 +21,7 @@ import com.jfoenix.controls.JFXComboBox; import com.jfoenix.controls.JFXDialogLayout; import com.jfoenix.controls.JFXTextField; +import javafx.animation.PauseTransition; import javafx.application.Platform; import javafx.beans.InvalidationListener; import javafx.geometry.Insets; @@ -29,6 +30,7 @@ import javafx.scene.input.DragEvent; import javafx.scene.input.TransferMode; import javafx.scene.layout.*; +import javafx.util.Duration; import org.jackhuang.hmcl.auth.offline.OfflineAccount; import org.jackhuang.hmcl.auth.offline.Skin; import org.jackhuang.hmcl.auth.yggdrasil.TextureModel; @@ -135,7 +137,9 @@ public OfflineAccountSkinPane(OfflineAccount account) { capeSelector.setValue(account.getSkin().getLocalCapePath()); } - skinBinding = FXUtils.observeWeak(() -> { + PauseTransition pauseTransition = new PauseTransition(Duration.seconds(1)); + + Runnable loadSkin = () -> { getSkin().load(account.getUsername()) .whenComplete(Schedulers.javafx(), (result, exception) -> { if (exception != null) { @@ -157,6 +161,23 @@ public OfflineAccountSkinPane(OfflineAccount account) { result.getCape() != null ? result.getCape().getImage() : null); } }).start(); + }; + + pauseTransition.setOnFinished(e -> loadSkin.run()); + + skinBinding = FXUtils.observeWeak(() -> { + Skin.Type selectedType = skinItem.getSelectedData(); + + if (selectedType == Skin.Type.CUSTOM_SKIN_LOADER_API) { + if (!cslApiField.validate()) { + pauseTransition.stop(); + return; + } + pauseTransition.playFromStart(); + } else { + pauseTransition.stop(); + loadSkin.run(); + } }, skinItem.selectedDataProperty(), cslApiField.textProperty(), modelCombobox.valueProperty(), skinSelector.valueProperty(), capeSelector.valueProperty()); FXUtils.onChangeAndOperate(skinItem.selectedDataProperty(), selectedData -> {