public void Start(string serverName, string portNumber) { using (var server = new SocketServer("ws://0.0.0.0:" + portNumber)) // will stop on disposal. { server.Start(); minecraftService = new MinecraftWebsocketCommandService(server); foreach (var gameHandler in GameHandlers) { if (gameHandler is ISendCommand) { ((ISendCommand)gameHandler).CommandService = minecraftService; } server.AddHandler(gameHandler); } var eventSubscriptions = GameHandlers.SelectMany(a => a.CanHandle()).Distinct().OrderBy(a => a).ToList(); server.AddHandler(new ConnectionHandler(minecraftService, serverName, eventSubscriptions)); var ahk = AutoHotKey.Run("hotkeys.ahk"); AutoHotKey.Callback = s => { Console.WriteLine(s); var args = s.Split(' '); HandleHotKeys(args); }; using (var cancelationToken = minecraftService.Run()) { while (keepRunning) { Thread.Sleep(500); } ahk.Terminate(); minecraftService.Status(serverName + " Shutting Down"); minecraftService.Wait(); minecraftService.ShutDown(); cancelationToken.Cancel(); } server.Stop(); } }
public void Plugin(IGameEventHandler handler) { GameHandlers.Add(handler); }