From b691c43c44ff180d10e7d4a9afc83b98551ff586 Mon Sep 17 00:00:00 2001 From: daoge_cmd <3523206925@qq.com> Date: Sun, 1 Mar 2026 12:16:08 +0800 Subject: Initial commit --- Minecraft.World/RegionFileCache.h | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Minecraft.World/RegionFileCache.h (limited to 'Minecraft.World/RegionFileCache.h') diff --git a/Minecraft.World/RegionFileCache.h b/Minecraft.World/RegionFileCache.h new file mode 100644 index 00000000..03e576cc --- /dev/null +++ b/Minecraft.World/RegionFileCache.h @@ -0,0 +1,35 @@ +#pragma once +#include "RegionFile.h" +#include "Reference.h" +#include "File.h" + +class RegionFileCache +{ + friend class ConsoleSaveFileOriginal; +private: + static const int MAX_CACHE_SIZE = 256; + + unordered_map cache; + + static RegionFileCache s_defaultCache; + +public: + // Made public and non-static so we can have a cache for input and output files + RegionFileCache() {} + + RegionFile *_getRegionFile(ConsoleSaveFile *saveFile, const wstring &prefix, int chunkX, int chunkZ); // 4J - TODO was synchronized + void _clear(); // 4J - TODO was synchronized + int _getSizeDelta(ConsoleSaveFile *saveFile, const wstring &prefix, int chunkX, int chunkZ); + DataInputStream *_getChunkDataInputStream(ConsoleSaveFile *saveFile, const wstring &prefix, int chunkX, int chunkZ); + DataOutputStream *_getChunkDataOutputStream(ConsoleSaveFile *saveFile, const wstring &prefix, int chunkX, int chunkZ); + + // Keep static version for general game usage + static RegionFile *getRegionFile(ConsoleSaveFile *saveFile, const wstring &prefix, int chunkX, int chunkZ) { return s_defaultCache._getRegionFile(saveFile, prefix, chunkX, chunkZ); } + static void clear() { s_defaultCache._clear(); } + static int getSizeDelta(ConsoleSaveFile *saveFile, const wstring &prefix, int chunkX, int chunkZ) { return s_defaultCache._getSizeDelta(saveFile, prefix, chunkX, chunkZ); } + static DataInputStream *getChunkDataInputStream(ConsoleSaveFile *saveFile, const wstring &prefix, int chunkX, int chunkZ) { return s_defaultCache._getChunkDataInputStream(saveFile, prefix, chunkX, chunkZ); } + static DataOutputStream *getChunkDataOutputStream(ConsoleSaveFile *saveFile, const wstring &prefix, int chunkX, int chunkZ) { return s_defaultCache._getChunkDataOutputStream(saveFile, prefix, chunkX, chunkZ); } + +private: + bool useSplitSaves(ESavePlatform platform); +}; -- cgit v1.2.3