예제 #1
0
        private void InitiateVariables()
        {
            Globals.Rand         = new Random();
            Console.Title        = Globals.ProtocolName;
            ServerSettings.Debug = Config.GetProperty("debug", false);
            ServerSettings.DisplayPacketErrors = Config.GetProperty("ShowNetworkErrors", false);
#if DEBUG
            ServerSettings.Debug = true;
#endif
            ServerSettings.MaxPlayers = Config.GetProperty("MaxPlayers", 10);
            ServerSettings.Seed       = Config.GetProperty("Seed", "SharpMC");
            ServerSettings.Motd       = Config.GetProperty("motd", "A SharpMC Powered Server");

            Globals.LevelManager = new LevelManager(LoadLevel());
            Globals.LevelManager.AddLevel("nether", new NetherLevel("nether"));
            ServerSettings.OnlineMode = Config.GetProperty("Online-mode", false);
            Globals.ChatHandler       = new Synchronized <ChatHandler>(new ChatHandler());

            Globals.ServerKey = PacketCryptography.GenerateKeyPair();

            Globals.ClientManager = new ClientManager();

            Globals.ConsolePlayer = new Player(Globals.LevelManager.MainLevel)
            {
                Username = "******",
                Wrapper  = new ClientWrapper(null),
                Uuid     = Guid.NewGuid().ToString(),
                Gamemode = Gamemode.Spectator,
            };
            Globals.ConsolePlayer.Wrapper.Player = Globals.ConsolePlayer;
            Globals.ConsolePlayer.IsOperator     = true;

            Globals.MessageFactory = new MessageFactory();

            Globals.PluginManager = new PluginManager();

            Globals.ServerListener = new BasicListener();

            OperatorLoader.LoadOperators();
        }
예제 #2
0
        public static void StopServer(string stopMsg = "Shutting down server...")
        {
            ConsoleFunctions.WriteInfoLine("Shutting down...");
            Disconnect d = new Disconnect(null);

            d.Reason = new McChatMessage("§f" + stopMsg);
            BroadcastPacket(d);
            ConsoleFunctions.WriteInfoLine("Saving all player data...");
            foreach (var player in LevelManager.GetAllPlayers())
            {
                player.SavePlayer();
            }
            OperatorLoader.SaveOperators();
            ConsoleFunctions.WriteInfoLine("Disabling plugins...");
            PluginManager.DisablePlugins();
            ConsoleFunctions.WriteInfoLine("Saving config file...");
            Config.SaveConfig();
            ConsoleFunctions.WriteInfoLine("Saving chunks...");
            LevelManager.SaveAllChunks();
            ServerListener.StopListenening();
            Environment.Exit(0);
        }