public static void UnloadChunk(int x, int z, World w) { Point pt = new Point(x, z); try { if (w.chunkData.ContainsKey(pt) && (w.chunkData[pt].generating || w.ChunkPopulatingCheck(x, z))) return; } catch { return; } SaveChunk(x, z, w); if (((int)w.SpawnX >> 4) != x || ((int)w.SpawnZ >> 4) != z) // Don't unload the spawn chunks! { w.physics.RemoveChunkChecks(x, z); foreach (KeyValuePair<Vector3, Container> kvp in w.containers.Where(KVP => (((int)KVP.Key.x >> 4) == x && ((int)KVP.Key.z >> 4) == z)).ToList()) w.containers.Remove(kvp.Key); lock (w.chunkData) if (w.chunkData.ContainsKey(pt)) { w.chunkData[pt].Dispose(); w.chunkData.Remove(pt); } } }
public static void UnloadChunk(int x, int z, World w) { Point pt = new Point(x, z); try { if (w.chunkData.ContainsKey(pt) && (w.chunkData[pt].generating || w.ChunkPopulatingCheck(x, z))) return; } catch { return; } SaveChunk(x, z, w); if (((int)w.SpawnX + 1 >> 4) != x || ((int)w.SpawnZ + 1 >> 4) != z) // Don't unload the spawn chunks! { w.physics.RemoveChunkChecks(x, z); lock (w.chunkData) if (w.chunkData.ContainsKey(pt)) { w.chunkData[pt].Dispose(); w.chunkData.Remove(pt); } } }