From 8a0920b6eabadb40bc43cb65a4eb565366ff0f75 Mon Sep 17 00:00:00 2001
From: AkjaHAsLk1IALk0MasH <46046453+AgaSpace@users.noreply.github.com>
Date: Sun, 14 May 2023 12:08:11 +0700
Subject: [PATCH] Added a hook `AccountHooks.AccountGroupUpdate`.
---
TShockAPI/Hooks/AccountHooks.cs | 52 +++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/TShockAPI/Hooks/AccountHooks.cs b/TShockAPI/Hooks/AccountHooks.cs
index 9c08b26d..e224b467 100644
--- a/TShockAPI/Hooks/AccountHooks.cs
+++ b/TShockAPI/Hooks/AccountHooks.cs
@@ -16,6 +16,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
+using System.ComponentModel;
using TShockAPI.DB;
namespace TShockAPI.Hooks
{
@@ -39,6 +40,37 @@ namespace TShockAPI.Hooks
}
}
+ public abstract class AccountGroupUpdateEventArgs : HandledEventArgs
+ {
+ public string AccountName { get; private set; }
+ public Group Group { get; set; }
+
+ public AccountGroupUpdateEventArgs(string accountName, Group group)
+ {
+ this.AccountName = accountName;
+ this.Group = group;
+ }
+ }
+
+ public class AccountGroupUpdateByPluginEventArgs : AccountGroupUpdateEventArgs
+ {
+ public AccountGroupUpdateByPluginEventArgs(string accountName, Group group) : base(accountName, group)
+ {
+ }
+ }
+ public class AccountGroupUpdateByPlayerEventArgs : AccountGroupUpdateEventArgs
+ {
+ ///
+ /// The player who updated the user's group
+ ///
+ public TSPlayer Player { get; private set; }
+
+ public AccountGroupUpdateByPlayerEventArgs(TSPlayer player, string accountName, Group group) : base(accountName, group)
+ {
+ this.Player = player;
+ }
+ }
+
public class AccountHooks
{
public delegate void AccountCreateD(AccountCreateEventArgs e);
@@ -62,5 +94,25 @@ namespace TShockAPI.Hooks
AccountDelete(new AccountDeleteEventArgs(u));
}
+
+ public delegate void AccountGroupUpdateD(AccountGroupUpdateEventArgs e);
+ public static event AccountGroupUpdateD AccountGroupUpdate;
+
+ public static bool OnAccountGroupUpdate(UserAccount account, TSPlayer author, ref Group group)
+ {
+ AccountGroupUpdateEventArgs args = new AccountGroupUpdateByPlayerEventArgs(author, account.Name, group);
+ AccountGroupUpdate?.Invoke(args);
+ group = args.Group;
+
+ return args.Handled;
+ }
+ public static bool OnAccountGroupUpdate(UserAccount account, ref Group group)
+ {
+ AccountGroupUpdateEventArgs args = new AccountGroupUpdateByPluginEventArgs(account.Name, group);
+ AccountGroupUpdate?.Invoke(args);
+ group = args.Group;
+
+ return args.Handled;
+ }
}
}