public void HandleProtocol(ByteReader data) { int clientProtocol = data.ReadInt32(); if (clientProtocol != MpVersion.Protocol) { Player.Disconnect(MpDisconnectReason.Protocol, ByteWriter.GetBytes(MpVersion.Version, MpVersion.Protocol)); return; } var modConfigFiles = MultiplayerMod.settings.syncModConfigs ? ModManagement.GetSyncableConfigFiles() : new Dictionary <string, string>(); // Compress configs, to keep packet size < 50kb limit. JSON encode first, as the many tiny files are better compressed together var modConfigsCompressed = GZipStream.CompressString(SimpleJson.SerializeObject(modConfigFiles)); if (MpVersion.IsDebug) { Log.Message($"Sending {modConfigFiles.Keys.Count} mod config files"); foreach (KeyValuePair <string, string> modConfigFile in modConfigFiles) { Log.Message(modConfigFile.Key + ": " + modConfigFile.Value.Length); } Log.Message($"modConfigsCompressed size: {modConfigsCompressed.Length}"); } connection.SendFragmented(Packets.Server_ModList, Server.rwVersion, Server.modNames, Server.modIds, Server.workshopModIds, modConfigsCompressed); }