From 4b2e857f086176f3eed4a00cc2b9dd0ccddff791 Mon Sep 17 00:00:00 2001 From: Haowei Wen Date: Mon, 12 Jun 2023 00:42:41 +0800 Subject: [PATCH] Fix chat is broken on Minecraft 1.20 --- HMCLCore/src/main/java/org/jackhuang/hmcl/auth/AuthInfo.java | 1 + .../org/jackhuang/hmcl/auth/microsoft/MicrosoftSession.java | 2 +- .../java/org/jackhuang/hmcl/auth/offline/OfflineAccount.java | 4 ++-- .../org/jackhuang/hmcl/auth/yggdrasil/YggdrasilSession.java | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/AuthInfo.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/AuthInfo.java index 3d9e51f61..dad7dd4a4 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/AuthInfo.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/AuthInfo.java @@ -30,6 +30,7 @@ import java.util.UUID; */ @Immutable public class AuthInfo implements AutoCloseable { + public static final String USER_TYPE_MSA = "msa"; public static final String USER_TYPE_MOJANG = "mojang"; public static final String USER_TYPE_LEGACY = "legacy"; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/microsoft/MicrosoftSession.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/microsoft/MicrosoftSession.java index f8ec9046c..f1705d52b 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/microsoft/MicrosoftSession.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/microsoft/MicrosoftSession.java @@ -110,7 +110,7 @@ public class MicrosoftSession { public AuthInfo toAuthInfo() { requireNonNull(profile); - return new AuthInfo(profile.getName(), profile.getId(), accessToken, AuthInfo.USER_TYPE_MOJANG, "{}"); + return new AuthInfo(profile.getName(), profile.getId(), accessToken, AuthInfo.USER_TYPE_MSA, "{}"); } public static class User { 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 7d29bf878..e252d38d0 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 @@ -114,7 +114,7 @@ public class OfflineAccount extends Account { @Override public AuthInfo logIn() throws AuthenticationException { // Using "legacy" user type here because "mojang" user type may cause "invalid session token" or "disconnected" when connecting to a game server. - AuthInfo authInfo = new AuthInfo(username, uuid, UUIDTypeAdapter.fromUUID(UUID.randomUUID()), AuthInfo.USER_TYPE_LEGACY, "{}"); + AuthInfo authInfo = new AuthInfo(username, uuid, UUIDTypeAdapter.fromUUID(UUID.randomUUID()), AuthInfo.USER_TYPE_MSA, "{}"); if (loadAuthlibInjector(skin)) { CompletableFuture artifactTask = CompletableFuture.supplyAsync(() -> { @@ -154,7 +154,7 @@ public class OfflineAccount extends Account { private YggdrasilServer server; public OfflineAuthInfo(AuthInfo authInfo, AuthlibInjectorArtifactInfo artifact) { - super(authInfo.getUsername(), authInfo.getUUID(), authInfo.getAccessToken(), USER_TYPE_LEGACY, authInfo.getUserProperties()); + super(authInfo.getUsername(), authInfo.getUUID(), authInfo.getAccessToken(), USER_TYPE_MSA, authInfo.getUserProperties()); this.artifact = artifact; } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/yggdrasil/YggdrasilSession.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/yggdrasil/YggdrasilSession.java index 474eae8e4..f9f668ef0 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/yggdrasil/YggdrasilSession.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/yggdrasil/YggdrasilSession.java @@ -105,7 +105,7 @@ public class YggdrasilSession { if (selectedProfile == null) throw new IllegalStateException("No character is selected"); - return new AuthInfo(selectedProfile.getName(), selectedProfile.getId(), accessToken, AuthInfo.USER_TYPE_MOJANG, + return new AuthInfo(selectedProfile.getName(), selectedProfile.getId(), accessToken, AuthInfo.USER_TYPE_MSA, Optional.ofNullable(userProperties) .map(properties -> properties.entrySet().stream() .collect(Collectors.toMap(Map.Entry::getKey,