#pragma once #ifdef _WINDOWS64 #include #include #include "..\..\Minecraft.World\GameUUID.h" // Player identity is always assigned by the auth manager (Mojang/offline). // No local persistence (uuid.dat) is used — the auth handshake is the source of truth. namespace Win64Uuid { inline GameUUID DeriveUuidForPad(GameUUID baseUuid, int iPad) { if (iPad == 0) return baseUuid; // Deterministic per-pad UUID derived from the base. uint64_t mixHi = baseUuid.hi ^ (0x9E3779B97F4A7C15ULL * (uint64_t)(iPad + 1)); uint64_t mixLo = baseUuid.lo ^ (0xBF58476D1CE4E5B9ULL * (uint64_t)(iPad + 1)); mixHi = (mixHi ^ (mixHi >> 30)) * 0xBF58476D1CE4E5B9ULL; mixHi = (mixHi ^ (mixHi >> 27)) * 0x94D049BB133111EBULL; mixHi = mixHi ^ (mixHi >> 31); mixLo = (mixLo ^ (mixLo >> 30)) * 0xBF58476D1CE4E5B9ULL; mixLo = (mixLo ^ (mixLo >> 27)) * 0x94D049BB133111EBULL; mixLo = mixLo ^ (mixLo >> 31); // Mark as UUID v4 variant 1 mixHi = (mixHi & ~0x000000000000F000ULL) | 0x0000000000004000ULL; mixLo = (mixLo & ~0xC000000000000000ULL) | 0x8000000000000000ULL; GameUUID derived; derived.hi = mixHi; derived.lo = mixLo; return derived; } } #endif