From ffed36c6fd9f1003f7d9f7094867d89420212e4d Mon Sep 17 00:00:00 2001
From: AkjaHAsLk1IALk0MasH <46046453+AgaSpace@users.noreply.github.com>
Date: Thu, 15 Jun 2023 12:00:13 +0700
Subject: [PATCH] Added hooks
---
TShockAPI/Hooks/PlayerHooks.cs | 101 +++++++++++++++++++++++++++++++++
1 file changed, 101 insertions(+)
diff --git a/TShockAPI/Hooks/PlayerHooks.cs b/TShockAPI/Hooks/PlayerHooks.cs
index 7a3e2067..e6b68581 100644
--- a/TShockAPI/Hooks/PlayerHooks.cs
+++ b/TShockAPI/Hooks/PlayerHooks.cs
@@ -119,6 +119,53 @@ namespace TShockAPI.Hooks
public string CommandPrefix { get; set; }
}
+ ///
+ /// EventArgs used for the event.
+ ///
+ public class PrePlayerCommandEventArgs : HandledEventArgs
+ {
+ ///
+ /// The command entered by the player.
+ ///
+ public Command Command { get; }
+ ///
+ /// Command arguments.
+ ///
+ public CommandArgs Arguments { get; set; }
+
+ public PrePlayerCommandEventArgs(Command command, CommandArgs args)
+ {
+ Command = command;
+ Arguments = args;
+ }
+ }
+
+ ///
+ /// EventArgs used for the event.
+ ///
+ public class PostPlayerCommandEventArgs
+ {
+ ///
+ /// The command entered by the player.
+ ///
+ public Command Command { get; }
+ ///
+ /// Command arguments.
+ ///
+ public CommandArgs Arguments { get; }
+ ///
+ /// Is the command executed.
+ ///
+ public bool Handled { get; }
+
+ public PostPlayerCommandEventArgs(Command command, CommandArgs arguments, bool handled)
+ {
+ Command = command;
+ Arguments = arguments;
+ Handled = handled;
+ }
+ }
+
///
/// EventArgs used for the event.
///
@@ -343,6 +390,26 @@ namespace TShockAPI.Hooks
///
public static event PlayerCommandD PlayerCommand;
+ ///
+ /// The delegate of the event.
+ ///
+ /// The EventArgs for this event.
+ public delegate void PrePlayerCommandD(PrePlayerCommandEventArgs e);
+ ///
+ /// Fired before the command is run.
+ ///
+ public static event PrePlayerCommandD PrePlayerCommand;
+
+ ///
+ /// The delegate of the event.
+ ///
+ /// The EventArgs for this event.
+ public delegate void PostPlayerCommandD(PostPlayerCommandEventArgs e);
+ ///
+ /// Fired after the command is run.
+ ///
+ public static event PostPlayerCommandD PostPlayerCommand;
+
///
/// The delegate of the event.
///
@@ -449,6 +516,40 @@ namespace TShockAPI.Hooks
return playerCommandEventArgs.Handled;
}
+ ///
+ /// Fires the event.
+ ///
+ /// Command to be executed
+ /// Command arguments
+ /// True if the event has been handled.
+ public static bool OnPrePlayerCommand(Command cmd, ref CommandArgs arguments)
+ {
+ if (PrePlayerCommand == null)
+ return false;
+
+ PrePlayerCommandEventArgs args = new PrePlayerCommandEventArgs(cmd, arguments);
+
+ PrePlayerCommand(args);
+
+ arguments = args.Arguments;
+ return args.Handled;
+ }
+
+ ///
+ /// Fires the event.
+ ///
+ /// Executed command.
+ /// Command arguments.
+ /// Is the command executed.
+ public static void OnPostPlayerCommand(Command cmd, CommandArgs arguments, bool handled)
+ {
+ if (PostPlayerCommand == null)
+ return;
+
+ PostPlayerCommandEventArgs args = new PostPlayerCommandEventArgs(cmd, arguments, handled);
+ PostPlayerCommand(args);
+ }
+
///
/// Fires the event.
///