aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/ServerChunkCache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.Client/ServerChunkCache.cpp')
-rw-r--r--Minecraft.Client/ServerChunkCache.cpp57
1 files changed, 19 insertions, 38 deletions
diff --git a/Minecraft.Client/ServerChunkCache.cpp b/Minecraft.Client/ServerChunkCache.cpp
index c7d70c7d..54312ffa 100644
--- a/Minecraft.Client/ServerChunkCache.cpp
+++ b/Minecraft.Client/ServerChunkCache.cpp
@@ -80,54 +80,31 @@ vector<LevelChunk *> *ServerChunkCache::getLoadedChunkList()
return &m_loadedChunkList;
}
-void ServerChunkCache::drop(int x, int z)
+void ServerChunkCache::drop(const int x, const int z)
{
- // 4J - we're not dropping things anymore now that we have a fixed sized cache
-#ifdef _LARGE_WORLDS
-
- bool canDrop = false;
-// if (level->dimension->mayRespawn())
-// {
-// Pos *spawnPos = level->getSharedSpawnPos();
-// int xd = x * 16 + 8 - spawnPos->x;
-// int zd = z * 16 + 8 - spawnPos->z;
-// delete spawnPos;
-// int r = 128;
-// if (xd < -r || xd > r || zd < -r || zd > r)
-// {
-// canDrop = true;
-//}
-// }
-// else
- {
- canDrop = true;
- }
- if(canDrop)
+ const int ix = x + XZOFFSET;
+ const int iz = z + XZOFFSET;
+ if ((ix < 0) || (ix >= XZSIZE)) return;
+ if ((iz < 0) || (iz >= XZSIZE)) return;
+ const int idx = ix * XZSIZE + iz;
+ LevelChunk* chunk = cache[idx];
+
+ if (chunk != nullptr)
{
- int ix = x + XZOFFSET;
- int iz = z + XZOFFSET;
- // Check we're in range of the stored level
- if( ( ix < 0 ) || ( ix >= XZSIZE ) ) return;
- if( ( iz < 0 ) || ( iz >= XZSIZE ) ) return;
- int idx = ix * XZSIZE + iz;
- LevelChunk *chunk = cache[idx];
-
- if(chunk)
- {
- m_toDrop.push_back(chunk);
- }
+ const auto it = std::find(m_loadedChunkList.begin(), m_loadedChunkList.end(), chunk);
+ if (it != m_loadedChunkList.end()) m_loadedChunkList.erase(it);
+
+ cache[idx] = nullptr;
+ chunk->loaded = false;
}
-#endif
}
void ServerChunkCache::dropAll()
{
-#ifdef _LARGE_WORLDS
for (LevelChunk *chunk : m_loadedChunkList)
{
drop(chunk->x, chunk->z);
-}
-#endif
+ }
}
// 4J - this is the original (and virtual) interface to create
@@ -957,6 +934,10 @@ bool ServerChunkCache::tick()
m_unloadedCache[idx] = chunk;
cache[idx] = nullptr;
}
+ else
+ {
+ continue;
+ }
}
m_toDrop.pop_front();
}