diff --git a/Source/CombatExtended/Compatibility/Multiplayer.cs b/Source/CombatExtended/Compatibility/Multiplayer.cs index edb2d4df02..b093c521ae 100755 --- a/Source/CombatExtended/Compatibility/Multiplayer.cs +++ b/Source/CombatExtended/Compatibility/Multiplayer.cs @@ -13,7 +13,7 @@ public class Multiplayer : IPatch public bool CanInstall() { Log.Message("Combat Extended :: Checking Multiplayer Compat"); - return ModLister.HasActiveModWithName("Multiplayer"); + return ModLister.HasActiveModWithName("Multiplayer") || ModLister.GetActiveModWithIdentifier("rwmt.Multiplayer") != null || ModLister.HasActiveModWithName("Multiplayer [Continuous]"); } public void Install() diff --git a/Source/MultiplayerCompat/MultiplayerCompat.csproj b/Source/MultiplayerCompat/MultiplayerCompat.csproj index 463575b7af..30617b2d77 100644 --- a/Source/MultiplayerCompat/MultiplayerCompat.csproj +++ b/Source/MultiplayerCompat/MultiplayerCompat.csproj @@ -42,6 +42,6 @@ - + diff --git a/Source/MultiplayerCompat/MultiplayerCompat/MultiplayerCompat.cs b/Source/MultiplayerCompat/MultiplayerCompat/MultiplayerCompat.cs index 0b9ec8794e..96023c6862 100755 --- a/Source/MultiplayerCompat/MultiplayerCompat/MultiplayerCompat.cs +++ b/Source/MultiplayerCompat/MultiplayerCompat/MultiplayerCompat.cs @@ -1,5 +1,4 @@ using System; -using System.Diagnostics; using System.Linq; using System.Reflection; using Multiplayer.API; @@ -62,19 +61,20 @@ public void SlowInit(ModContentPack content) } } - MP.RegisterAll(); - + MP.RegisterSyncWorker(SyncCompAmmoUser); + MP.RegisterSyncWorker(SyncCompFireMode); + MP.RegisterSyncWorker(SyncLoadout); + MP.RegisterSyncWorker(SyncLoadoutSlot); + MP.RegisterSyncWorker(SyncITab_Inventory, shouldConstruct: true); global::CombatExtended.Compatibility.Multiplayer.registerCallbacks((() => MP.IsInMultiplayer), (() => MP.IsExecutingSyncCommand), (() => MP.IsExecutingSyncCommandIssuedBySelf)); } +#nullable enable - - - [SyncWorker] - private static void SyncCompAmmoUser(SyncWorker sync, ref CompAmmoUser comp) + private static void SyncCompAmmoUser(SyncWorker sync, ref CompAmmoUser? comp) { if (sync.isWriting) { - var caster = comp.parent.GetComp().PrimaryVerb.Caster; + var caster = comp?.parent.GetComp().PrimaryVerb.Caster; // Sync the turret because in that case syncing fails, due to comp.parent.Map being null, // which causes it to be inaccessible in MP for general syncing @@ -105,12 +105,11 @@ private static void SyncCompAmmoUser(SyncWorker sync, ref CompAmmoUser comp) } } - [SyncWorker] - private static void SyncCompFireMode(SyncWorker sync, ref CompFireModes comp) + private static void SyncCompFireMode(SyncWorker sync, ref CompFireModes? comp) { if (sync.isWriting) { - var caster = comp.Caster; + var caster = comp?.Caster; // Sync the turret because in that case syncing fails, due to comp.parent.Map being null, // which causes it to be inaccessible in MP for general syncing @@ -141,7 +140,6 @@ private static void SyncCompFireMode(SyncWorker sync, ref CompFireModes comp) } } - [SyncWorker] private static void SyncLoadout(SyncWorker sync, ref Loadout loadout) { if (sync.isWriting) @@ -155,7 +153,6 @@ private static void SyncLoadout(SyncWorker sync, ref Loadout loadout) } } - [SyncWorker] private static void SyncLoadoutSlot(SyncWorker sync, ref LoadoutSlot loadoutSlot) { if (sync.isWriting) @@ -198,7 +195,8 @@ private static void SyncLoadoutSlot(SyncWorker sync, ref LoadoutSlot loadoutSlot // Don't sync anything, we just want a blank instance for method calling purposes // We only care about shouldConstruct being true - [SyncWorker(shouldConstruct = true)] private static void SyncITab_Inventory(SyncWorker sync, ref ITab_Inventory inventory) { } } + +#nullable restore