summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <github@jplamondonw.com>2017-07-02 20:51:49 -0400
committerJesse Plamondon-Willard <github@jplamondonw.com>2017-07-02 20:51:49 -0400
commit0e6d30f65b562704675a20b1c4ce399787a68511 (patch)
tree830ccbadf0c035035bf348700c6a4d5c591167ed
parent698328c52f60e6f825086585ef79f8c6eedb944e (diff)
downloadSMAPI-0e6d30f65b562704675a20b1c4ce399787a68511.tar.gz
SMAPI-0e6d30f65b562704675a20b1c4ce399787a68511.tar.bz2
SMAPI-0e6d30f65b562704675a20b1c4ce399787a68511.zip
further simplify console output for players
-rw-r--r--release-notes.md8
-rw-r--r--src/StardewModdingAPI/Program.cs20
2 files changed, 18 insertions, 10 deletions
diff --git a/release-notes.md b/release-notes.md
index b1917ef7..b5a8a529 100644
--- a/release-notes.md
+++ b/release-notes.md
@@ -13,9 +13,7 @@ For mod developers:
See [log](https://github.com/Pathoschild/SMAPI/compare/1.14...1.15).
For players:
-* SMAPI no longer loads mods known to be obsolete or unneeded.
-* SMAPI now lists mods in an easier-to-read format in the console.
-* When the `ObjectInformation.xnb` is broken, SMAPI now prints one error to the console instead of a warning flood. (The individual issues are still listed in the log file if needed.)
+* Many changes to the SMAPI console to make it simpler for players.
* Revamped TrainerMod's item commands:
* `player_add` is a new command which lets you add any game item to your inventory (including tools, weapons, equipment, craftables, wallpaper, etc). This replaces the former `player_additem`, `player_addring`, and `player_addweapon`.
* `list_items` now shows all items in the game. You can search by item type like `list_items weapon`, or search by item name like `list_items galaxy sword`.
@@ -23,11 +21,13 @@ For players:
* `list_item_types` is a new command to see a list of item types.
* Added clearer error when a `config.json` is invalid.
* Fixed rare crash when window loses focus for a few players (further to fix in 1.14).
+* Fixed invalid `ObjectInformation.xnb` causing a flood of warnings; SMAPI now shows one error instead.
+* Updated mod compatibility list.
For modders:
* You can now specify minimum dependency versions in `manifest.json`.
* Added `System.ValueTuple.dll` to the SMAPI install package so mods can use [C# 7 value tuples](https://docs.microsoft.com/en-us/dotnet/csharp/tuples).
-* Cleaned up SMAPI logging when loading mods.
+* Added more useful trace logging when loading mods.
* Changed `manifest.MinimumApiVersion` from string to `ISemanticVersion`.
* Fixed `SemanticVersion` parsing some invalid versions into close approximations (like `1.apple` &rarr; `1.0-apple`).
* Fixed `SemanticVersion` not treating hyphens as separators when comparing prerelease tags.
diff --git a/src/StardewModdingAPI/Program.cs b/src/StardewModdingAPI/Program.cs
index 37b821ef..70e53f5a 100644
--- a/src/StardewModdingAPI/Program.cs
+++ b/src/StardewModdingAPI/Program.cs
@@ -126,7 +126,7 @@ namespace StardewModdingAPI
// init logging
this.Monitor.Log($"SMAPI {Constants.ApiVersion} with Stardew Valley {Constants.GetGameDisplayVersion(Constants.GameVersion)} on {this.GetFriendlyPlatformName()}", LogLevel.Info);
this.Monitor.Log($"Mods go here: {Constants.ModPath}");
- this.Monitor.Log("Preparing SMAPI...");
+ this.Monitor.Log("Starting SMAPI...");
// validate paths
this.VerifyPath(Constants.ModPath);
@@ -361,7 +361,7 @@ namespace StardewModdingAPI
// load mods
{
- this.Monitor.Log("Loading mod metadata...");
+ this.Monitor.Log("Loading mod metadata...", LogLevel.Trace);
ModResolver resolver = new ModResolver();
// load manifests
@@ -445,7 +445,6 @@ namespace StardewModdingAPI
private void RunConsoleLoop()
{
// prepare console
- this.Monitor.Log("Starting console...");
this.Monitor.Log("Type 'help' for help, or 'help <cmd>' for a command's usage", LogLevel.Info);
this.CommandManager.Add("SMAPI", "help", "Lists command documentation.\n\nUsage: help\nLists all available commands.\n\nUsage: help <cmd>\n- cmd: The name of a command whose documentation to display.", this.HandleCommand);
this.CommandManager.Add("SMAPI", "reload_i18n", "Reloads translation files for all mods.\n\nUsage: reload_i18n", this.HandleCommand);
@@ -580,7 +579,7 @@ namespace StardewModdingAPI
/// <param name="deprecationWarnings">A list to populate with any deprecation warnings.</param>
private void LoadMods(IModMetadata[] mods, JsonHelper jsonHelper, SContentManager contentManager, IList<Action> deprecationWarnings)
{
- this.Monitor.Log("Loading mods...");
+ this.Monitor.Log("Loading mods...", LogLevel.Trace);
// load mod assemblies
IDictionary<IModMetadata, string> skippedMods = new Dictionary<IModMetadata, string>();
@@ -810,8 +809,17 @@ namespace StardewModdingAPI
}
else
{
- this.Monitor.Log("The following commands are registered: " + string.Join(", ", this.CommandManager.GetAll().Select(p => p.Name)) + ".", LogLevel.Info);
- this.Monitor.Log("For more information about a command, type 'help command_name'.", LogLevel.Info);
+ string message = "The following commands are registered:\n";
+ IGrouping<string, string>[] groups = (from command in this.CommandManager.GetAll() orderby command.ModName, command.Name group command.Name by command.ModName).ToArray();
+ foreach (var group in groups)
+ {
+ string modName = group.Key;
+ string[] commandNames = group.ToArray();
+ message += $"{modName}:\n {string.Join("\n ", commandNames)}\n\n";
+ }
+ message += "For more information about a command, type 'help command_name'.";
+
+ this.Monitor.Log(message, LogLevel.Info);
}
break;