public void Run()
{
if (_running)
throw new Exception("Server is already running.");
CliUtil.WriteHeader("Channel Server", ConsoleColor.DarkGreen);
CliUtil.LoadingTitle();
this.NavigateToRoot();
// Conf
this.LoadConf(this.Conf = new ChannelConf());
// Database
this.InitDatabase(this.Database = new ChannelDb(), this.Conf);
// Data
this.LoadData(DataLoad.ChannelServer, false);
// Localization
this.LoadLocalization(this.Conf);
// World
this.InitializeWorld();
// Skills
this.LoadSkills();
// Scripts
this.LoadScripts();
// Weather
this.Weather.Initialize();
// Autoban
if (this.Conf.Autoban.Enabled)
this.Events.SecurityViolation += (e) => Autoban.Incident(e.Client, e.Level, e.Report, e.StackReport);
// Start
this.Server.Start(this.Conf.Channel.ChannelPort);
// Inter
this.ConnectToLogin(true);
this.StartStatusUpdateTimer();
CliUtil.RunningTitle();
_running = true;
// Commands
this.ConsoleCommands.Wait();
}