From a240b8ca9f0574fa82ea60d54591d747565cca18 Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Fri, 29 Oct 2021 22:52:04 +0800 Subject: [PATCH] fix(skin): Do not load authlib-injector when skin manually set to steve/alex. --- .../hmcl/auth/offline/OfflineAccount.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/offline/OfflineAccount.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/offline/OfflineAccount.java index a4dd99eb6..e4bffa492 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/offline/OfflineAccount.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/offline/OfflineAccount.java @@ -25,6 +25,7 @@ import org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorArtifactInfo; import org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorArtifactProvider; import org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorDownloadException; import org.jackhuang.hmcl.auth.yggdrasil.Texture; +import org.jackhuang.hmcl.auth.yggdrasil.TextureModel; import org.jackhuang.hmcl.auth.yggdrasil.TextureType; import org.jackhuang.hmcl.game.Arguments; import org.jackhuang.hmcl.util.StringUtils; @@ -89,11 +90,22 @@ public class OfflineAccount extends Account { invalidate(); } + private boolean loadAuthlibInjector(Skin skin) { + if (skin == null) return false; + if (skin.getType() == Skin.Type.DEFAULT) return false; + TextureModel defaultModel = TextureModel.detectUUID(getUUID()); + if (skin.getType() == Skin.Type.ALEX && defaultModel == TextureModel.ALEX || + skin.getType() == Skin.Type.STEVE && defaultModel == TextureModel.STEVE) { + return false; + } + return true; + } + @Override public AuthInfo logIn() throws AuthenticationException { AuthInfo authInfo = new AuthInfo(username, uuid, UUIDTypeAdapter.fromUUID(UUID.randomUUID()), "{}"); - if (skin != null) { + if (loadAuthlibInjector(skin)) { CompletableFuture artifactTask = CompletableFuture.supplyAsync(() -> { try { return downloader.getArtifactInfo();