Save() static private method

static private Save ( ) : void
return void
Beispiel #1
0
        // Disconnect all players
        public void ShutDown()
        {
            try {
                log.Log("Server shutting down.", LogType.SystemActivity);
                keepGoing = false;
                if (mainThread != null && mainThread.IsAlive)
                {
                    mainThread.Join();
                }

                if (heartbeat != null)
                {
                    heartbeat.ShutDown();
                }
                if (tasks != null)
                {
                    tasks.ShutDown();
                }

                lock ( playerListLock ) {
                    for (int i = 1; i < players.Length; i++)
                    {
                        if (players[i] != null)
                        {
                            players[i].session.Kick("Server shutting down.");
                        }
                        players[i] = null;
                    }
                    playerCount = 0;
                }

                if (config.GetBool("SaveOnShutdown") && map != null)
                {
                    map.Save();
                }

                if (db != null)
                {
                    db.Save();
                }
                if (bans != null)
                {
                    bans.Save();
                }
                if (server != null)
                {
                    server.ShutDown();
                }
            } catch (Exception ex) {
                log.Log("Error occured while trying to shut down: {0}", LogType.FatalError, ex.Message);
            }
        }
        static void ImportBans(Player player, CommandReader cmd)
        {
            string serverName = cmd.Next();
            string fileName   = cmd.Next();

            // Make sure all parameters are specified
            if (serverName == null || fileName == null)
            {
                CdImport.PrintUsage(player);
                return;
            }

            // Check if file exists
            if (!File.Exists(fileName))
            {
                player.Message("File not found: {0}", fileName);
                return;
            }

            string[] names;

            switch (serverName.ToLower())
            {
            case "mcsharp":
            case "mczall":
            case "mclawl":
                try {
                    names = File.ReadAllLines(fileName);
                } catch (Exception ex) {
                    Logger.Log(LogType.Error,
                               "Could not open \"{0}\" to import bans: {1}",
                               fileName, ex);
                    return;
                }
                break;

            default:
                player.Message("fCraft does not support importing from {0}", serverName);
                return;
            }

            if (!cmd.IsConfirmed)
            {
                player.Confirm(cmd, "Import {0} bans from \"{1}\"?",
                               names.Length, Path.GetFileName(fileName));
                return;
            }

            string reason = "(import from " + serverName + ")";

            foreach (string name in names)
            {
                if (Player.IsValidName(name))
                {
                    PlayerInfo info = PlayerDB.FindExact(name) ??
                                      PlayerDB.AddUnrecognizedPlayer(name, RankChangeType.Default);
                    info.Ban(player, reason, true, true);
                }
                else
                {
                    IPAddress ip;
                    if (IPAddressUtil.IsIP(name) && IPAddress.TryParse(name, out ip))
                    {
                        ip.BanIP(player, reason, true, true);
                    }
                    else
                    {
                        player.Message("Could not parse \"{0}\" as either name or IP. Skipping.", name);
                    }
                }
            }

            PlayerDB.Save();
            IPBanList.Save();
        }