aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/OldChunkStorage.h
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.World/OldChunkStorage.h')
-rw-r--r--Minecraft.World/OldChunkStorage.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/Minecraft.World/OldChunkStorage.h b/Minecraft.World/OldChunkStorage.h
new file mode 100644
index 00000000..a77b102c
--- /dev/null
+++ b/Minecraft.World/OldChunkStorage.h
@@ -0,0 +1,57 @@
+#pragma once
+#include "ChunkStorage.h"
+#include "LevelChunk.h"
+#include "File.h"
+#include "CompoundTag.h"
+#include "com.mojang.nbt.h"
+
+class Level;
+
+class OldChunkStorage : public ChunkStorage
+{
+private:
+ // 4J added so we can have separate storage arrays for different threads
+ class ThreadStorage
+ {
+ public:
+ byteArray blockData;
+ byteArray dataData;
+ byteArray skyLightData;
+ byteArray blockLightData;
+
+ ThreadStorage();
+ ~ThreadStorage();
+ };
+ static DWORD tlsIdx;
+ static ThreadStorage *tlsDefault;
+public:
+ // Each new thread that needs to use Compression will need to call one of the following 2 functions, to either create its own
+ // local storage, or share the default storage already allocated by the main thread
+ static void CreateNewThreadStorage();
+ static void UseDefaultThreadStorage();
+ static void ReleaseThreadStorage();
+
+private:
+ File dir;
+ bool create;
+
+public:
+ OldChunkStorage(File dir, bool create);
+private:
+ File getFile(int x, int z);
+ LevelChunk *load(Level *level, int x, int z);
+
+public:
+ virtual void save(Level *level, LevelChunk *levelChunk);
+
+ static bool saveEntities(LevelChunk *lc, Level *level, CompoundTag *tag); // 4J Added
+ static void save(LevelChunk *lc, Level *level, DataOutputStream *dos); // 4J Added
+ static void save(LevelChunk *lc, Level *level, CompoundTag *tag);
+ static void loadEntities(LevelChunk *lc, Level *level, CompoundTag *tag);
+ static LevelChunk *load(Level *level, CompoundTag *tag);
+ static LevelChunk *load(Level *level, DataInputStream *dis); // 4J Added
+
+ virtual void tick();
+ virtual void flush();
+ virtual void saveEntities(Level *level, LevelChunk *levelChunk);
+};