/// <exception cref="System.IO.IOException"/> public virtual void SaveChunk(net.minecraft.src.World world, net.minecraft.src.Chunk chunk) { world.CheckSessionLock(); try { java.io.DataOutputStream dataoutputstream = net.minecraft.src.RegionFileCache.Func_22120_d (worldFolder, chunk.xPosition, chunk.zPosition); net.minecraft.src.NBTTagCompound nbttagcompound = new net.minecraft.src.NBTTagCompound (); net.minecraft.src.NBTTagCompound nbttagcompound1 = new net.minecraft.src.NBTTagCompound (); nbttagcompound.SetTag("Level", nbttagcompound1); net.minecraft.src.ChunkLoader.StoreChunkInCompound(chunk, world, nbttagcompound1); net.minecraft.src.CompressedStreamTools.Func_771_a(nbttagcompound, dataoutputstream ); dataoutputstream.Close(); net.minecraft.src.WorldInfo worldinfo = world.GetWorldInfo(); worldinfo.SetSizeOnDisk(worldinfo.GetSizeOnDisk() + (long)net.minecraft.src.RegionFileCache .Func_22121_b(worldFolder, chunk.xPosition, chunk.zPosition)); } catch (System.Exception exception) { Sharpen.Runtime.PrintStackTrace(exception); } }
public static void StoreChunkInCompound(net.minecraft.src.Chunk chunk, net.minecraft.src.World world, net.minecraft.src.NBTTagCompound nbttagcompound) { world.CheckSessionLock(); nbttagcompound.SetInteger("xPos", chunk.xPosition); nbttagcompound.SetInteger("zPos", chunk.zPosition); nbttagcompound.SetLong("LastUpdate", world.GetWorldTime()); nbttagcompound.SetByteArray("Blocks", chunk.blocks); nbttagcompound.SetByteArray("Data", chunk.data.data); nbttagcompound.SetByteArray("SkyLight", chunk.skylightMap.data); nbttagcompound.SetByteArray("BlockLight", chunk.blocklightMap.data); nbttagcompound.SetByteArray("HeightMap", chunk.heightMap); nbttagcompound.SetBoolean("TerrainPopulated", chunk.isTerrainPopulated); chunk.hasEntities = false; net.minecraft.src.NBTTagList nbttaglist = new net.minecraft.src.NBTTagList(); for (int i = 0; i < chunk.entities.Length; i++) { System.Collections.IEnumerator iterator = chunk.entities[i].GetEnumerator(); do { if (!iterator.MoveNext()) { goto label0_continue; } net.minecraft.src.Entity entity = (net.minecraft.src.Entity)iterator.Current; chunk.hasEntities = true; net.minecraft.src.NBTTagCompound nbttagcompound1 = new net.minecraft.src.NBTTagCompound (); if (entity.AddEntityID(nbttagcompound1)) { nbttaglist.SetTag(nbttagcompound1); } }while (true); label0_continue :; } label0_break :; nbttagcompound.SetTag("Entities", nbttaglist); net.minecraft.src.NBTTagList nbttaglist1 = new net.minecraft.src.NBTTagList(); net.minecraft.src.NBTTagCompound nbttagcompound2; for (System.Collections.IEnumerator iterator1 = chunk.chunkTileEntityMap.Values.GetEnumerator (); iterator1.MoveNext(); nbttaglist1.SetTag(nbttagcompound2)) { net.minecraft.src.TileEntity tileentity = (net.minecraft.src.TileEntity)iterator1 .Current; nbttagcompound2 = new net.minecraft.src.NBTTagCompound(); tileentity.WriteToNBT(nbttagcompound2); } nbttagcompound.SetTag("TileEntities", nbttaglist1); }
/// <exception cref="System.IO.IOException"/> public virtual void SaveChunk(net.minecraft.src.World world, net.minecraft.src.Chunk chunk) { world.CheckSessionLock(); string file = ChunkFileForXZ(chunk.xPosition, chunk.zPosition); if (System.IO.File.Exists(file)) { net.minecraft.src.WorldInfo worldinfo = world.GetWorldInfo(); worldinfo.SetSizeOnDisk(worldinfo.GetSizeOnDisk() - file.Length); } try { string file1 = System.IO.Path.Combine(saveDir, "tmp_chunk.dat"); using (FileStream fileoutputstream = File.OpenWrite(file1)) { net.minecraft.src.NBTTagCompound nbttagcompound = new net.minecraft.src.NBTTagCompound (); net.minecraft.src.NBTTagCompound nbttagcompound1 = new net.minecraft.src.NBTTagCompound (); nbttagcompound.SetTag("Level", nbttagcompound1); StoreChunkInCompound(chunk, world, nbttagcompound1); net.minecraft.src.CompressedStreamTools.WriteGzippedCompoundToOutputStream(nbttagcompound, fileoutputstream); //fileoutputstream.Close(); } if (System.IO.File.Exists(file)) { System.IO.File.Delete(file); } System.IO.File.Move(file1, file); //file1.RenameTo(file); net.minecraft.src.WorldInfo worldinfo1 = world.GetWorldInfo(); worldinfo1.SetSizeOnDisk(worldinfo1.GetSizeOnDisk() + file.Length); } catch (System.Exception exception) { Sharpen.Runtime.PrintStackTrace(exception); } }