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