コード例 #1
0
        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);
        }