diff --git a/Torch.API/Managers/IMultiplayerManagerServer.cs b/Torch.API/Managers/IMultiplayerManagerServer.cs
index b0247ba..31dadcd 100644
--- a/Torch.API/Managers/IMultiplayerManagerServer.cs
+++ b/Torch.API/Managers/IMultiplayerManagerServer.cs
@@ -20,5 +20,17 @@ namespace Torch.API.Managers
/// Bans or unbans a player from the game.
///
void BanPlayer(ulong steamId, bool banned = true);
+
+ ///
+ /// List of the banned SteamID's
+ ///
+ IReadOnlyList BannedPlayers { get; }
+
+ ///
+ /// Checks if the player with the given SteamID is banned.
+ ///
+ /// The SteamID of the player.
+ /// True if the player is banned; otherwise false.
+ bool IsBanned(ulong steamId);
}
}
diff --git a/Torch.Client/Manager/MultiplayerManagerLobby.cs b/Torch.Client/Manager/MultiplayerManagerLobby.cs
index 5ffd7e9..1ef3e3f 100644
--- a/Torch.Client/Manager/MultiplayerManagerLobby.cs
+++ b/Torch.Client/Manager/MultiplayerManagerLobby.cs
@@ -12,6 +12,9 @@ namespace Torch.Client.Manager
{
public class MultiplayerManagerLobby : MultiplayerManagerBase, IMultiplayerManagerServer
{
+ ///
+ public IReadOnlyList BannedPlayers => new List();
+
///
public MultiplayerManagerLobby(ITorchBase torch) : base(torch) { }
@@ -21,6 +24,9 @@ namespace Torch.Client.Manager
///
public void BanPlayer(ulong steamId, bool banned = true) => Torch.Invoke(() => MyMultiplayer.Static.BanClient(steamId, banned));
+ ///
+ public bool IsBanned(ulong steamId) => false;
+
///
public override void Attach()
{
diff --git a/Torch.Server/Managers/MultiplayerManagerDedicated.cs b/Torch.Server/Managers/MultiplayerManagerDedicated.cs
index 3a9b331..d8427fc 100644
--- a/Torch.Server/Managers/MultiplayerManagerDedicated.cs
+++ b/Torch.Server/Managers/MultiplayerManagerDedicated.cs
@@ -31,6 +31,9 @@ namespace Torch.Server.Managers
private static Func> _waitingForGroup;
#pragma warning restore 649
+ ///
+ public IReadOnlyList BannedPlayers => MySandboxGame.ConfigDedicated.Banned;
+
private Dictionary _gameOwnerIds = new Dictionary();
///
@@ -50,6 +53,9 @@ namespace Torch.Server.Managers
});
}
+ ///
+ public bool IsBanned(ulong steamId) => _isClientBanned.Invoke(MyMultiplayer.Static, steamId) || MySandboxGame.ConfigDedicated.Banned.Contains(steamId);
+
///
public override void Attach()
{
@@ -107,7 +113,7 @@ namespace Torch.Server.Managers
private void ValidateAuthTicketResponse(ulong steamID, JoinResult response, ulong steamOwner)
{
_log.Debug($"ValidateAuthTicketResponse(user={steamID}, response={response}, owner={steamOwner}");
- if (_isClientBanned.Invoke(MyMultiplayer.Static, steamOwner) || MySandboxGame.ConfigDedicated.Banned.Contains(steamOwner))
+ if (IsBanned(steamOwner))
{
_userRejected.Invoke((MyDedicatedServerBase)MyMultiplayer.Static, steamID, JoinResult.BannedByAdmins);
_raiseClientKicked.Invoke((MyDedicatedServerBase)MyMultiplayer.Static, steamID);