diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index aca381ef..23681757 100755 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -185,6 +185,16 @@ namespace TShockAPI public static List ChatCommands = new List(); public static ReadOnlyCollection TShockCommands = new ReadOnlyCollection(new List()); + public static string Specifier + { + get { return string.IsNullOrWhiteSpace(TShock.Config.CommandSpecifier) ? "/" : TShock.Config.CommandSpecifier; } + } + + public static string SilentSpecifier + { + get { return string.IsNullOrWhiteSpace(TShock.Config.CommandSilentSpecifier) ? "." : TShock.Config.CommandSilentSpecifier; } + } + private delegate void AddChatCommand(string permission, CommandDelegate command, params string[] names); public static void InitCommands() @@ -601,7 +611,7 @@ namespace TShockAPI string cmdPrefix = text[0].ToString(); bool silent = false; - if (cmdPrefix == TShock.Config.CommandSilentSpecifier) + if (cmdPrefix == SilentSpecifier) silent = true; var args = ParseParameters(cmdText); @@ -611,7 +621,7 @@ namespace TShockAPI string cmdName = args[0].ToLower(); args.RemoveAt(0); - IEnumerable cmds = ChatCommands.Where(c => c.HasAlias(cmdName)).ToList(); + IEnumerable cmds = ChatCommands.FindAll(c => c.HasAlias(cmdName)); if (Hooks.PlayerHooks.OnPlayerCommand(player, cmdName, cmdText, args, ref cmds)) return true; @@ -625,28 +635,28 @@ namespace TShockAPI call(new CommandArgs(cmdText, player, args)); return true; } - player.SendErrorMessage("Invalid command entered. Type {0}help for a list of valid commands.", TShock.Config.CommandSpecifier); + player.SendErrorMessage("Invalid command entered. Type {0}help for a list of valid commands.", Specifier); return true; } - foreach (Command cmd in cmds) - { - if (!cmd.CanRun(player)) - { - TShock.Utils.SendLogs(string.Format("{0} tried to execute {1}{2}.", player.Name, TShock.Config.CommandSpecifier, cmdText), Color.PaleVioletRed, player); - player.SendErrorMessage("You do not have access to this command."); - } - else if (!cmd.AllowServer && !player.RealPlayer) - { - player.SendErrorMessage("You must use this command in-game."); - } - else - { - if (cmd.DoLog) - TShock.Utils.SendLogs(string.Format("{0} executed: {1}{2}.", player.Name, silent ? TShock.Config.CommandSilentSpecifier : TShock.Config.CommandSpecifier, cmdText), Color.PaleVioletRed, player); - cmd.Run(cmdText, silent, player, args); - } - } - return true; + foreach (Command cmd in cmds) + { + if (!cmd.CanRun(player)) + { + TShock.Utils.SendLogs(string.Format("{0} tried to execute {1}{2}.", player.Name, Specifier, cmdText), Color.PaleVioletRed, player); + player.SendErrorMessage("You do not have access to this command."); + } + else if (!cmd.AllowServer && !player.RealPlayer) + { + player.SendErrorMessage("You must use this command in-game."); + } + else + { + if (cmd.DoLog) + TShock.Utils.SendLogs(string.Format("{0} executed: {1}{2}.", player.Name, silent ? SilentSpecifier : Specifier, cmdText), Color.PaleVioletRed, player); + cmd.Run(cmdText, silent, player, args); + } + } + return true; } /// @@ -749,9 +759,9 @@ namespace TShockAPI } else { - args.Player.SendErrorMessage("Syntax: /login - Logs in using your UUID and character name"); - args.Player.SendErrorMessage(" /login - Logs in using your password and character name"); - args.Player.SendErrorMessage(" /login - Logs in using your username and password"); + args.Player.SendErrorMessage("Syntax: {0}login - Logs in using your UUID and character name", Specifier); + args.Player.SendErrorMessage(" {0}login - Logs in using your password and character name", Specifier); + args.Player.SendErrorMessage(" {0}login - Logs in using your username and password", Specifier); args.Player.SendErrorMessage("If you forgot your password, there is no way to recover it."); return; } @@ -858,7 +868,7 @@ namespace TShockAPI } else { - args.Player.SendErrorMessage("Not logged in or invalid syntax! Proper syntax: /password "); + args.Player.SendErrorMessage("Not logged in or invalid syntax! Proper syntax: {0}password ", Specifier); } } catch (UserManagerException ex) @@ -886,7 +896,7 @@ namespace TShockAPI } else { - args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /register "); + args.Player.SendErrorMessage("Invalid syntax! Proper syntax: {0}register ", Specifier); return; } @@ -918,7 +928,7 @@ namespace TShockAPI // This guy needs to be here so that people don't get exceptions when they type /user if (args.Parameters.Count < 1) { - args.Player.SendErrorMessage("Invalid user syntax. Try /user help."); + args.Player.SendErrorMessage("Invalid user syntax. Try {0}user help.", Specifier); return; } @@ -957,7 +967,7 @@ namespace TShockAPI } else { - args.Player.SendErrorMessage("Invalid syntax. Try /user help."); + args.Player.SendErrorMessage("Invalid syntax. Try {0}user help.", Specifier); } } // User deletion requires a username @@ -978,7 +988,7 @@ namespace TShockAPI } catch (UserManagerException ex) { - args.Player.SendMessage(ex.Message, Color.Red); + args.Player.SendErrorMessage(ex.Message); TShock.Log.ConsoleError(ex.ToString()); } } @@ -1009,7 +1019,7 @@ namespace TShockAPI } else { - args.Player.SendErrorMessage("Invalid user password syntax. Try /user help."); + args.Player.SendErrorMessage("Invalid user password syntax. Try {0}user help.", Specifier); } } // Group changing requires a username or IP address, and a new group to set @@ -1042,20 +1052,20 @@ namespace TShockAPI } else { - args.Player.SendErrorMessage("Invalid user group syntax. Try /user help."); + args.Player.SendErrorMessage("Invalid user group syntax. Try {0}user help.", Specifier); } } else if (subcmd == "help") { args.Player.SendInfoMessage("Use command help:"); - args.Player.SendInfoMessage("/user add username password group -- Adds a specified user"); - args.Player.SendInfoMessage("/user del username -- Removes a specified user"); - args.Player.SendInfoMessage("/user password username newpassword -- Changes a user's password"); - args.Player.SendInfoMessage("/user group username newgroup -- Changes a user's group"); + args.Player.SendInfoMessage("{0}user add username password group -- Adds a specified user", Specifier); + args.Player.SendInfoMessage("{0}user del username -- Removes a specified user", Specifier); + args.Player.SendInfoMessage("{0}user password username newpassword -- Changes a user's password", Specifier); + args.Player.SendInfoMessage("{0}user group username newgroup -- Changes a user's group", Specifier); } else { - args.Player.SendErrorMessage("Invalid user syntax. Try /user help."); + args.Player.SendErrorMessage("Invalid user syntax. Try {0}user help.", Specifier); } } @@ -1088,7 +1098,7 @@ namespace TShockAPI { if (args.Parameters.Count < 1) { - args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /userinfo "); + args.Player.SendErrorMessage("Invalid syntax! Proper syntax: {0}userinfo ", Specifier); return; } @@ -1112,7 +1122,7 @@ namespace TShockAPI { if (args.Parameters.Count < 1) { - args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /kick [reason]"); + args.Player.SendErrorMessage("Invalid syntax! Proper syntax: {0}kick [reason]", Specifier); return; } if (args.Parameters[0].Length == 0) @@ -1153,7 +1163,7 @@ namespace TShockAPI { if (args.Parameters.Count < 2) { - args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /ban add [reason]"); + args.Player.SendErrorMessage("Invalid syntax! Proper syntax: {0}ban add [reason]", Specifier); return; } @@ -1213,7 +1223,7 @@ namespace TShockAPI { if (args.Parameters.Count < 2) { - args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /ban addip [reason]"); + args.Player.SendErrorMessage("Invalid syntax! Proper syntax: {0}ban addip [reason]", Specifier); return; } @@ -1231,7 +1241,7 @@ namespace TShockAPI { if (args.Parameters.Count < 3) { - args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /ban addtemp