public void Save() { if (!EnterSave()) return; Stream zip = new DeflateStream(File.Create(DataFile + ".tmp"), CompressionMode.Compress); try { zip.WriteByte(0); // version zip.WriteByte(Convert.ToByte(LightToRecalculate)); for (int x = 0; x < 16; ++x) { for (int z = 0; z < 16; ++z) { zip.WriteByte(HeightMap[x, z]); } } WriteAllBlocks(zip); zip.Flush(); } finally { try { zip.Dispose(); File.Delete(DataFile); File.Move(DataFile + ".tmp", DataFile); } catch { } finally { ExitSave(); } } }