//http://localhost:8080/fill?from=3%205%203&to=30 3f0 30&tileName=stone&tileData=0 private static void Main() { Console.CancelKeyPress += delegate(object sender, ConsoleCancelEventArgs e) { e.Cancel = true; Program.keepRunning = false; }; using (var codeConnectionProcess = Prerequisites()) { var cmdHandler = new CommandControl(); ; using (var commandService = MinecraftCommandService.Run()) { //check if connected, if not send connection command through AHK var ahk = AutoHotKey.Run(); AutoHotKey.Callback = (s) => { Console.WriteLine(s); var args = s.Split(' '); cmdHandler.HandleCommand(args); }; Console.WriteLine(@" Press Ctrl-C to shutdown."); ahk.ExecRaw(@" WinMinimize Code Connection for Minecraft WinActivate Minecraft send {esc} sleep 500 send / sleep 200 send connect " + wsUrl + "{enter}"); var minecraftAPI = new MinecraftCommandService(); minecraftAPI.Command("executeasother?origin=@p&position=~%20~%20~&command=title%20@s%20title%20WorldEdit%20Started"); while (keepRunning) { Thread.Sleep(500); } minecraftAPI.Command("executeasother?origin=@p&position=~%20~%20~&command=title%20@s%20subtitle WorldEdit Shutting Down"); minecraftAPI.Wait(); MinecraftCommandService.ShutDown(); commandService.Cancel(); } } }
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(); } }