public ClientConnection(Socket socket, int slot)
            : base(socket)
        {
            //var buf = NetMessage.buffer[id];
            //socket.SendBufferSize = 128000;
            connectedAt = time.Elapsed;

            if (slot >= 0) AssignSlot (slot);

            socket.LingerState = new LingerOption (true, 10);

            var ctx = new Terraria_Server.Plugins.HookContext
            {
                Connection = this,
            };

            var args = new Terraria_Server.Plugins.HookArgs.NewConnection ();

            Terraria_Server.Plugins.HookPoints.NewConnection.Invoke (ref ctx, ref args);

            if (ctx.CheckForKick ())
                return;

            lock (All)
            {
                indexInAll = All.Count;
                All.Add (this);
            }

            StartReceiving (new byte [4192]);
        }
        public ClientConnection(Socket socket, int slot) : base(socket)
        {
            //var buf = NetMessage.buffer[id];
            //socket.SendBufferSize = 128000;
            connectedAt = time.Elapsed;

            if (slot >= 0)
            {
                AssignSlot(slot);
            }

            socket.LingerState = new LingerOption(true, 10);

            var ctx = new Terraria_Server.Plugins.HookContext
            {
                Connection = this,
            };

            var args = new Terraria_Server.Plugins.HookArgs.NewConnection();

            Terraria_Server.Plugins.HookPoints.NewConnection.Invoke(ref ctx, ref args);

            if (ctx.CheckForKick())
            {
                return;
            }

            lock (All)
            {
                indexInAll = All.Count;
                All.Add(this);
            }

            StartReceiving(new byte [4192]);
        }