static void Save(Stream stream, byte[] blocks, int width, int length) { using (GZipStream wrapper = new GZipStream(stream, CompressionMode.Compress)) { BinaryWriter writer = new BinaryWriter(wrapper); NbtFile nbt = new NbtFile(writer); nbt.Write(NbtTagType.Compound); nbt.Write("ClassicWorld"); nbt.Write(NbtTagType.Int8); nbt.Write("FormatVersion"); nbt.WriteUInt8(1); nbt.Write(NbtTagType.Int8Array); nbt.Write("UUID"); nbt.WriteInt32(16); nbt.WriteBytes(new byte[16]); nbt.Write(NbtTagType.Int16); nbt.Write("X"); nbt.WriteInt16((short)width); nbt.Write(NbtTagType.Int16); nbt.Write("Y"); nbt.WriteInt16((short)128); nbt.Write(NbtTagType.Int16); nbt.Write("Z"); nbt.WriteInt16((short)length); nbt.Write(NbtTagType.Compound); nbt.Write("Spawn"); nbt.Write(NbtTagType.Int16); nbt.Write("X"); nbt.WriteInt16(0); nbt.Write(NbtTagType.Int16); nbt.Write("Y"); nbt.WriteInt16(0); nbt.Write(NbtTagType.Int16); nbt.Write("Z"); nbt.WriteInt16(0); nbt.Write(NbtTagType.Int8); nbt.Write("H"); nbt.WriteUInt8(0); nbt.Write(NbtTagType.Int8); nbt.Write("P"); nbt.WriteUInt8(0); nbt.Write(NbtTagType.End); nbt.Write(NbtTagType.Int8Array); nbt.Write("BlockArray"); nbt.WriteInt32(blocks.Length); nbt.WriteBytes(blocks); nbt.Write(NbtTagType.End); } }