From 8df09cb4a8a8707524390265744e61e3dbe690c6 Mon Sep 17 00:00:00 2001 From: Cai <13110818005@qq.com> Date: Wed, 31 Jul 2024 19:11:50 +0800 Subject: [PATCH 1/4] fix: /help, /me, and /p commands can't work in non-English languages --- TShockAPI/Localization/EnglishLanguage.cs | 26 +++++++++++++++++++++++ TShockAPI/TShock.cs | 4 ++-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/TShockAPI/Localization/EnglishLanguage.cs b/TShockAPI/Localization/EnglishLanguage.cs index 1ec4ecea..97507141 100644 --- a/TShockAPI/Localization/EnglishLanguage.cs +++ b/TShockAPI/Localization/EnglishLanguage.cs @@ -20,7 +20,9 @@ using System; using System.Collections.Generic; using System.Linq; using Terraria; +using Terraria.Initializers; using Terraria.Localization; +using Terraria.UI.Chat; namespace TShockAPI.Localization { @@ -37,6 +39,8 @@ namespace TShockAPI.Localization private static readonly Dictionary Buffs = new Dictionary(); + private static readonly Dictionary VanillaCommands = new Dictionary(); + internal static void Initialize() { var culture = Language.ActiveCulture; @@ -71,6 +75,15 @@ namespace TShockAPI.Localization var i = (int)field.GetValue(null); Prefixs.Add(i, Lang.prefix[i].Value); } + + ChatInitializer.Load(); + foreach (var command in ChatManager.Commands._localizedCommands) + { + if (VanillaCommands.ContainsKey(command.Value._name)) + continue; + VanillaCommands.Add(command.Value._name,command.Key.Value); + } + ChatManager.Commands._localizedCommands.Clear(); } finally { @@ -136,5 +149,18 @@ namespace TShockAPI.Localization return null; } + + /// + /// Get vanilla command text in English + /// + /// vanilla command name + /// vanilla command text English + public static string GetCommandTextByName(string name) + { + string commandText; + if (VanillaCommands.TryGetValue(name, out commandText)) + return commandText; + return null; + } } } diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 054e31df..48fab88d 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -1497,11 +1497,11 @@ namespace TShockAPI { if (!String.IsNullOrEmpty(text)) { - text = item.Key.Value + ' ' + text; + text = EnglishLanguage.GetCommandTextByName(item.Value._name) + ' ' + text; } else { - text = item.Key.Value; + text = EnglishLanguage.GetCommandTextByName(item.Value._name); } break; } From b90182f1e5a8cc47057fbb809bd2ee3311c13714 Mon Sep 17 00:00:00 2001 From: Cai <13110818005@qq.com> Date: Wed, 31 Jul 2024 19:16:23 +0800 Subject: [PATCH 2/4] update changelog --- docs/changelog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/changelog.md b/docs/changelog.md index b1974546..d2e1444e 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -93,6 +93,7 @@ Use past tense when adding new entries; sign your name off when you add or chang * Rewrote the `.dockerignore` file into a denylist. (@timschumi) * Added CI for Docker images. (@timschumi) * Fixed Cursed Flares kicking players for invalid buff. (@Arthri) +* Fixed /help, /me, and /p commands can't work in non-English languages (@ACaiCat) ## TShock 5.2 * An additional option `pvpwithnoteam` is added at `PvPMode` to enable PVP with no team. (@CelestialAnarchy, #2617, @ATFGK) From a8624a816344dd39a63a701e98fe57c086613a34 Mon Sep 17 00:00:00 2001 From: Cai <13110818005@qq.com> Date: Wed, 31 Jul 2024 19:16:23 +0800 Subject: [PATCH 3/4] update changelog --- docs/changelog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/changelog.md b/docs/changelog.md index b1974546..d2e1444e 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -93,6 +93,7 @@ Use past tense when adding new entries; sign your name off when you add or chang * Rewrote the `.dockerignore` file into a denylist. (@timschumi) * Added CI for Docker images. (@timschumi) * Fixed Cursed Flares kicking players for invalid buff. (@Arthri) +* Fixed /help, /me, and /p commands can't work in non-English languages (@ACaiCat) ## TShock 5.2 * An additional option `pvpwithnoteam` is added at `PvPMode` to enable PVP with no team. (@CelestialAnarchy, #2617, @ATFGK) From 7419205548fb9779f83bc924222c1df9741ddff5 Mon Sep 17 00:00:00 2001 From: Cai <13110818005@qq.com> Date: Wed, 31 Jul 2024 19:24:53 +0800 Subject: [PATCH 4/4] rename --- TShockAPI/Localization/EnglishLanguage.cs | 14 +++++++------- TShockAPI/TShock.cs | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/TShockAPI/Localization/EnglishLanguage.cs b/TShockAPI/Localization/EnglishLanguage.cs index 97507141..334c4780 100644 --- a/TShockAPI/Localization/EnglishLanguage.cs +++ b/TShockAPI/Localization/EnglishLanguage.cs @@ -39,7 +39,7 @@ namespace TShockAPI.Localization private static readonly Dictionary Buffs = new Dictionary(); - private static readonly Dictionary VanillaCommands = new Dictionary(); + private static readonly Dictionary VanillaCommandsPrefixs = new Dictionary(); internal static void Initialize() { @@ -79,9 +79,9 @@ namespace TShockAPI.Localization ChatInitializer.Load(); foreach (var command in ChatManager.Commands._localizedCommands) { - if (VanillaCommands.ContainsKey(command.Value._name)) + if (VanillaCommandsPrefixs.ContainsKey(command.Value._name)) continue; - VanillaCommands.Add(command.Value._name,command.Key.Value); + VanillaCommandsPrefixs.Add(command.Value._name,command.Key.Value); } ChatManager.Commands._localizedCommands.Clear(); } @@ -151,14 +151,14 @@ namespace TShockAPI.Localization } /// - /// Get vanilla command text in English + /// Get vanilla command prefix in English /// /// vanilla command name - /// vanilla command text English - public static string GetCommandTextByName(string name) + /// vanilla command prefix in English + public static string GetCommandPrefixByName(string name) { string commandText; - if (VanillaCommands.TryGetValue(name, out commandText)) + if (VanillaCommandsPrefixs.TryGetValue(name, out commandText)) return commandText; return null; } diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 48fab88d..9c1015bc 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -1497,11 +1497,11 @@ namespace TShockAPI { if (!String.IsNullOrEmpty(text)) { - text = EnglishLanguage.GetCommandTextByName(item.Value._name) + ' ' + text; + text = EnglishLanguage.GetCommandPrefixByName(item.Value._name) + ' ' + text; } else { - text = EnglishLanguage.GetCommandTextByName(item.Value._name); + text = EnglishLanguage.GetCommandPrefixByName(item.Value._name); } break; }