Files
MinecraftConsoles/Minecraft.World
kuwa 182d76f391 Introduce uid.dat (offline PlayerUIDs), fix multiplayer save data persistence (#536)
* fix: fix multiplayer player data mix between different players bug

Fixes a Win64 multiplayer issue where player data (`players/*.dat`) could be mismatched because identity was effectively tied to connection-order `smallId` XUIDs.
Introduces a deterministic username-derived persistent XUID and integrates it into the existing XUID-based save pipeline.

- Added `Windows64_NameXuid` for deterministic `name -> persistent xuid` resolution
- On Win64 login (`PlayerList`), set `ServerPlayer::xuid` from username-based resolver
- Aligned local player `xuid` assignment (`Minecraft`) for create/init/respawn paths to use the same resolver
- Added Win64 local-self guard in `ClientConnection::handleAddPlayer` using name match to avoid duplicate local remote-player creation
- Kept `IQNet::GetPlayerByXuid` compatibility fallback behavior, while extending lookup to also resolve username-based XUIDs
- Moved implementation to `Minecraft.Client/Windows64/Windows64_NameXuid.h`; kept legacy `Win64NameXuid.h` as compatibility include

Rename migration is intentionally out of scope (same-name identity only).

* fix: preserve legacy host xuid (base xuid + 0) for existing world compatibility

- Add legacy embedded host XUID helper (base + 0).
- When Minecraft.Client is hosting, force only the first host player to use legacy host XUID.
- Keep name-based XUID for non-host players.
- Prevent old singleplayer/hosted worlds from losing/mismatching host player data.

* update: migrate Win64 player uid to `uid.dat`-backed XUID and add XUID based duplicate login guards

- Replace Win64 username-derived XUID resolution with persistent `uid.dat`-backed identity (`Windows64_Xuid` / `Win64Xuid`).
- Persist a per-client XUID next to the executable, with first-run generation, read/write, and process-local caching.
- Keep legacy host compatibility by pinning host self to legacy embedded `base + 0` XUID for existing world/playerdata continuity.
- Propagate packet-authoritative XUIDs into QNet player slots via `m_resolvedXuid`, and use it for `GetXuid`/`GetPlayerByXuid` with legacy fallback.
- Update Win64 profile/network paths to use persistent XUID for non-host clients and clear resolved identity on disconnect.
- Add login-time duplicate checks: reject connections when the same XUID is already connected (in addition to existing duplicate-name checks on Win64).
- Add inline compatibility comments around legacy/new identity coexistence paths for easier future maintenance.

* update: ensure uid.dat exists at startup in client mode for multiplayer
2026-03-06 00:01:36 -06:00
..
2026-03-03 03:06:21 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-03 06:14:34 +07:00
2026-03-03 06:14:34 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-03 06:14:34 +07:00
2026-03-03 06:14:34 +07:00
2026-03-03 06:14:34 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-05 23:35:45 -06:00
2026-03-05 23:35:45 -06:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-03 06:14:34 +07:00
2026-03-03 06:14:34 +07:00
2026-03-03 06:14:34 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-03 06:14:34 +07:00
2026-03-02 17:39:35 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-03 06:14:34 +07:00
2026-03-03 06:14:34 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-03 06:14:34 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-03 06:14:34 +07:00
2026-03-03 06:14:34 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-02 17:39:35 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-03 06:14:34 +07:00
2026-03-03 06:14:34 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-03 06:14:34 +07:00
2026-03-03 06:14:34 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-03 06:14:34 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-02 14:51:05 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-03 06:14:34 +07:00
2026-03-03 06:14:34 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-03 06:14:34 +07:00
2026-03-03 06:14:34 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-03 06:14:34 +07:00
2026-03-03 06:14:34 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-03 06:14:34 +07:00
2026-03-03 06:14:34 +07:00
2026-03-03 06:14:34 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-02 17:39:35 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-03 06:14:34 +07:00
2026-03-03 06:14:34 +07:00
2026-03-01 12:16:08 +08:00
2026-03-02 17:39:35 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-03 06:14:34 +07:00
2026-03-03 06:14:34 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-03 06:14:34 +07:00
2026-03-03 06:14:34 +07:00
2026-03-03 06:14:34 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-02 17:37:16 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-02 17:39:35 +07:00
2026-03-02 17:39:35 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-03 06:14:34 +07:00
2026-03-03 06:14:34 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-03 06:14:34 +07:00
2026-03-03 06:14:34 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-03 06:14:34 +07:00
2026-03-03 06:14:34 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-02 17:39:35 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-02 17:37:16 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-02 17:39:35 +07:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-01 12:16:08 +08:00
2026-03-02 17:39:35 +07:00
2026-03-02 17:39:35 +07:00
2026-03-02 17:39:35 +07:00
2026-03-02 17:39:35 +07:00

========================================================================
    STATIC LIBRARY : Minecraft.World Project Overview
========================================================================

AppWizard has created this Minecraft.World library project for you. 

This file contains a summary of what you will find in each of the files that
make up your Minecraft.World application.

Minecraft.World.vcxproj
    This is the main project file for VC++ projects generated using an Application Wizard. 
    It contains information about the version of Visual C++ that generated the file, and 
    information about the platforms, configurations, and project features selected with the
    Application Wizard.



/////////////////////////////////////////////////////////////////////////////

StdAfx.h, StdAfx.cpp
    These files are used to build a precompiled header (PCH) file
    named Minecraft.World.pch and a precompiled types file named StdAfx.obj.

/////////////////////////////////////////////////////////////////////////////
Other notes:

AppWizard uses "TODO:" comments to indicate parts of the source code you
should add to or customize.

/////////////////////////////////////////////////////////////////////////////