aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/ReadOnlyChunkCache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.World/ReadOnlyChunkCache.cpp')
-rw-r--r--Minecraft.World/ReadOnlyChunkCache.cpp100
1 files changed, 100 insertions, 0 deletions
diff --git a/Minecraft.World/ReadOnlyChunkCache.cpp b/Minecraft.World/ReadOnlyChunkCache.cpp
new file mode 100644
index 00000000..fdab13dc
--- /dev/null
+++ b/Minecraft.World/ReadOnlyChunkCache.cpp
@@ -0,0 +1,100 @@
+#include "stdafx.h"
+#include "net.minecraft.world.level.h"
+#include "ReadOnlyChunkCache.h"
+#include "Biome.h"
+
+ReadOnlyChunkCache::ReadOnlyChunkCache(Level *level, ChunkStorage *storage)
+{
+ chunks = LevelChunkArray(LEN * LEN);
+ emptyPixels = byteArray(Level::CHUNK_TILE_COUNT);
+
+ this->level = level;
+ this->storage = storage;
+}
+
+ReadOnlyChunkCache::~ReadOnlyChunkCache()
+{
+ for(unsigned int i = 0; i < chunks.length; ++i)
+ delete chunks[i];
+
+ delete[] chunks.data;
+
+ delete[] emptyPixels.data;
+}
+
+bool ReadOnlyChunkCache::hasChunk(int x, int z)
+{
+ int slot = (x & LEN_MASK) | ((z & LEN_MASK) * LEN);
+ return chunks[slot] != NULL && (chunks[slot]->isAt(x, z));
+}
+
+LevelChunk *ReadOnlyChunkCache::create(int x, int z)
+{
+ return getChunk(x, z);
+}
+
+LevelChunk *ReadOnlyChunkCache::getChunk(int x, int z)
+{
+ int slot = (x & LEN_MASK) | ((z & LEN_MASK) * LEN);
+ // 4J - removed try/catch
+// try {
+ if (!hasChunk(x, z))
+ {
+ LevelChunk *newChunk = load(x, z);
+ if (newChunk == NULL)
+ {
+ newChunk = new EmptyLevelChunk(level, emptyPixels, x, z);
+ }
+ chunks[slot] = newChunk;
+ }
+ return chunks[slot];
+// } catch (Exception e) {
+// e.printStackTrace();
+// return null;
+// }
+}
+
+LevelChunk *ReadOnlyChunkCache::load(int x, int z)
+{
+ // 4J - remove try/catch
+// try {
+ return storage->load(level, x, z);
+// } catch (IOException e) {
+// e.printStackTrace();
+// return null;
+// }
+}
+ // 4J - TODO - was synchronized
+void ReadOnlyChunkCache::postProcess(ChunkSource *parent, int x, int z)
+{
+}
+
+bool ReadOnlyChunkCache::save(bool force, ProgressListener *progressListener)
+{
+ return true;
+}
+
+bool ReadOnlyChunkCache::tick()
+{
+ return false;
+}
+
+bool ReadOnlyChunkCache::shouldSave()
+{
+ return false;
+}
+
+wstring ReadOnlyChunkCache::gatherStats()
+{
+ return L"ReadOnlyChunkCache";
+}
+
+vector<Biome::MobSpawnerData *> *ReadOnlyChunkCache::getMobsAt(MobCategory *mobCategory, int x, int y, int z)
+{
+ return NULL;
+}
+
+TilePos *ReadOnlyChunkCache::findNearestMapFeature(Level *level, const wstring& featureName, int x, int y, int z)
+{
+ return NULL;
+}