public override bool Invoke(ulong steamId, long playerId, string messageText)
        {
            var info = new StringBuilder();
            var list = new List <string>();
            var yes  = Localize.GetResource("Yes");
            var no   = Localize.GetResource("No");

            info.AppendFormat("{0}: {1}\r\n", Localize.GetResource("Name"), MyAPIGateway.Session.Name);
            info.AppendFormat("{0}: {1}\r\n", Localize.GetResource("WorldSettings_Description"), MyAPIGateway.Session.Description);
            info.AppendFormat("{0}: {1:%d} days {1:hh\\:mm\\:ss}\r\n", "Session Time", MyAPIGateway.Session.ElapsedPlayTime); // This is the local session, not the server.
            info.AppendFormat("{0}: {1:%d} days {1:hh\\:mm\\:ss}\r\n", "Game Time", MyAPIGateway.Session.ElapsedGameTime());  // Total game time. Still in debate about sync with the server.

            info.AppendFormat("\r\n");

            var gameMode = "Unknown";

            switch (MyAPIGateway.Session.SessionSettings.GameMode)
            {
            case MyGameModeEnum.Creative: gameMode = Localize.GetResource("WorldSettings_GameModeCreative"); break;

            case MyGameModeEnum.Survival: gameMode = Localize.GetResource("WorldSettings_GameModeSurvival"); break;
            }
            info.AppendFormat("{0}: {1}\r\n", Localize.GetResource("WorldSettings_GameMode"), gameMode);


            var onlineMode = "Unknown";

            switch (MyAPIGateway.Session.OnlineMode)
            {
            case MyOnlineModeEnum.FRIENDS: onlineMode = Localize.GetResource("WorldSettings_OnlineModeFriends"); break;

            case MyOnlineModeEnum.OFFLINE: onlineMode = Localize.GetResource("WorldSettings_OnlineModeOffline"); break;

            case MyOnlineModeEnum.PRIVATE: onlineMode = Localize.GetResource("WorldSettings_OnlineModePrivate"); break;

            case MyOnlineModeEnum.PUBLIC: onlineMode = Localize.GetResource("WorldSettings_OnlineModePublic"); break;
            }
            info.AppendFormat("{0}: {1}\r\n", Localize.GetResource("WorldSettings_OnlineMode"), onlineMode);
            info.AppendFormat("{0}: {1}\r\n", Localize.GetResource("MaxPlayers"), MyAPIGateway.Session.MaxPlayers);

            var environmentHostility = "Unknown";

            switch (MyAPIGateway.Session.EnvironmentHostility)
            {
            case MyEnvironmentHostilityEnum.CATACLYSM: environmentHostility = Localize.GetResource("WorldSettings_EnvironmentHostilityCataclysm"); break;

            case MyEnvironmentHostilityEnum.CATACLYSM_UNREAL: environmentHostility = Localize.GetResource("WorldSettings_OnlineModeOffline"); break;

            case MyEnvironmentHostilityEnum.NORMAL: environmentHostility = Localize.GetResource("WorldSettings_EnvironmentHostilityCataclysmUnreal"); break;

            case MyEnvironmentHostilityEnum.SAFE: environmentHostility = Localize.GetResource("WorldSettings_EnvironmentHostilitySafe"); break;
            }
            info.AppendFormat("{0}: {1}\r\n", Localize.GetResource("WorldSettings_EnvironmentHostility"), environmentHostility);
            info.AppendFormat("{0}: {1}\r\n", Localize.GetResource("WorldSettings_AutoSave"), MyAPIGateway.Session.SessionSettings.AutoSave ? yes : no);
            //info.AppendFormat("Auto Save?? Test: {0} {1} {2}\r\n", MyAPIGateway.Session.AutoSaveInMinutes, MyAPIGateway.Session.SessionSettings.AutoSaveInMinutes, MyAPIGateway.Session.GetCheckpoint("null").Settings.AutoSaveInMinutes);
            //info.AppendFormat("Auto Save In Minutes: {0}\r\n", MyAPIGateway.Session.AutoSaveInMinutes); // Dedicated Server.
            info.AppendFormat("{0}: {1}\r\n", Localize.GetResource("WorldSettings_ScenarioEditMode"), MyAPIGateway.Session.SessionSettings.ScenarioEditMode ? yes : no);

            info.AppendFormat("\r\n");

            info.AppendFormat("{0}: x {1}\r\n", Localize.GetResource("WorldSettings_InventorySize"), MyAPIGateway.Session.InventoryMultiplier);
            info.AppendFormat("{0}: x {1}\r\n", Localize.GetResource("WorldSettings_AssemblerEfficiency"), MyAPIGateway.Session.AssemblerEfficiencyMultiplier);
            info.AppendFormat("{0}: x {1}\r\n", Localize.GetResource("WorldSettings_RefinerySpeed"), MyAPIGateway.Session.RefinerySpeedMultiplier);
            info.AppendFormat("{0}: x {1}\r\n", Localize.GetResource("WorldSettings_WelderSpeed"), MyAPIGateway.Session.WelderSpeedMultiplier);
            info.AppendFormat("{0}: x {1}\r\n", Localize.GetResource("WorldSettings_GrinderSpeed"), MyAPIGateway.Session.GrinderSpeedMultiplier);
            info.AppendFormat("{0}: {1:##,##0}\r\n", Localize.GetResource("MaxFloatingObjects"), MyAPIGateway.Session.MaxFloatingObjects);
            info.AppendFormat("{0}: {1:##,##0}\r\n", Localize.GetResource("MaxBackupSaves"), MyAPIGateway.Session.MaxBackupSaves);

            if (MyAPIGateway.Session.SessionSettings.WorldSizeKm == 0)
            {
                info.AppendFormat("{0}: {1}\r\n", Localize.GetResource("WorldSettings_LimitWorldSize"), Localize.GetResource("WorldSettings_WorldSizeUnlimited"));
            }
            else
            {
                info.AppendFormat("{0}: {1:##,##0} Km\r\n", Localize.GetResource("WorldSettings_LimitWorldSize"), MyAPIGateway.Session.SessionSettings.WorldSizeKm);
            }
            info.AppendFormat("{0}: x {1}\r\n", Localize.GetResource("WorldSettings_RespawnShipCooldown"), MyAPIGateway.Session.SessionSettings.SpawnShipTimeMultiplier);
            info.AppendFormat("{0}: {1:##,###} m\r\n", Localize.GetResource("WorldSettings_ViewDistance"), MyAPIGateway.Session.SessionSettings.ViewDistance);
            info.AppendFormat("{0}: {1}\r\n", Localize.GetResource("WorldSettings_EnableSunRotation"), MyAPIGateway.Session.SessionSettings.EnableSunRotation ? yes : no);
            info.AppendFormat("{0}: {1:N} minutes\r\n", Localize.GetResource("SunRotationPeriod"), MyAPIGateway.Session.SessionSettings.SunRotationIntervalMinutes);

            info.AppendFormat("\r\n");

            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_AutoHealing"), MyAPIGateway.Session.AutoHealing ? yes : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_EnableCopyPaste"), MyAPIGateway.Session.EnableCopyPaste ? yes : no));
            //list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_ClientCanSave"), MyAPIGateway.Session.ClientCanSave ? yes : no)); // Obsolete.
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_EnableWeapons"), MyAPIGateway.Session.WeaponsEnabled ? yes : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_RemoveTrash"), MyAPIGateway.Session.SessionSettings.RemoveTrash ? yes : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("World_Settings_EnableOxygen"), MyAPIGateway.Session.SessionSettings.EnableOxygen ? yes : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("World_Settings_EnableOxygenPressurization"), MyAPIGateway.Session.SessionSettings.EnableOxygenPressurization ? yes : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_DisableRespawnShips"), MyAPIGateway.Session.SessionSettings.DisableRespawnShips ? yes : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_EnableJetpack"), MyAPIGateway.Session.SessionSettings.EnableJetpack ? yes : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_EnableVoxelDestruction"), MyAPIGateway.Session.SessionSettings.EnableVoxelDestruction ? yes : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_RespawnShipDelete"), MyAPIGateway.Session.SessionSettings.RespawnShipDelete ? yes : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_ShowPlayerNamesOnHud"), MyAPIGateway.Session.SessionSettings.ShowPlayerNamesOnHud ? yes : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_ThrusterDamage"), MyAPIGateway.Session.SessionSettings.ThrusterDamage ? yes : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_EnableCargoShips"), MyAPIGateway.Session.SessionSettings.CargoShipsEnabled ? yes : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_EnableIngameScripts"), MyAPIGateway.Session.SessionSettings.EnableIngameScripts ? yes : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_Enable3rdPersonCamera"), MyAPIGateway.Session.SessionSettings.Enable3rdPersonView ? yes : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_SpawnWithTools"), MyAPIGateway.Session.SessionSettings.SpawnWithTools ? yes : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_EnableDrones"), MyAPIGateway.Session.SessionSettings.EnableDrones ? yes : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_EnableSpectator"), MyAPIGateway.Session.SessionSettings.EnableSpectator ? yes : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_PermanentDeath"), MyAPIGateway.Session.SessionSettings.PermanentDeath.HasValue ? (MyAPIGateway.Session.SessionSettings.PermanentDeath.Value ? yes : no) : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_DestructibleBlocks"), MyAPIGateway.Session.SessionSettings.DestructibleBlocks ? yes : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_EnableToolShake"), MyAPIGateway.Session.SessionSettings.EnableToolShake ? yes : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_Encounters"), MyAPIGateway.Session.SessionSettings.EnableEncounters ? yes : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_EnableConvertToStation"), MyAPIGateway.Session.SessionSettings.EnableConvertToStation ? yes : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_EnableWolfs"), MyAPIGateway.Session.SessionSettings.EnableWolfs.HasValue? (MyAPIGateway.Session.SessionSettings.EnableWolfs.Value ? yes : no) : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_EnableSpiders"), MyAPIGateway.Session.SessionSettings.EnableSpiders.HasValue ? (MyAPIGateway.Session.SessionSettings.EnableSpiders.Value ? yes : no) : no));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_StartInRespawnScreen"), MyAPIGateway.Session.SessionSettings.StartInRespawnScreen ? yes : no));
            list.Add(string.Format("{0}: {1}", "Maximum Drones", MyAPIGateway.Session.SessionSettings.MaxDrones));
            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_SoundMode") + " " + Localize.GetResource("WorldSettings_RealisticSound"), MyAPIGateway.Session.SessionSettings.RealisticSound ? yes : no));
//#if !STABLE
//            list.Add(string.Format("{0}: {1}", Localize.GetResource("WorldSettings_StationVoxelSupport"), MyAPIGateway.Session.SessionSettings.StationVoxelSupport ? yes : no));
//#endif

            // add the remaining settings as a sorted list (according to the localizaed labels).
            foreach (var str in list.OrderBy(e => e))
            {
                info.AppendLine(str);
            }

            info.AppendFormat("\r\n");

            var mods = MyAPIGateway.Session.GetCheckpoint("null").Mods;

            info.AppendFormat("{0}: {1:#,###0}\r\n", Localize.GetResource("WorldSettings_Mods"), mods.Count);
            foreach (var mod in mods.OrderBy(e => e.FriendlyName))
            {
                info.AppendFormat("#{0} : '{1}'\r\n", mod.PublishedFileId, mod.FriendlyName);
            }

            MyAPIGateway.Utilities.ShowMissionScreen("Game Settings", "", " ", info.ToString());


            // Other labels or settings unused or obsolete.
            // WorldSettings_EnablePlanets
            // WorldSettings_EnableFlora    MyAPIGateway.Session.SessionSettings
            // WorldSettings_FloraDensity   MyAPIGateway.Session.SessionSettings.FloraDensity
            //                              MyAPIGateway.Session.SessionSettings.HackSpeedMultiplier
            // WorldSettings_GameScenario
            // WorldSettings_Battle         MyAPIGateway.Session.SessionSettings.Battle
            // WorldSettings_FriendlyFire
            // WorldSettings_GameStyle
            // WorldSettings_Physics
            // WorldSettings_SoundInSpace
            // WorldSettings_SoundMode      MyAPIGateway.Session.SessionSettings.RealisticSound
            //                              MyAPIGateway.Session.SessionSettings.EnableStructuralSimulation
            //                              MaxActiveFracturePieces
            //                              PhysicsIterations
            //                              RealisticSound

            return(true);
        }