示例#1
0
 public MinecraftServer(MinecraftRunner runner, ServerHub hub, string serverFolder, Settings settings)
 {
     Runner = runner;
     Hub    = hub;
     MinecraftServerFolder = serverFolder;
     Settings          = settings;
     ConsecutiveErrors = 0;
     MessageHandler    = new MessageHandler(this);
     MessageHandler.DoneMessageEvent   += MessageHandler_DoneMessageEvent;
     MessageHandler.PlayerMessageEvent += MessageHandler_PlayerMessageEvent;
     MessageHandler.PlayersEvent       += MessageHandler_PlayersEvent;
     MessageHandler.TpsMessageEvent    += MessageHandler_TpsMessageEvent;
     MessageHandler.PlayerJoinedEvent  += MessageHandler_PlayerJoinedEvent;
     MessageHandler.PlayerLeftEvent    += MessageHandler_PlayerLeftEvent;
     Hub.HubConnectionEstablished      += Hub_HubConnectionEstablished;
     Hub.KeepAlive             += Hub_KeepAlive;
     Hub.ChatMessageReceived   += Hub_ChatMessageReceived;
     Hub.ServerCommandReceived += Hub_ServerCommandReceived;
     Data          = new ServerData(name: "test");
     ServerRunLoop = new CancellableRunLoop();
     ServerRunLoop.LoopIterationEvent += ServerRunLoop_LoopIterationEvent;
     DataUpdateTimer           = new System.Timers.Timer(TimeSpan.FromSeconds(30).TotalMilliseconds);
     DataUpdateTimer.Elapsed  += DataUpdateTimer_Elapsed;
     DataUpdateTimer.AutoReset = true;
     DataUpdateTimer.Enabled   = true;
 }
        public async Task MainAsync(string[] args)
        {
            using var cancellationToken = new CancellationTokenSource();
            var settings = Settings.FromFile("Settings.json");
            var runner   = new MinecraftRunner(Directory.GetCurrentDirectory(), settings, cancellationToken.Token);

            Console.CancelKeyPress += new ConsoleCancelEventHandler(delegate(object sender, ConsoleCancelEventArgs e)
            {
                Console.WriteLine("Cancellation received");
                cancellationToken.Cancel();
                e.Cancel = true;
            });
            await runner.StartAsync();

            Console.WriteLine("Closing");
        }