示例#1
0
 public Chart(string savePath)
 {
     State = States.Initializing;
     //先这样子用着隔壁的,反正这类也不会被加载到
     Config   = new MonitorPlayerConfig(Environment.GetCommandLineArgs());
     DataPath = string.IsNullOrWhiteSpace(savePath) != true ? savePath : throw new ArgumentNullException(nameof(savePath));
     ping     = new Ping(Config.ServerHost, Config.ServerPort);
 }
示例#2
0
 public MonitorPlayer(MonitorPlayerConfig config)
 {
     State             = States.Initializing;
     Config            = config != null ? config : throw new ArgumentNullException(nameof(config));
     MainPlayerManager = new PlayerManager(config);
     //注册玩家上下线的事件
     if (!string.IsNullOrWhiteSpace(Config.RunCommandForPlayerJoin))
     {
         MainPlayerManager.Joined += player =>
         {
             const string     reg       = @"^(\S+)( (.*))?$";
             ProcessStartInfo StartInfo = new ProcessStartInfo();
             StartInfo.FileName = Regex.Replace(Config.RunCommandForPlayerJoin, reg, "$1");
             if (Config.RunCommandForPlayerJoin.Contains(" "))
             {
                 StartInfo.Arguments = Regex
                                       .Replace(Config.RunCommandForPlayerJoin, reg, "$3")
                                       .Replace("$PLAYER_NAME", player.Name)
                                       .Replace("$PLAYER_UUID", player.Uuid.ToString());
             }
             Process.Start(StartInfo);
         };
     }
     if (!string.IsNullOrWhiteSpace(Config.RunCommandForPlayerDisconnected))
     {
         MainPlayerManager.Disconnected += player =>
         {
             const string     reg       = @"^(\S+)( (.*))?$";
             ProcessStartInfo StartInfo = new ProcessStartInfo();
             StartInfo.FileName = Regex.Replace(Config.RunCommandForPlayerDisconnected, reg, "$1");
             if (Config.RunCommandForPlayerDisconnected.Contains(" "))
             {
                 StartInfo.Arguments = Regex
                                       .Replace(Config.RunCommandForPlayerDisconnected, reg, "$3")
                                       .Replace("$PLAYER_NAME", player.Name)
                                       .Replace("$PLAYER_UUID", player.Uuid.ToString());
             }
             Process.Start(StartInfo);
         };
     }
     //解析服务器地址(如果是域名的话)
     try
     {
         SLP = new Ping(Config.ServerHost, Config.ServerPort);
     }
     catch (SocketException se)
     {
         if (se.SocketErrorCode == SocketError.HostNotFound)
         {
             Screen.Clear();
             ColorfullyConsole.WriteLine("&c错误&r:&f你输入的服务器地址不存在");
             ColorfullyConsole.WriteLine($"&e详细信息&r:&4{se}");
             Program.Exit(-1);
         }
     }
     State = States.Initialized;
 }
示例#3
0
 public PlayerManager(MonitorPlayerConfig config)
 {
     Config = config ?? throw new ArgumentNullException(nameof(config));
 }