private void Prepare() { try { if (!serverDirectory.Exists) { serverDirectory.Create(); } if (!Flags.IgnoreNotEmtpyDir && !Utils.IsDirEmpty(serverDirectory)) { CreationStateChanged?.Invoke(this, new ServerCreationCanceledState(ServerCreationCanceledReason.TargetDirectoryNotEmpty)); } else { StartDownload(); } } catch (IOException ex) { CreationStateChanged?.Invoke(this, new ServerCreationCanceledState(ServerCreationCanceledReason.IOException, ex)); } catch (Exception ex) { CreationStateChanged?.Invoke(this, new ServerCreationCanceledState(ServerCreationCanceledReason.Unknown, ex)); } }
private void DownloadEngine(Uri uri) { try { WebClient client = new WebClient(); client.DownloadProgressChanged += (sender, e) => { CreationStateChanged?.Invoke(this, new ServerCreationDownloadState(e.ProgressPercentage, e.BytesReceived, e.TotalBytesToReceive)); }; client.DownloadFileCompleted += (sender, e) => { CreationStateChanged?.Invoke(this, new ServerCreationStateArgs(ServerCreationState.FirstStart)); if (Flags.RunServerForFirstTime) { RunForFirstTime(); } else { CreationStateChanged?.Invoke(this, new ServerCreationStateArgs(ServerCreationState.Finished)); } }; client.DownloadFileAsync(uri, EngineFile.FullName); } catch (WebException) { throw; } catch (Exception) { throw; } }
private void JavaCheck() { if (Utils.IsJavaInstalled()) { Prepare(); } else { CreationStateChanged?.Invoke(this, new ServerCreationCanceledState(ServerCreationCanceledReason.JavaNotInstalled)); } }
private void Eula_AgreementStateChanged(object sender, bool e) { if (e) { MinecraftServer server = new MinecraftServer(EngineFile); server.ServerOutput += (s, e2) => { JavaOutput?.Invoke(s, e2); }; server.ServerStateChanged += Server_ServerStateChanged; server.PreparingSpawnArea += (sender2, e2) => { CreationStateChanged?.Invoke(this, new ServerCreationStateArgs(ServerCreationState.PreparingSpawn)); }; server.Start(); } else { CreationStateChanged?.Invoke(this, new ServerCreationCanceledState(ServerCreationCanceledReason.EulaAgreementRequired)); } }
private void Server_ServerStateChanged(object sender, ServerState e) { switch (e) { case ServerState.Stopped: CreationStateChanged?.Invoke(this, new ServerCreationStateArgs(ServerCreationState.Finished)); break; case ServerState.Running: CreationStateChanged?.Invoke(this, new ServerCreationStateArgs(ServerCreationState.Finishing)); ((MinecraftServer)sender).Stop(); break; default: break; } }
private void StartDownload() { Uri uri; switch (serverType) { case AdvancedVersionAPI.VersionType.VANILLA: CreationStateChanged?.Invoke(this, new ServerCreationStateArgs(ServerCreationState.GettingDownloadInformation)); uri = new Uri(serverVersion.url); CreationStateChanged?.Invoke(this, new ServerCreationStateArgs(ServerCreationState.StartingDownload)); DownloadEngine(uri); break; case AdvancedVersionAPI.VersionType.SPIGOT: CreationStateChanged?.Invoke(this, new ServerCreationStateArgs(ServerCreationState.GettingDownloadInformation)); uri = new Uri(serverVersion.url); CreationStateChanged?.Invoke(this, new ServerCreationStateArgs(ServerCreationState.StartingDownload)); DownloadEngine(uri); break; case AdvancedVersionAPI.VersionType.CRAFTBUKKIT: CreationStateChanged?.Invoke(this, new ServerCreationStateArgs(ServerCreationState.GettingDownloadInformation)); uri = new Uri(serverVersion.url); CreationStateChanged?.Invoke(this, new ServerCreationStateArgs(ServerCreationState.StartingDownload)); DownloadEngine(uri); break; default: CreationStateChanged?.Invoke(this, new ServerCreationCanceledState(ServerCreationCanceledReason.NotSupportedServerType)); break; } }