public static byte[] GetMapChunk(Chunk c)
        {
            using (MinecraftPacketStream stream = new MinecraftPacketStream())
            {
                stream.WriteByte((byte)MinecraftOpcode.MapChunk);
                stream.WriteInt(c.Position.X);
                stream.WriteShort(c.Position.Y);
                stream.WriteInt(c.Position.Z);
                stream.WriteByte(15);
                stream.WriteByte(127);
                stream.WriteByte(15);

                using (MemoryStream mStream = new MemoryStream())
                {
                    using (ZOutputStream zStream = new ZOutputStream(mStream, zlibConst.Z_BEST_COMPRESSION))
                    {
                        zStream.Write(c.Data, 0, c.Data.Length);
                        stream.WriteInt((int)mStream.Length);
                        mStream.Position = 0;
                        mStream.CopyTo(stream);
                    }
                }
                return stream.ToArray();
            }
        }
 public static byte[] GetPreChunk(Chunk c)
 {
     using (MinecraftPacketStream stream = new MinecraftPacketStream())
     {
         stream.WriteByte((byte)MinecraftOpcode.PreChunk);
         stream.WriteInt(c.Position.X);
         stream.WriteInt(c.Position.Z);
         stream.WriteBool(true);
         return stream.ToArray();
     }
 }