예제 #1
0
        public ServerInfo LoadRegisteredPlayers(ServerInfo server)
        {
            string filePath = $@"{configDir}\{server.ServerName}.players";

            if (!File.Exists(filePath))
            {
                File.Create(filePath).Close();
                return(server);
            }
            foreach (string entry in File.ReadAllLines(filePath))
            {
                if (entry.StartsWith("#") || string.IsNullOrWhiteSpace(entry))
                {
                    continue;
                }
                string[] split = entry.Split(',');
                InstanceProvider.GetServiceLogger().AppendLine($"Server \"{server.ServerName}\" Loaded registered player: {split[1]}");
                Player playerFound = server.KnownPlayers.FirstOrDefault(ply => ply.XUID == split[0]);
                if (playerFound == null)
                {
                    server.KnownPlayers.Add(new Player(split[0], split[1], DateTime.Now.Ticks.ToString(), "0", "0", split[2] == "true", split[3], split[4] == "true", true));
                    continue;
                }
                InstanceProvider.GetPlayerManager().UpdatePlayerFromCfg(split[0], split[1], split[2], split[3], split[4], server);
            }
            return(server);
        }
예제 #2
0
        private void StdOutToLog(object sender, DataReceivedEventArgs e)
        {
            serverInfo.ConsoleBuffer = serverInfo.ConsoleBuffer ?? new ServerLogger(serverInfo.LogToFileEnabled.Value == "true", serverInfo.ServerName);
            serverInfo.ConsoleBuffer.Append($"{serverInfo.ServerName}: {e.Data}\r\n");
            if (e.Data != null)
            {
                string dataMsg = e.Data;
                if (dataMsg.Contains(startupMessage))
                {
                    CurrentServerStatus = ServerStatus.Started;
                    Thread.Sleep(1000);

                    if (serverInfo.StartCmds.Count > 0)
                    {
                        RunStartupCommands();
                    }
                }
                if (dataMsg.Contains("[INFO] Player connected"))
                {
                    int    usernameStart  = dataMsg.IndexOf(':') + 2;
                    int    usernameEnd    = dataMsg.IndexOf(',');
                    int    usernameLength = usernameEnd - usernameStart;
                    int    xuidStart      = dataMsg.IndexOf(':', usernameEnd) + 2;
                    string username       = dataMsg.Substring(usernameStart, usernameLength);
                    string xuid           = dataMsg.Substring(xuidStart, dataMsg.Length - xuidStart);
                    Console.WriteLine($"Player {username} connected with XUID: {xuid}");
                    InstanceProvider.GetPlayerManager().PlayerConnected(username, xuid, serverInfo);
                }
                if (dataMsg.Contains("[INFO] Player disconnected"))
                {
                    int    usernameStart  = dataMsg.IndexOf(':') + 2;
                    int    usernameEnd    = dataMsg.IndexOf(',');
                    int    usernameLength = usernameEnd - usernameStart;
                    int    xuidStart      = dataMsg.IndexOf(':', usernameEnd) + 2;
                    string username       = dataMsg.Substring(usernameStart, usernameLength);
                    string xuid           = dataMsg.Substring(xuidStart, dataMsg.Length - xuidStart);
                    Console.WriteLine($"Player {username} disconnected with XUID: {xuid}");
                    InstanceProvider.GetPlayerManager().PlayerDisconnected(xuid, serverInfo);
                }
            }
        }