From 21f70fc930de3025ea207970d90f12b515742bdc Mon Sep 17 00:00:00 2001 From: MrTheShy <49885496+MrTheShy@users.noreply.github.com> Date: Sat, 7 Mar 2026 02:25:51 +0100 Subject: [PATCH] Use persistent XUID for all pads in GetXUID All pads now get unique XUIDs derived from the persistent uid.dat value (base + iPad offset). This gives each split-screen player a globally unique identity that works for both local play and online multiplayer. The host legacy XUID override for save compatibility still happens in Minecraft.cpp after GetXUID is called, so old worlds are unaffected. --- Minecraft.Client/Extrax64Stubs.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/Minecraft.Client/Extrax64Stubs.cpp b/Minecraft.Client/Extrax64Stubs.cpp index 3cb2b395a..e38da8b54 100644 --- a/Minecraft.Client/Extrax64Stubs.cpp +++ b/Minecraft.Client/Extrax64Stubs.cpp @@ -606,15 +606,11 @@ bool C_4JProfile::QuerySigninStatus(void) { return true; } void C_4JProfile::GetXUID(int iPad, PlayerUID * pXuid, bool bOnlineXuid) { #ifdef _WINDOWS64 - // Split-screen local players (pad 1-3) need unique XUIDs derived from the - // legacy base so the save system and per-player data can tell them apart. - // Only pad 0 participates in networking with a "real" identity. - if (IQNet::s_isHosting) - *pXuid = Win64Xuid::GetLegacyEmbeddedHostXuid() + iPad; - else if (iPad == 0) - *pXuid = Win64Xuid::ResolvePersistentXuid(); - else - *pXuid = Win64Xuid::GetLegacyEmbeddedBaseXuid() + iPad; + // Each pad gets a unique XUID based on the persistent uid.dat value. + // Pad 0 uses the base persistent XUID, pads 1-3 offset from it. + // Minecraft.cpp overrides pad 0 with legacy XUID when hosting for + // save compatibility, but that's handled there, not here. + *pXuid = Win64Xuid::ResolvePersistentXuid() + iPad; #else * pXuid = 0xe000d45248242f2e + iPad; #endif