public byte[] CompressBytes(byte[] input) { MemoryStream stream = new MemoryStream(); stream.WriteByte(0x78); stream.WriteByte(0x01); int checksum; using (var compressStream = new ZLibStream(stream, CompressionLevel.Optimal, true)) { NbtBinaryWriter writer = new NbtBinaryWriter(compressStream, true); writer.Write(input); writer.Flush(); checksum = compressStream.Checksum; writer.Close(); } byte[] checksumBytes = BitConverter.GetBytes(checksum); if (BitConverter.IsLittleEndian) { // Adler32 checksum is big-endian Array.Reverse(checksumBytes); } stream.Write(checksumBytes, 0, checksumBytes.Length); var bytes = stream.ToArray(); stream.Close(); return bytes; }
public byte[] Export() { using (MemoryStream stream = new MemoryStream()) { NbtBinaryWriter writer = new NbtBinaryWriter(stream, false); writer.Write(X); writer.Write(Y); writer.Write(Z); writer.Write(Yaw); writer.Write(Pitch); writer.Write(HeadYaw); writer.Flush(); return stream.GetBuffer(); } }
public byte[] Export() { using (MemoryStream stream = new MemoryStream()) { NbtBinaryWriter writer = new NbtBinaryWriter(stream, false); writer.Write(X); writer.Write(Y); writer.Write(Z); writer.Write(Yaw); writer.Write(Pitch); writer.Write(HeadYaw); writer.Flush(); return(stream.GetBuffer()); } }
public static void Write(this NbtBinaryWriter writer, byte[] data) { writer.Write(data, 0, data.Length); }