From 29b0ae7de163cc088e84ccd76ce2a24f7e273992 Mon Sep 17 00:00:00 2001 From: Loki Rautio Date: Thu, 5 Mar 2026 10:06:23 -0600 Subject: [PATCH] Fallback singleplayer save loading --- Minecraft.Client/PlayerList.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/Minecraft.Client/PlayerList.cpp b/Minecraft.Client/PlayerList.cpp index 1810c152..36ac0878 100644 --- a/Minecraft.Client/PlayerList.cpp +++ b/Minecraft.Client/PlayerList.cpp @@ -81,13 +81,33 @@ void PlayerList::placeNewPlayer(Connection *connection, shared_ptr { CompoundTag *playerTag = load(player); + INetworkPlayer *networkPlayer = connection->getSocket()->getPlayer(); + + + #ifdef _WINDOWS64 // Attempt fallback save load + if (playerTag == NULL) + { + // The check below should prevent this from happening on a dedicated server (IsHost) + if (networkPlayer != NULL && networkPlayer->IsHost() || networkPlayer == NULL) + { + NetworkPlayerXbox *npx = (NetworkPlayerXbox *)networkPlayer; + IQNetPlayer *qp = npx->GetQNetPlayer(); + // Hardcoded as this is a long term legacy failsafe load! + playerTag = playerIo->loadPlayerDataTag((PlayerUID)(0xe000d45248242f2e + qp->m_smallId)); + if (playerTag != NULL) + { + player->load(playerTag); + } + } + } + #endif + bool newPlayer = playerTag == NULL; player->setLevel(server->getLevel(player->dimension)); player->gameMode->setLevel((ServerLevel *)player->level); // Make sure these privileges are always turned off for the host player - INetworkPlayer *networkPlayer = connection->getSocket()->getPlayer(); if(networkPlayer != NULL && networkPlayer->IsHost()) { player->enableAllPlayerPrivileges(true);