Added a Run overload to Command.

The overload executes the CommandArgs you want.
This commit is contained in:
AkjaHAsLk1IALk0MasH 2023-06-15 12:00:49 +07:00
parent ffed36c6fd
commit 380f823e61

View file

@ -148,24 +148,29 @@ namespace TShockAPI
Permissions = new List<string>(); Permissions = new List<string>();
} }
public bool Run(string msg, bool silent, TSPlayer ply, List<string> parms) public bool Run(CommandArgs args)
{ {
if (!CanRun(ply)) if (!CanRun(args.Player))
return false; return false;
try try
{ {
CommandDelegate(new CommandArgs(msg, silent, ply, parms)); CommandDelegate(args);
} }
catch (Exception e) catch (Exception e)
{ {
ply.SendErrorMessage(GetString("Command failed, check logs for more details.")); args.Player.SendErrorMessage(GetString("Command failed, check logs for more details."));
TShock.Log.Error(e.ToString()); TShock.Log.Error(e.ToString());
} }
return true; return true;
} }
public bool Run(string msg, bool silent, TSPlayer ply, List<string> parms)
{
return Run(new CommandArgs(msg, silent, ply, parms));
}
public bool Run(string msg, TSPlayer ply, List<string> parms) public bool Run(string msg, TSPlayer ply, List<string> parms)
{ {
return Run(msg, false, ply, parms); return Run(msg, false, ply, parms);
@ -704,7 +709,12 @@ namespace TShockAPI
TShock.Utils.SendLogs(GetString("{0} executed: {1}{2}.", player.Name, silent ? SilentSpecifier : Specifier, cmdText), Color.PaleVioletRed, player); TShock.Utils.SendLogs(GetString("{0} executed: {1}{2}.", player.Name, silent ? SilentSpecifier : Specifier, cmdText), Color.PaleVioletRed, player);
else else
TShock.Utils.SendLogs(GetString("{0} executed (args omitted): {1}{2}.", player.Name, silent ? SilentSpecifier : Specifier, cmdName), Color.PaleVioletRed, player); TShock.Utils.SendLogs(GetString("{0} executed (args omitted): {1}{2}.", player.Name, silent ? SilentSpecifier : Specifier, cmdName), Color.PaleVioletRed, player);
cmd.Run(cmdText, silent, player, args);
CommandArgs arguments = new CommandArgs(cmdText, silent, player, args);
bool handled = PlayerHooks.OnPrePlayerCommand(cmd, ref arguments);
if (!handled)
cmd.Run(arguments);
PlayerHooks.OnPostPlayerCommand(cmd, arguments, handled);
} }
} }
return true; return true;