From f255035afdddaa556fd7ae056918390091c08ed9 Mon Sep 17 00:00:00 2001 From: piebot <164795032+piebotc@users.noreply.github.com> Date: Thu, 12 Mar 2026 23:51:09 +0300 Subject: [PATCH] added marvelcocode's pr https://github.com/smartcmd/MinecraftConsoles/pull/1169 --- Minecraft.World/ConsoleSaveFileOriginal.cpp | 6 ++++++ Minecraft.World/RegionFileCache.cpp | 19 +++++++++++-------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/Minecraft.World/ConsoleSaveFileOriginal.cpp b/Minecraft.World/ConsoleSaveFileOriginal.cpp index 8a7d1f9e..dde44bd8 100644 --- a/Minecraft.World/ConsoleSaveFileOriginal.cpp +++ b/Minecraft.World/ConsoleSaveFileOriginal.cpp @@ -200,11 +200,17 @@ ConsoleSaveFileOriginal::ConsoleSaveFileOriginal(const wstring &fileName, LPVOID header.ReadHeader( pvSaveMem, plat ); + if (bLevelGenBaseSave) + { + header.AddFile(L"region_format_16"); + } } else { // Clear the first 8 bytes that reference the header header.WriteHeader( pvSaveMem ); + + header.AddFile(L"region_format_16"); } } diff --git a/Minecraft.World/RegionFileCache.cpp b/Minecraft.World/RegionFileCache.cpp index bd6405fa..c7931146 100644 --- a/Minecraft.World/RegionFileCache.cpp +++ b/Minecraft.World/RegionFileCache.cpp @@ -11,12 +11,8 @@ bool RegionFileCache::useSplitSaves(ESavePlatform platform) { case SAVE_FILE_PLATFORM_XBONE: case SAVE_FILE_PLATFORM_PS4: - return true; case SAVE_FILE_PLATFORM_WIN64: - { - LevelGenerationOptions* lgo = app.getLevelGenerationOptions(); - return (lgo != nullptr && lgo->isFromDLC()); - } + return true; default: return false; }; @@ -35,7 +31,12 @@ RegionFile *RegionFileCache::_getRegionFile(ConsoleSaveFile *saveFile, const wst File file; if(useSplitSaves(saveFile->getSavePlatform())) { - file = File( prefix + wstring(L"r.") + std::to_wstring(chunkX>>4) + L"." + std::to_wstring(chunkZ>>4) + L".mcr" ); + bool isNew = saveFile->doesFileExist(ConsoleSavePath(L"region_format_16")); + + if (isNew) + file = File(prefix + wstring(L"r.") + std::to_wstring(chunkX >> 4) + L"." + std::to_wstring(chunkZ >> 4) + L".mcr"); + else + file = File(prefix + wstring(L"r.") + std::to_wstring(chunkX >> 5) + L"." + std::to_wstring(chunkZ >> 5) + L".mcr"); } else { @@ -95,7 +96,8 @@ int RegionFileCache::_getSizeDelta(ConsoleSaveFile *saveFile, const wstring &pre DataInputStream *RegionFileCache::_getChunkDataInputStream(ConsoleSaveFile *saveFile, const wstring &prefix, int chunkX, int chunkZ) { RegionFile* r = _getRegionFile(saveFile, prefix, chunkX, chunkZ); - if(useSplitSaves(saveFile->getSavePlatform())) + bool isNew = saveFile->doesFileExist(ConsoleSavePath(L"region_format_16")); + if (useSplitSaves(saveFile->getSavePlatform()) && isNew) { return r->getChunkDataInputStream(chunkX & 15, chunkZ & 15); } @@ -109,7 +111,8 @@ DataInputStream *RegionFileCache::_getChunkDataInputStream(ConsoleSaveFile *save DataOutputStream *RegionFileCache::_getChunkDataOutputStream(ConsoleSaveFile *saveFile, const wstring &prefix, int chunkX, int chunkZ) { RegionFile* r = _getRegionFile(saveFile, prefix, chunkX, chunkZ); - if(useSplitSaves(saveFile->getSavePlatform())) + bool isNew = saveFile->doesFileExist(ConsoleSavePath(L"region_format_16")); + if (useSplitSaves(saveFile->getSavePlatform()) && isNew) { return r->getChunkDataOutputStream(chunkX & 15, chunkZ & 15); }