static void MakeConfig()
 {
     config = new Config();
     config.ServerIp = GetInput("Server address");
     string port = GetInput("Port (press enter for 8787)");
     while (!int.TryParse(port, out config.Port) && port != string.Empty) ;
     if (config.Port == 0)
         config.Port = 8787;
     config.Username = GetInput("Username");
     config.Password = GetMaskedInput("Password");
     config.Save();
     Console.Clear();
 }
        static void Main(string[] args)
        {
            if (!File.Exists("config.json"))
                MakeConfig();
            else
                config = Config.Load();

            Client client = new Client();
            try
            {
                client.PacketReceived += Client_PacketReceived;
                client.ClientDisconnected += Client_ClientDisconnected;
                Console.WriteLine("Connecting...");
                client.Connect(config.ServerIp, config.Port);
                Console.Clear();
                client.Send(new Packet((short)PacketType.Authenticate, (byte)0, Version.Major, Version.Minor, config.Username, config.Password));
            }
            catch
            {
                Console.WriteLine("Error connecting. Attempting to reconnect in 5 seconds...");
                resetEvent.Set();
            }

            if (client.Connected)
            {
                new Thread(() =>
                {
                    for (;;)
                    {
                        string input = Console.ReadLine();
                        if (!client.tcpClient.Connected)
                            break;
                        client.Send(new Packet((short)PacketType.Input, input));
                    }
                }).Start();
            }

            resetEvent.WaitOne();
            Thread.Sleep(5000);
            Console.Clear();
            Main(args);
            return;
        }