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);