From c759af6d49650562d8a3e4d8255ae812344a3035 Mon Sep 17 00:00:00 2001
From: quake1337 <3310937+bartico6@users.noreply.github.com>
Date: Tue, 13 Jul 2021 21:53:54 +0200
Subject: [PATCH] Minor update.
- AssertGroupValid now both sends the message and kicks the player
depending on input parameter.
- /login and DataHandler code is now an identical assert check.
---
TShockAPI/Commands.cs | 4 ++--
TShockAPI/GetDataHandlers.cs | 4 ++--
TShockAPI/Utils.cs | 8 ++++++--
3 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs
index d0c3b48a..c3c7090d 100644
--- a/TShockAPI/Commands.cs
+++ b/TShockAPI/Commands.cs
@@ -825,9 +825,9 @@ namespace TShockAPI
{
var group = TShock.Groups.GetGroupByName(account.Group);
- if (group == null)
+ if (!TShock.Utils.AssertGroupValid(args.Player, group, false))
{
- args.Player.SendErrorMessage("Login failed: The account references a group that doesn't exist.");
+ args.Player.SendErrorMessage("Login attempt failed - see the message above.");
return;
}
diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs
index b90f6fe1..bc5f2175 100644
--- a/TShockAPI/GetDataHandlers.cs
+++ b/TShockAPI/GetDataHandlers.cs
@@ -2452,7 +2452,7 @@ namespace TShockAPI
var group = TShock.Groups.GetGroupByName(account.Group);
- if (!TShock.Utils.AssertGroupValid(args.Player, group))
+ if (!TShock.Utils.AssertGroupValid(args.Player, group, true))
return true;
args.Player.PlayerData = TShock.CharacterDB.GetPlayerData(args.Player, account.ID);
@@ -3007,7 +3007,7 @@ namespace TShockAPI
var group = TShock.Groups.GetGroupByName(account.Group);
- if (!TShock.Utils.AssertGroupValid(args.Player, group))
+ if (!TShock.Utils.AssertGroupValid(args.Player, group, true))
return true;
args.Player.Group = group;
diff --git a/TShockAPI/Utils.cs b/TShockAPI/Utils.cs
index be3722df..aad127dc 100644
--- a/TShockAPI/Utils.cs
+++ b/TShockAPI/Utils.cs
@@ -214,15 +214,19 @@ namespace TShockAPI
///
/// Asserts that the group reference can be safely assigned to the player object.
+ /// If this assertion fails, and is true, the player is disconnected. If is false, the player will receive an error message.
///
///
///
///
- public bool AssertGroupValid(TSPlayer player, Group group)
+ public bool AssertGroupValid(TSPlayer player, Group group, bool kick)
{
if (group == null)
{
- player.Disconnect("Your account's group could not be found. Please contact server administrators about this.");
+ if (kick)
+ player.Disconnect("Your account's group could not be loaded. Please contact server administrators about this.");
+ else
+ player.SendErrorMessage("Your account's group could not be loaded. Please contact server administrators about this.");
return false;
}