diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/AccountHelper.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/AccountHelper.java index 7e57aac24..a2796c887 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/AccountHelper.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/AccountHelper.java @@ -150,6 +150,8 @@ public final class AccountHelper { } private static void downloadSkin(YggdrasilAccount account, GameProfile profile, boolean refresh, Proxy proxy) throws Exception { + account.clearCache(); + if (profile == null) return; String name = profile.getName(); if (name == null) return; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/Account.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/Account.java index 03d64eec6..827a5bb11 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/Account.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/Account.java @@ -91,4 +91,6 @@ public abstract class Account { public final Map getProperties() { return properties; } + + public abstract void clearCache(); } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/OfflineAccount.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/OfflineAccount.java index f3c65e610..ec3d8fcad 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/OfflineAccount.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/OfflineAccount.java @@ -93,6 +93,11 @@ public class OfflineAccount extends Account { ); } + @Override + public void clearCache() { + // Nothing to clear. + } + @Override public String toString() { return "OfflineAccount[username=" + username + ", uuid=" + uuid + "]"; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/yggdrasil/YggdrasilAccount.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/yggdrasil/YggdrasilAccount.java index d19c308d4..6e4a1d81c 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/yggdrasil/YggdrasilAccount.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/yggdrasil/YggdrasilAccount.java @@ -319,6 +319,13 @@ public class YggdrasilAccount extends Account { return Optional.ofNullable(texture.getTextures().get(ProfileTexture.Type.SKIN)); } + @Override + public void clearCache() { + Optional.ofNullable(getSelectedProfile()) + .map(GameProfile::getProperties) + .ifPresent(it -> it.remove("texture")); + } + @Override public String toString() { return "YggdrasilAccount[username=" + getUsername() + "]";