diff --git a/Source/Client/Syncing/Game/SyncActions.cs b/Source/Client/Syncing/Game/SyncActions.cs index 62a755c5..b5b20a22 100644 --- a/Source/Client/Syncing/Game/SyncActions.cs +++ b/Source/Client/Syncing/Game/SyncActions.cs @@ -25,8 +25,12 @@ void Error(string error) if (CaravanActionConfirmationType == null) Error($"Could not find type: {nameof(CaravanArrivalActionUtility)}.<>c__DisplayClass0_1"); - SyncWorldObjCaravanMenus = RegisterActions((WorldObject obj, Caravan c) => obj.GetFloatMenuOptions(c), ActionGetter, WorldObjectCaravanMenuWrapper); - SyncWorldObjCaravanMenus.PatchAll(nameof(WorldObject.GetFloatMenuOptions)); + // Patch in a long event, otherwise it causes errors with mods that are loading resources + LongEventHandler.ExecuteWhenFinished(() => + { + SyncWorldObjCaravanMenus = RegisterActions((WorldObject obj, Caravan c) => obj.GetFloatMenuOptions(c), ActionGetter, WorldObjectCaravanMenuWrapper); + SyncWorldObjCaravanMenus.PatchAll(nameof(WorldObject.GetFloatMenuOptions)); + }); } private static ref Action ActionGetter(FloatMenuOption o) => ref o.action;