public void SendPacket(Packet packet) { if (packet.PacketId == -1) { throw new Exception(); } byte[] encodedPacket; using (MemoryStream ms = new MemoryStream()) { using (MinecraftStream mc = new MinecraftStream(ms)) { mc.WriteVarInt(packet.PacketId); packet.Encode(mc); encodedPacket = ms.ToArray(); mc.Position = 0; mc.SetLength(0); if (CompressionEnabled) { if (encodedPacket.Length >= CompressionThreshold) { byte[] compressed; CompressData(encodedPacket, out compressed); mc.WriteVarInt(encodedPacket.Length); mc.Write(compressed); } else //Uncompressed { mc.WriteVarInt(0); mc.Write(encodedPacket); } encodedPacket = ms.ToArray(); } } } PacketWriteQueue.Add(encodedPacket); /*using (MemoryStream ms = new MemoryStream()) * { * using (MinecraftStream mc = new MinecraftStream(ms)) * { * if (EncryptionInitiated) * { * mc.InitEncryption(SharedSecret); * } * * mc.WriteVarInt(encodedPacket.Length); * mc.Write(encodedPacket); * } * SendDataInternal(ms.ToArray()); * }*/ }
private byte[] EncodePacket(EnqueuedPacket enqueued) { var packet = enqueued.Packet; byte[] encodedPacket; using (MemoryStream ms = new MemoryStream()) { using (MinecraftStream mc = new MinecraftStream(ms)) { mc.WriteVarInt(packet.PacketId); packet.Encode(mc); encodedPacket = ms.ToArray(); mc.Position = 0; mc.SetLength(0); if (enqueued.CompressionEnabled) { if (encodedPacket.Length >= CompressionThreshold) { //byte[] compressed; //CompressData(encodedPacket, out compressed); mc.WriteVarInt(encodedPacket.Length); using (ZlibStream outZStream = new ZlibStream(mc, CompressionMode.Compress, CompressionLevel.Default, true)) { outZStream.Write(encodedPacket, 0, encodedPacket.Length); } // mc.Write(compressed); } else //Uncompressed { mc.WriteVarInt(0); mc.Write(encodedPacket); } encodedPacket = ms.ToArray(); } } } return(encodedPacket); }
private byte[] EncodePacket(EnqueuedPacket enqueued) { var packet = enqueued.Packet; byte[] encodedPacket; using (MemoryStream ms = new MemoryStream()) { using (MinecraftStream mc = new MinecraftStream(ms)) { mc.WriteVarInt(packet.PacketId); packet.Encode(mc); encodedPacket = ms.ToArray(); mc.Position = 0; mc.SetLength(0); if (enqueued.CompressionEnabled) { if (encodedPacket.Length >= CompressionThreshold) { byte[] compressed; CompressData(encodedPacket, out compressed); mc.WriteVarInt(encodedPacket.Length); mc.Write(compressed); } else //Uncompressed { mc.WriteVarInt(0); mc.Write(encodedPacket); } encodedPacket = ms.ToArray(); } } } return(encodedPacket); }