private static void SetPre6000Support()
        {
            Console.WriteLine("Will you be using a client version older than 6.0.0.0?");

            do
            {
                Console.Write("y or [n]> ");
                var input = Console.ReadLine();
                if (string.IsNullOrWhiteSpace(input) || input.InsensitiveStartsWith("n"))
                {
                    return;
                }

                if (input.InsensitiveStartsWith("y"))
                {
                    SetSetting("maps.enablePre6000Trammel", true.ToString());
                    SetSetting("maps.enableMapDiffPatches", true.ToString());
                    return;
                }

                Core.WriteConsoleLine($"Invalid option. ({input})");
            } while (true);
        }
        // If mock is enabled we skip the console readline.
        public static void Load(bool mocked = false)
        {
            m_Mocked = mocked;
            var updated = false;

            if (File.Exists(m_FilePath))
            {
                Core.WriteConsole($"Reading server configuration from {m_RelPath}...");
                m_Settings = JsonConfig.Deserialize <ServerSettings>(m_FilePath);

                if (m_Settings == null)
                {
                    Utility.PushColor(ConsoleColor.Red);
                    Console.WriteLine("failed");
                    Utility.PopColor();
                    throw new FileNotFoundException($"Failed to deserialize {m_FilePath}.");
                }

                Utility.PushColor(ConsoleColor.Green);
                Console.WriteLine("done");
                Utility.PopColor();
            }
            else
            {
                updated    = true;
                m_Settings = new ServerSettings();
            }

            if (mocked)
            {
                return;
            }

            if (m_Settings.DataDirectories.Count == 0)
            {
                updated = true;
                m_Settings.DataDirectories.AddRange(GetDataDirectories());
            }

            if (m_Settings.Listeners.Count == 0)
            {
                updated = true;
                m_Settings.Listeners.AddRange(GetListeners());
            }

            if (m_Settings.Expansion == null)
            {
                var expansion    = GetSetting <Expansion>("currentExpansion");
                var hasExpansion = expansion != null;

                expansion ??= GetExpansion();

                if (expansion <= Expansion.ML && !hasExpansion)
                {
                    SetPre6000Support();
                }

                updated = true;
                m_Settings.Expansion = expansion;
            }

            Core.Expansion = m_Settings.Expansion.Value;

            if (updated)
            {
                Save();
                Utility.PushColor(ConsoleColor.Green);
                Core.WriteConsoleLine($"Server configuration saved to {m_RelPath}.");
                Utility.PopColor();
            }
        }