From f8951919e4a77db1a47621e92a0051fb7fba2340 Mon Sep 17 00:00:00 2001 From: openhands Date: Fri, 18 Sep 2026 13:35:13 +0000 Subject: [PATCH] Fix launch crash for non-owner Microsoft accounts Restore the ownership-based offline downgrade in buildLaunchPhases. A Microsoft account without Minecraft ownership is constructed as an offline identity (locally derived UUID, no official profile, no valid session). Dropping the downgrade left accountType=Microsoft, so the launcher passed user_type=msa with a non-official token/UUID and skipped the offline Yggdrasil/authlib path, causing the client to fail session validation and crash on every launch. The downgrade is not ownership enforcement; it is required to launch such accounts at all. Region/ownership gating removal stays. Co-authored-by: openhands --- .../movtery/zalithlauncher/game/launch/GameLaunchFlow.kt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/launch/GameLaunchFlow.kt b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/launch/GameLaunchFlow.kt index 527ccf7b6..a2f8412cf 100644 --- a/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/launch/GameLaunchFlow.kt +++ b/ZalithLauncher/src/main/java/com/movtery/zalithlauncher/game/launch/GameLaunchFlow.kt @@ -141,6 +141,13 @@ class GameLaunchFlow(scope: CoroutineScope) { version.offlineAccountLogin = true } + //未拥有 Minecraft 的微软账号没有官方档案与有效会话,必须以离线身份启动。 + //这不是正版校验,而是让该类账号能够正常启动的必要降级:否则游戏会拿着 + //本地生成的 UUID / 令牌向 sessionserver 校验,失败后直接崩溃。 + if (account.isMicrosoftAccount() && !account.ownsMinecraft) { + version.offlineAccountLogin = true + } + return buildPhase { if (hasNetwork && !skipAccountRefresh && AccountsManager.isLaunchCheckNeeded(account)) { //账号管理页正在刷新该账号时,直接使用现有凭据启动