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();