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(); }
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); } }