diff --git a/Torch.Server/Managers/MultiplayerManagerDedicated.cs b/Torch.Server/Managers/MultiplayerManagerDedicated.cs
index b5cdcbe..ac8b67c 100644
--- a/Torch.Server/Managers/MultiplayerManagerDedicated.cs
+++ b/Torch.Server/Managers/MultiplayerManagerDedicated.cs
@@ -59,11 +59,18 @@ namespace Torch.Server.Managers
Torch.Invoke(() =>
{
MyMultiplayer.Static.BanClient(steamId, banned);
- if (_gameOwnerIds.ContainsKey(steamId))
- MyMultiplayer.Static.BanClient(_gameOwnerIds[steamId], banned);
});
}
+ internal void RaiseClientBanned(ulong user, bool banned)
+ {
+ Torch.Invoke(() =>
+ {
+ if(_gameOwnerIds.TryGetValue(user, out ulong owner))
+ MyMultiplayer.Static.BanClient(owner, banned);
+ });
+ }
+
///
public bool IsBanned(ulong steamId) => _isClientBanned.Invoke(MyMultiplayer.Static, steamId) ||
MySandboxGame.ConfigDedicated.Banned.Contains(steamId);
diff --git a/Torch.Server/Managers/MultiplayerManagerDedicatedPatchShim.cs b/Torch.Server/Managers/MultiplayerManagerDedicatedPatchShim.cs
new file mode 100644
index 0000000..8034617
--- /dev/null
+++ b/Torch.Server/Managers/MultiplayerManagerDedicatedPatchShim.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using NLog;
+using Sandbox.Engine.Multiplayer;
+using Torch.Managers.PatchManager;
+using Torch.API.Managers;
+
+namespace Torch.Server.Managers
+{
+ [PatchShim]
+ internal static class MultiplayerManagerDedicatedPatchShim
+ {
+ private static Logger Log = LogManager.GetCurrentClassLogger();
+ public static void Patch(PatchContext ctx)
+ {
+ ctx.GetPattern(typeof(MyDedicatedServerBase).GetMethod(nameof(MyDedicatedServerBase.BanClient))).Prefixes.Add(typeof(MultiplayerManagerDedicatedPatchShim).GetMethod(nameof(BanPrefix)));
+ }
+
+ public static void BanPrefix(ulong userId, bool banned)
+ {
+ Log.Info($"Caught ban event for {userId}: {banned}");
+ TorchBase.Instance.CurrentSession.Managers.GetManager().RaiseClientBanned(userId, banned);
+ }
+ }
+}
diff --git a/Torch.Server/Torch.Server.csproj b/Torch.Server/Torch.Server.csproj
index 04e32f5..545f740 100644
--- a/Torch.Server/Torch.Server.csproj
+++ b/Torch.Server/Torch.Server.csproj
@@ -224,6 +224,7 @@
+