Example #1
0
        public Server()
        {
            if (theServ != null) return;
            theServ = this;

            salt = Spacecraft.random.Next(100000, 999999);

            IP = "";

            port = Config.GetInt("port", 25565);
            maxplayers = Config.GetInt("max-players", 16);
            name = Config.Get("server-name", "Minecraft Server");
            motd = Config.Get("motd", "Powered by " + Color.Green + "Spacecraft");

            Game = new GameBase();
        }
Example #2
0
        public void Start()
        {
            // Initialize the map, using the saved one if it exists.
            if (File.Exists(Map.levelName)) {
                map = Map.Load(Map.levelName);
            } else if (File.Exists("server_level.dat")) {
                map = Map.Load("server_level.dat");
            } else if (File.Exists("level.mclevel")) {
                map = Map.Load("level.mclevel");
            }

            if (map == null) {
                map = new Map();
                map.Generate();
                map.Save(Map.levelName);
            }

            map.BlockChange += new Map.BlockChangeHandler(map_BlockChange);

            try
            {
                Players = new List<Player>();
                Robots = new List<Robot>();

                Listener = new TcpListener(new IPEndPoint(IPAddress.Any, port));
                Listener.Start();

                Spacecraft.Log("Listening on port " + port.ToString());
                Spacecraft.Log("Server name is " + Spacecraft.StripColors(name));
                Spacecraft.Log("Server MOTD is " + Spacecraft.StripColors(motd));

                Running = true;

                Thread T = new Thread(AcceptClientThread, Spacecraft.StackSize);
                T.Name = "AcceptClient Thread";
                T.Start();

                Thread T2 = new Thread(TimerThread, Spacecraft.StackSize);
                T2.Name = "Timer thread";
                T2.Start();

                HttpMonitor.Start(Config.GetInt("http-port", port + 1));

                console = new ConsolePlayer();
                console.Message += new Player.PlayerMsgHandler(Player_Message);
                console.Start();

                Game = new AirshipWars.AirshipWars();

                OnExit.WaitOne();
                Running = false;
            }
            catch (SocketException e) {
                Spacecraft.LogError("uncaught SocketException", e);
            }
            finally
            {
                // Stop listening for new clients.
                Listener.Stop();
                HttpMonitor.Stop();
            }

            try {
                Shutdown();
            }
            catch (Exception e) {
                Spacecraft.LogError("error while shutting down", e);
            }
        }