/// <summary> /// The main start method that loads the controllers and prints information to the console /// </summary> public void Start() { String[] serverArgs = new String[] { "", }; m_serverThread = ServerWrapper.HellionDedi.StartServer(serverArgs); m_serverWrapper.Init(); Thread.Sleep(5000); m_server = ServerWrapper.HellionDedi.Server; if (IsRunning) { Console.WriteLine("Hellion Extended Server: World Initialized!"); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); Thread.Sleep(1); stopwatch.Stop(); long num = (long)(1000.0 / stopwatch.Elapsed.TotalMilliseconds); Console.WriteLine(string.Format("==============================================================================\r\n\tServer name: {5}\r\n\tServer ID: {1}\r\n\tStart date: {0}\r\n\tServer ticks: {2}{4}\r\n\tMax server ticks (not precise): {3}\r\n==============================================================================", (object)DateTime.UtcNow.ToString("yyyy/MM/dd HH:mm:ss.ffff"), (object)(Server.NetworkController.ServerID <= 0L ? "Not yet assigned" : string.Concat((object)Server.NetworkController.ServerID)), 64, (object)num, (object)(64 > num ? " WARNING: Server ticks is larger than max tick" : ""), (object)Server.ServerName)); } new NetworkController(m_server.NetworkController); Console.WriteLine("Ready for connections!"); HES.PrintHelp(); }
public bool ApplyUpdate() { try { Console.WriteLine("HellionExtendedServer: Applying Update..."); string updatePath = Globals.GetFolderPath(HESFolderName.Updates); string hesPath = Globals.GetFolderPath(HESFolderName.Hes); // for all of the files already in the server folder foreach (var file in CurrentFileList) { // if the old file has an updated version if (FileList.Exists(x => x.Name == file.Name)) { var newFile = FileList.Find(x => x.Name == file.Name); var fullName = Path.GetFullPath(file.FullName); // rename old file if the file exists if (File.Exists(fullName)) { File.Move(fullName, fullName + ".old"); } // move new file if it doesn't already exist if (!File.Exists(fullName) && File.Exists(Path.GetFullPath(newFile.FullName))) { File.Move(Path.GetFullPath(newFile.FullName), fullName); } } } if (Config.Instance.Settings.AutoRestartsEnable && !GUIMode) { HES.Restart(); } OnUpdateApplied?.Invoke(m_useDevRelease ? m_developmentRelease : m_currentRelease); return(true); } catch (Exception ex) { Console.WriteLine("HellionExtendedServer: Update Failed (ApplyUpdate)" + ex.ToString()); } return(false); }
private void ReleaseDownloaded(object sender, DownloadDataCompletedEventArgs e) { try { FileList.ForEach((file) => file.Delete()); FileList.Clear(); string updatePath = Globals.GetFolderPath(HESFolderName.Updates); File.WriteAllBytes(Path.Combine(updatePath, UpdateFileName), e.Result); ZipFile.ExtractToDirectory(Path.Combine(updatePath, UpdateFileName), updatePath); File.Delete(Path.Combine(updatePath, UpdateFileName)); Console.WriteLine("HellionExtendedServer: Update has been downloaded!"); foreach (string file in Directory.GetFiles(updatePath, "*", SearchOption.AllDirectories)) { FileList.Add(new FileInfo(file)); } OnUpdateDownloaded?.Invoke(m_useDevRelease ? m_developmentRelease : m_currentRelease); if (!GUIMode) { ApplyUpdate(); Console.WriteLine("HellionExtendedServer: Update has been applied. Please restart HellionExtendedServer.exe to finish the update!"); if (ServerInstance.Instance != null) { HES.Restart(ServerInstance.Instance.IsRunning); } else { HES.Restart(false); } } } catch (Exception ex) { Console.WriteLine("HellionExtendedServer: Update Failed (ReleaseDownloadedEvent)" + ex.ToString()); } }
/// <summary> /// The main start method that loads the controllers and prints information to the console /// </summary> public async void Start() { if (m_assembly == null) { Console.WriteLine($"HELLION_Dedicated.exe does not exist.\r\n Cannot start the server."); return; } if (Server.IsRunning) { return; } String[] serverArgs = new String[] { "", }; await ServerWrapper.HellionDedi.StartServer(serverArgs); m_serverWrapper.Init(); while (ServerWrapper.HellionDedi.Server == null) { await Task.Delay(25); } m_server = ServerWrapper.HellionDedi.Server; OnServerRunning?.Invoke(m_server); if (IsRunning) { Log.Instance.Info("Hellion Extended Server: World Initialized!"); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); Thread.Sleep(1); stopwatch.Stop(); long num = (long)(1000.0 / stopwatch.Elapsed.TotalMilliseconds); Console.WriteLine(string.Format(HES.Localization.Sentences["ServerDesc"], DateTime.UtcNow.ToString("yyyy/MM/dd HH:mm:ss.ffff"), (Server.NetworkController.ServerID <= 0L ? "Not yet assigned" : string.Concat(Server.NetworkController.ServerID)), 64, num, (64 > num ? " WARNING: Server ticks is larger than max tick" : ""), Server.ServerName)); } Server.NetworkController.EventSystem.RemoveListener(typeof(TextChatMessage), new EventSystem.NetworkDataDelegate(Server.TextChatMessageListener)); //Deletes Old Listener Server.NetworkController.EventSystem.AddListener(typeof(TextChatMessage), new EventSystem.NetworkDataDelegate(this.TextChatMessageListener)); //Referances New Listener new NetworkManager(m_server.NetworkController); //Load Permission m_permissionmanager = new PermissionManager(); //Load Events m_eventhelper = new EventHelper(); //Load Commands m_commandManager = new CommandManager(); //Load Plugins! m_pluginManager = new PluginManager(); PluginManager.InitializeAllPlugins(); //TODO load Server Event Listeners EventHelper.RegisterEvent(new EventListener(typeof(JoinEvent).GetMethod("PlayerSpawnRequest"), typeof(JoinEvent), EventID.PlayerSpawnRequest)); //Command Listner Log.Instance.Info(HES.Localization.Sentences["ReadyForConnections"]); HES.PrintHelp(); HES.KeyPressSimulator(); }