internal static IDictionary <int, Type> GetProtocols()
        {
            IDictionary <int, Type> protocols = new Dictionary <int, Type>();

            //var subclasses = from assembly in AppDomain.CurrentDomain.GetAssemblies()
            var mod_types  = ModLoader.LoadedMods.Select(mod => mod.GetType());
            var assemblies = mod_types.Select(mod_type => mod_type.Assembly);
            var subclasses = from assembly in assemblies
                             from type in assembly.GetTypes()
                             where type.IsSubclassOf(typeof(OldPacketProtocol)) && !type.IsAbstract
                             select type;

            foreach (Type subclass in subclasses)
            {
                if (HamstarHelpersMod.Instance.Config.DebugModeNetInfo)
                {
                    string name = subclass.Namespace + "." + subclass.Name;
                    LogHelpers.Log("PacketProtocol.GetProtocols() - " + name);
                }

                try {
                    string name = subclass.Namespace + "." + subclass.Name;
                    int    code = OldPacketProtocol.GetPacketCode(name);

                    protocols[code] = subclass;
                } catch (Exception e) {
                    LogHelpers.Log(subclass.Name + " - " + e.Message);
                }
            }

            return(protocols);
        }
        private ModPacket GetServerPacket(bool is_request)
        {
            if (Main.netMode != 2)
            {
                throw new Exception("Not a server");
            }

            string name   = this.GetPacketName();
            var    packet = HamstarHelpersMod.Instance.GetPacket();

            packet.Write((int)OldPacketProtocol.GetPacketCode(name));
            packet.Write(is_request);

            return(packet);
        }
        private ModPacket GetClientPacket(bool is_request, bool sync_to_all)
        {
            if (Main.netMode != 1)
            {
                throw new Exception("Not a client");
            }

            string name   = this.GetPacketName();
            var    packet = HamstarHelpersMod.Instance.GetPacket();

            packet.Write((int)OldPacketProtocol.GetPacketCode(name));
            packet.Write(is_request);
            packet.Write(sync_to_all);

            return(packet);
        }