static HookResult OnPreReset(Terraria.RemoteClient remoteClient)
 {
     if (Terraria.Netplay.IsServerRunning)
     {
         if (remoteClient.IsActive)
         {
             _hookManager.InvokeServerLeave(remoteClient.Id);
         }
         _hookManager.InvokeServerSocketReset(remoteClient);
     }
     return(HookResult.Continue);
 }
        private OTAPI.HookResult PreResetHandler(Terraria.RemoteClient remoteClient)
        {
            Debug.Assert(remoteClient != null);
            Debug.Assert(remoteClient.Id >= 0 && remoteClient.Id < Count);

            // Check if the client was active since this gets called when setting up `RemoteClient` as well.
            if (!remoteClient.IsActive)
            {
                return(OTAPI.HookResult.Continue);
            }

            var player = this[remoteClient.Id];
            var evt    = new PlayerQuitEvent(player);

            _events.Raise(evt, _log);
            return(OTAPI.HookResult.Continue);
        }
 public static void Kick(this Terraria.RemoteClient sock, string reason)
 {
     Terraria.NetMessage.SendData((int)Packet.DISCONNECT, sock.Id, -1, reason);
 }
 public static string RemoteAddress(this Terraria.RemoteClient sock)
 {
     return(sock.Socket.GetRemoteAddress().ToString());
 }
 public static bool CanSendWater(this Terraria.RemoteClient sock)
 {
     //return state >= 3;
     return((Terraria.NetMessage.buffer[sock.Id].broadcast || sock.State >= 3) && sock.Socket.IsConnected());
 }
 public static bool IsPlaying(this Terraria.RemoteClient sock)
 {
     return(sock.State == 10);
 }