static void LogPacket(StreamWriter sw, bool ClientToServer, byte PacketID, PacketReader pr, params object[] args) { try { if (sw == null) { return; } bool Suppressed = (ClientToServer && ClientDenyPackets.Contains(PacketID)) || (!ClientToServer && ServerDenyPackets.Contains(PacketID)); if (FilterOutput && !Filter.Contains(PacketID)) { return; } if (IgnoreFilterOutput && IgnoreFilter.Contains(PacketID)) { return; } if (ClientToServer && SuppressClient) { return; } if (!ClientToServer && SuppressServer) { return; } string address = pr.Client.Client.RemoteEndPoint.ToString(); if (ClientToServer) { sw.WriteLine("[" + address + "] {" + DateTime.Now.ToLongTimeString() + "} [CLIENT->SERVER" + (Suppressed ? " SUPPRESSED" : "") + "]: " + ((LibMinecraft.Model.PacketID)PacketID).ToString() + " (0x" + PacketID.ToString("x") + ")"); } else { sw.WriteLine("[" + address + "] {" + DateTime.Now.ToLongTimeString() + "} [SERVER->CLIENT" + (Suppressed ? " SUPPRESSED" : "") + "]: " + ((LibMinecraft.Model.PacketID)PacketID).ToString() + " (0x" + PacketID.ToString("x") + ")"); } if (pr.Payload.Length == 0) { return; } sw.WriteLine("\t[" + DumpArray(pr.Payload) + "]"); for (int i = 0; i < args.Length; i += 2) { if (args[i + 1] is byte[]) { sw.WriteLine("\t" + args[i].ToString() + " (Byte[]): [" + DumpArray((byte[])args[i + 1]) + "]"); } else { sw.WriteLine("\t" + args[i].ToString() + " (" + args[i + 1].GetType().Name + "): " + args[i + 1]); } } sw.Flush(); } catch { } }