diff --git a/MinecraftClient/Dialogs/DialogFormatter.cs b/MinecraftClient/Dialogs/DialogFormatter.cs index c24fca44..9e836e3e 100644 --- a/MinecraftClient/Dialogs/DialogFormatter.cs +++ b/MinecraftClient/Dialogs/DialogFormatter.cs @@ -45,6 +45,8 @@ public static class DialogFormatter builder.AppendLine(string.Format(Translations.dialog_render_action, action.Index, action.Label, DescribeAction(action.Action))); } + builder.AppendLine(); + builder.AppendLine("§o" + Translations.dialog_render_help_hint + "§r"); builder.Append(border); return builder.ToString(); } diff --git a/MinecraftClient/McClient.cs b/MinecraftClient/McClient.cs index 58184b0a..753de486 100644 --- a/MinecraftClient/McClient.cs +++ b/MinecraftClient/McClient.cs @@ -3440,13 +3440,15 @@ namespace MinecraftClient public void OnDialogShown(DialogDefinition dialog, DialogPhase phase) { var instance = Dialogs.Show(dialog, phase); - Tui.DialogTuiHost.TryOpen(this, instance, force: phase == DialogPhase.Configuration); + if (!Tui.DialogTuiHost.TryOpen(this, instance, force: phase == DialogPhase.Configuration)) + ConsoleIO.WriteLineFormatted(DialogFormatter.Render(instance), acceptnewlines: true); } public void OnDialogRegistryReferenceShown(int protocolId, DialogPhase phase) { var instance = Dialogs.ShowRegistryReference(protocolId, phase); - Tui.DialogTuiHost.TryOpen(this, instance, force: phase == DialogPhase.Configuration); + if (!Tui.DialogTuiHost.TryOpen(this, instance, force: phase == DialogPhase.Configuration)) + ConsoleIO.WriteLineFormatted(DialogFormatter.Render(instance), acceptnewlines: true); } public void OnDialogCleared() diff --git a/MinecraftClient/Resources/Translations/Translations.Designer.cs b/MinecraftClient/Resources/Translations/Translations.Designer.cs index c2803581..4b325587 100644 --- a/MinecraftClient/Resources/Translations/Translations.Designer.cs +++ b/MinecraftClient/Resources/Translations/Translations.Designer.cs @@ -8121,5 +8121,9 @@ namespace MinecraftClient { get { return ResourceManager.GetString("dialog.input_kind.unknown", resourceCulture); } } + internal static string dialog_render_help_hint { + get { return ResourceManager.GetString("dialog.render.help_hint", resourceCulture); } + } + } } diff --git a/MinecraftClient/Resources/Translations/Translations.resx b/MinecraftClient/Resources/Translations/Translations.resx index 34ce6a62..fdb4fd7c 100644 --- a/MinecraftClient/Resources/Translations/Translations.resx +++ b/MinecraftClient/Resources/Translations/Translations.resx @@ -3067,4 +3067,7 @@ see item details. Unknown + + Use /dialog help for a list of commands. + diff --git a/MinecraftClient/Tui/DialogTuiHost.cs b/MinecraftClient/Tui/DialogTuiHost.cs index 8b0708a7..f94370e6 100644 --- a/MinecraftClient/Tui/DialogTuiHost.cs +++ b/MinecraftClient/Tui/DialogTuiHost.cs @@ -174,6 +174,13 @@ internal sealed class DialogView : Border, IOverlayCloseHandler }); } + main.Children.Add(new TextBlock + { + Text = Translations.dialog_render_help_hint, + Foreground = new SolidColorBrush(Color.FromRgb(120, 120, 120)), + TextWrapping = TextWrapping.Wrap + }); + main.Children.Add(_status); scroll.Content = main; root.Children.Add(scroll);