protected void SendPacket(Packet packet) { using (MemoryStream stream = new MemoryStream()) { OutputBuffer outgoing = new OutputBuffer(stream); outgoing.WriteVarInt(GetOutgoingID(packet)); packet.Write(outgoing); if (compression_treshold > 0) { var content = stream.ToArray(); outgoing = new OutputBuffer(); if (content.Length >= compression_treshold) { byte[] compressed_packet = ZlibUtils.Compress(content, (MemoryStream)outgoing.GetStream()); outgoing.WriteVarInt(compressed_packet.Length); outgoing.WriteData(compressed_packet); } else { outgoing.WriteVarInt(0); outgoing.WriteData(content); } } writer.WriteVarInt((int)outgoing.GetStream().Length); writer.WriteData(outgoing.ToArray()); outgoing.Dispose(); } }
protected Packet ReadPacket() { int size = reader.ReadVarInt(); Packet packet = null; using (MemoryStream stream = new MemoryStream(reader.ReadData(size), false)) { InputBuffer input = new InputBuffer(stream); if (ProtocolVersion >= 47 && compression_treshold > 0) { int sizeUncompressed = input.ReadVarInt(); if (sizeUncompressed != 0) { input = new InputBuffer(ZlibUtils.Decompress(stream, sizeUncompressed)); } } int packetID = input.ReadVarInt(); packet = CreateIncomingPacket(packetID); if (packet != null) { packet.Read(input); } input.Dispose(); } return(packet); }