Environment:
- TrueUUID version: 1.2.0 (Forge 1.20.1)
- Minecraft: 1.20.1, Forge 47.4.20
- Server:
online-mode=false, hosted on a Pterodactyl-based panel (EnxadaHost)
- Client: CurseForge App launcher, logged into a genuine Microsoft/Mojang premium account (confirmed via official Minecraft launcher, not just CurseForge login)
- Client and server are running the identical
.jar file
Description:
When a player with a verified premium Mojang account connects, TrueUUID falls back to offline mode instead of verifying successfully. Investigating further, the server's call to Mojang's Session Server (/session/minecraft/hasJoined) returns HTTP 204 (No Content), which per Mojang's API means the session hash/serverId wasn't recognized.
Server log at time of login:
[Server thread/INFO] [cn.al.tr.Trueuuid/]: TrueUUID login_complete outcome=offline player=XxXxX uuid=eb389807-b43a-332b-9b89-8818da4824d4 auth_source=offline_fallback
Client log confirms the mod loaded correctly:
Game/cn.alini.trueuuid.Trueuuid (modloading-worker-0) Info TrueUUID 已注册配置
Game/cn.alini.trueuuid.Trueuuid (modloading-worker-0) Info TrueUUID 已经加载
What I've already ruled out:
- Network/firewall blocking Mojang endpoints on the server — confirmed working, since switching temporarily to
online-mode=true (vanilla auth, no TrueUUID) let the same premium account log in successfully.
- Client not logged into premium account — confirmed via official launcher (CurseForge opens the real Minecraft/Microsoft launcher for auth).
- Version mismatch between client and server — confirmed identical
.jar on both sides (trueuuid-1.2.0-forge-1.20.1.jar).
- Proxy/NAT hiding client IP — per your own docs, the
ip parameter to hasJoined is optional and shouldn't cause this.
Suspected cause:
Given the above, this looks like the serverId/session hash computed by the client's local joinServer call doesn't match what the server sends to Mojang's hasJoined — possibly related to how the SHA-1 digest is converted to Mojang's expected signed hex format (the well-known two's-complement quirk in the vanilla Crypt.digestData/session hash implementation). Any mismatch there would cause hasJoined to always return 204 regardless of account validity.
Steps to reproduce:
- Set up server with
online-mode=false + TrueUUID 1.2.0
- Install identical TrueUUID 1.2.0 on client
- Connect with a verified premium Microsoft/Mojang account
- Observe
outcome=offline auth_source=offline_fallback in server log despite valid premium session
Expected behavior: outcome=verified, UUID replaced with the official premium UUID.
Additional note: I'll be testing with v1.1.0 and v1.1.1 shortly to check if this is version-specific, and will update this issue with results.

Environment:
online-mode=false, hosted on a Pterodactyl-based panel (EnxadaHost).jarfileDescription:
When a player with a verified premium Mojang account connects, TrueUUID falls back to offline mode instead of verifying successfully. Investigating further, the server's call to Mojang's Session Server (
/session/minecraft/hasJoined) returns HTTP 204 (No Content), which per Mojang's API means the session hash/serverId wasn't recognized.Server log at time of login:
Client log confirms the mod loaded correctly:
What I've already ruled out:
online-mode=true(vanilla auth, no TrueUUID) let the same premium account log in successfully..jaron both sides (trueuuid-1.2.0-forge-1.20.1.jar).ipparameter tohasJoinedis optional and shouldn't cause this.Suspected cause:
Given the above, this looks like the
serverId/session hash computed by the client's localjoinServercall doesn't match what the server sends to Mojang'shasJoined— possibly related to how the SHA-1 digest is converted to Mojang's expected signed hex format (the well-known two's-complement quirk in the vanillaCrypt.digestData/session hash implementation). Any mismatch there would causehasJoinedto always return 204 regardless of account validity.Steps to reproduce:
online-mode=false+ TrueUUID 1.2.0outcome=offline auth_source=offline_fallbackin server log despite valid premium sessionExpected behavior:
outcome=verified, UUID replaced with the official premium UUID.Additional note: I'll be testing with v1.1.0 and v1.1.1 shortly to check if this is version-specific, and will update this issue with results.