From 2935d77ef528b52ab178308625f43746dd611d0d Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 12 Dec 2021 10:02:19 +0000 Subject: [PATCH 1/7] fix ship --- QSB/Syncs/Sectored/BaseSectoredSync.cs | 31 ++++++++++++++++---------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/QSB/Syncs/Sectored/BaseSectoredSync.cs b/QSB/Syncs/Sectored/BaseSectoredSync.cs index 1de611ff..d2260c8c 100644 --- a/QSB/Syncs/Sectored/BaseSectoredSync.cs +++ b/QSB/Syncs/Sectored/BaseSectoredSync.cs @@ -1,4 +1,5 @@ -using QSB.Player; +using OWML.Common; +using QSB.Player; using QSB.SectorSync; using QSB.SectorSync.WorldObjects; using QSB.Utility; @@ -97,7 +98,7 @@ namespace QSB.Syncs.Sectored { if (sector == null) { - DebugLog.ToConsole($"Error - {PlayerId}.{GetType().Name} got sector of ID -1.", OWML.Common.MessageType.Error); + DebugLog.ToConsole($"Error - {LogName} got sector of ID -1. (From waiting slot.)", OWML.Common.MessageType.Error); base.Update(); return; } @@ -112,15 +113,21 @@ namespace QSB.Syncs.Sectored public override void SerializeTransform(QNetworkWriter writer, bool initialState) { - if (!QSBPlayerManager.PlayerExists(PlayerId)) + if (IsPlayerObject) { - writer.Write(-1); + if (!QSBPlayerManager.PlayerExists(PlayerId)) + { + writer.Write(-1); + return; + } + else if (!Player.IsReady) + { + writer.Write(-1); + return; + } } - else if (!Player.IsReady) - { - writer.Write(-1); - } - else if (ReferenceSector != null) + + if (ReferenceSector != null) { writer.Write(ReferenceSector.ObjectId); } @@ -128,7 +135,7 @@ namespace QSB.Syncs.Sectored { if (_isInitialized) { - DebugLog.ToConsole($"Warning - ReferenceSector of {PlayerId}.{GetType().Name} is null.", OWML.Common.MessageType.Warning); + DebugLog.ToConsole($"Warning - ReferenceSector of {LogName} is null.", MessageType.Warning); } writer.Write(-1); @@ -159,7 +166,7 @@ namespace QSB.Syncs.Sectored { if (sector == null) { - DebugLog.ToConsole($"Error - {PlayerId}.{GetType().Name} got sector of ID -1.", OWML.Common.MessageType.Error); + DebugLog.ToConsole($"Error - {LogName} got sector of ID -1. (From deserializing transform.)", OWML.Common.MessageType.Error); return; } @@ -202,7 +209,7 @@ namespace QSB.Syncs.Sectored } else { - DebugLog.ToConsole($"Error - No closest sector found to {PlayerId}.{GetType().Name}!", OWML.Common.MessageType.Error); + DebugLog.ToConsole($"Error - No closest sector found to {LogName}!", OWML.Common.MessageType.Error); return false; } } From 0bb136a68c40792423e2dfbdda9d34d18668cfcc Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 12 Dec 2021 10:03:33 +0000 Subject: [PATCH 2/7] stuffz --- QSB/Syncs/Sectored/BaseSectoredSync.cs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/QSB/Syncs/Sectored/BaseSectoredSync.cs b/QSB/Syncs/Sectored/BaseSectoredSync.cs index d2260c8c..95f9c773 100644 --- a/QSB/Syncs/Sectored/BaseSectoredSync.cs +++ b/QSB/Syncs/Sectored/BaseSectoredSync.cs @@ -66,7 +66,7 @@ namespace QSB.Syncs.Sectored } else { - DebugLog.ToConsole($"Warning - {LogName}'s initial sector was null.", OWML.Common.MessageType.Warning); + DebugLog.ToConsole($"Warning - {LogName}'s initial sector was null.", MessageType.Warning); } } @@ -76,7 +76,7 @@ namespace QSB.Syncs.Sectored { if (ReferenceSector != null && ReferenceSector.Transform != ReferenceTransform) { - DebugLog.ToConsole($"Warning - {LogName} : ReferenceSector.Transform was different to ReferenceTransform. Correcting...", OWML.Common.MessageType.Warning); + DebugLog.ToConsole($"Warning - {LogName} : ReferenceSector.Transform was different to ReferenceTransform. Correcting...", MessageType.Warning); SetReferenceTransform(ReferenceSector.Transform); } @@ -98,7 +98,7 @@ namespace QSB.Syncs.Sectored { if (sector == null) { - DebugLog.ToConsole($"Error - {LogName} got sector of ID -1. (From waiting slot.)", OWML.Common.MessageType.Error); + DebugLog.ToConsole($"Error - {LogName} got sector of ID -1. (From waiting slot.)", MessageType.Error); base.Update(); return; } @@ -150,7 +150,6 @@ namespace QSB.Syncs.Sectored sectorId = reader.ReadInt32(); if (initialState && sectorId != -1) { - DebugLog.DebugWrite($"{LogName} set waiting sector id:{sectorId}"); _sectorIdWaitingSlot = sectorId; } @@ -166,7 +165,7 @@ namespace QSB.Syncs.Sectored { if (sector == null) { - DebugLog.ToConsole($"Error - {LogName} got sector of ID -1. (From deserializing transform.)", OWML.Common.MessageType.Error); + DebugLog.ToConsole($"Error - {LogName} got sector of ID -1. (From deserializing transform.)", MessageType.Error); return; } @@ -185,7 +184,7 @@ namespace QSB.Syncs.Sectored { DebugLog.ToConsole($"Warning - Reference was null, but sector manager wasn't ready. " + $"Transform:{ReferenceTransform == null}, Sector:{ReferenceSector == null}", - OWML.Common.MessageType.Warning); + MessageType.Warning); } DebugLog.DebugWrite($"{LogName} : Sector Manager not ready."); @@ -209,7 +208,7 @@ namespace QSB.Syncs.Sectored } else { - DebugLog.ToConsole($"Error - No closest sector found to {LogName}!", OWML.Common.MessageType.Error); + DebugLog.ToConsole($"Error - No closest sector found to {LogName}!", MessageType.Error); return false; } } From 58f85d952254aca5d3cdc71b6799d79c7b8ac24a Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 12 Dec 2021 10:47:59 +0000 Subject: [PATCH 3/7] fix NRE in initpausemenus --- QSB/Menus/MenuManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/QSB/Menus/MenuManager.cs b/QSB/Menus/MenuManager.cs index f652f4b4..647dfddd 100644 --- a/QSB/Menus/MenuManager.cs +++ b/QSB/Menus/MenuManager.cs @@ -176,7 +176,7 @@ namespace QSB.Menus DisconnectButton = MenuApi.PauseMenu_MakeMenuOpenButton("DISCONNECT", DisconnectPopup); - QuitButton = Locator.GetSceneMenuManager().pauseMenu._exitToMainMenuAction.gameObject; + QuitButton = FindObjectOfType()._exitToMainMenuAction.gameObject; if (QSBCore.IsInMultiplayer) { From 767d2d0318a3ec68204ced093c336c53a47c4745 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 12 Dec 2021 10:49:21 +0000 Subject: [PATCH 4/7] Update PlayerEntanglementWatcher.cs --- QSB/Player/PlayerEntanglementWatcher.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/QSB/Player/PlayerEntanglementWatcher.cs b/QSB/Player/PlayerEntanglementWatcher.cs index 0ca9e1f7..bc0cb6e5 100644 --- a/QSB/Player/PlayerEntanglementWatcher.cs +++ b/QSB/Player/PlayerEntanglementWatcher.cs @@ -17,13 +17,18 @@ namespace QSB.Player return; } + if (!WorldObjectManager.AllObjectsReady) + { + return; + } + var controller = Locator.GetPlayerController(); if (controller == null) { return; } - var collidingQuantumObject = controller.GetValue("_collidingQuantumObject"); + var collidingQuantumObject = controller._collidingQuantumObject; if (_previousCollidingQuantumObject != collidingQuantumObject) { var objectIndex = (collidingQuantumObject != null) From a272050b8ba3c032893aac11a95e9afcf6455f31 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Sun, 12 Dec 2021 03:00:20 -0800 Subject: [PATCH 5/7] ShipDamageController_OnImpact NRE --- QSB/ShipSync/Patches/ShipPatches.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/QSB/ShipSync/Patches/ShipPatches.cs b/QSB/ShipSync/Patches/ShipPatches.cs index 663dc505..279e873d 100644 --- a/QSB/ShipSync/Patches/ShipPatches.cs +++ b/QSB/ShipSync/Patches/ShipPatches.cs @@ -206,7 +206,7 @@ namespace QSB.ShipSync.Patches [HarmonyPrefix] [HarmonyPatch(typeof(ShipDamageController), nameof(ShipDamageController.OnImpact))] public static bool ShipDamageController_OnImpact() - => ShipManager.Instance.HasAuthority; + => ShipManager.Instance && ShipManager.Instance.HasAuthority; [HarmonyPostfix] [HarmonyPatch(typeof(ShipComponent), nameof(ShipComponent.RepairTick))] From 589750649f753442e8e10809e9bb82dbbd1cb70e Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Sun, 12 Dec 2021 03:01:41 -0800 Subject: [PATCH 6/7] ShipDamageController_OnImpact NRE for real --- QSB/ShipSync/Patches/ShipPatches.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/QSB/ShipSync/Patches/ShipPatches.cs b/QSB/ShipSync/Patches/ShipPatches.cs index 279e873d..d0076458 100644 --- a/QSB/ShipSync/Patches/ShipPatches.cs +++ b/QSB/ShipSync/Patches/ShipPatches.cs @@ -206,7 +206,14 @@ namespace QSB.ShipSync.Patches [HarmonyPrefix] [HarmonyPatch(typeof(ShipDamageController), nameof(ShipDamageController.OnImpact))] public static bool ShipDamageController_OnImpact() - => ShipManager.Instance && ShipManager.Instance.HasAuthority; + { + if (!ShipManager.Instance) + { + return true; + } + + return ShipManager.Instance.HasAuthority; + } [HarmonyPostfix] [HarmonyPatch(typeof(ShipComponent), nameof(ShipComponent.RepairTick))] From 16592d4d57713c85f93c448f3da8472207413c8b Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Sun, 12 Dec 2021 03:14:00 -0800 Subject: [PATCH 7/7] fixed OccasionalTransformSync NRE --- QSB/ShipSync/Patches/ShipPatches.cs | 10 ++-------- .../TransformSync/OccasionalTransformSync.cs | 4 +++- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/QSB/ShipSync/Patches/ShipPatches.cs b/QSB/ShipSync/Patches/ShipPatches.cs index d0076458..4cbaa293 100644 --- a/QSB/ShipSync/Patches/ShipPatches.cs +++ b/QSB/ShipSync/Patches/ShipPatches.cs @@ -5,6 +5,7 @@ using QSB.Patches; using QSB.Utility; using QSB.WorldSync; using System; +using QSB.ShipSync.TransformSync; using UnityEngine; namespace QSB.ShipSync.Patches @@ -206,14 +207,7 @@ namespace QSB.ShipSync.Patches [HarmonyPrefix] [HarmonyPatch(typeof(ShipDamageController), nameof(ShipDamageController.OnImpact))] public static bool ShipDamageController_OnImpact() - { - if (!ShipManager.Instance) - { - return true; - } - - return ShipManager.Instance.HasAuthority; - } + => ShipTransformSync.LocalInstance == null || ShipManager.Instance.HasAuthority; [HarmonyPostfix] [HarmonyPatch(typeof(ShipComponent), nameof(ShipComponent.RepairTick))] diff --git a/QSB/TornadoSync/TransformSync/OccasionalTransformSync.cs b/QSB/TornadoSync/TransformSync/OccasionalTransformSync.cs index bf844bfc..51008622 100644 --- a/QSB/TornadoSync/TransformSync/OccasionalTransformSync.cs +++ b/QSB/TornadoSync/TransformSync/OccasionalTransformSync.cs @@ -13,7 +13,9 @@ namespace QSB.TornadoSync.TransformSync { public class OccasionalTransformSync : UnsectoredRigidbodySync { - public override bool IsReady => WorldObjectManager.AllObjectsReady; + public override bool IsReady => WorldObjectManager.AllObjectsReady + && _bodyIndex >= 0 && _bodyIndex < CenterOfTheUniverse.s_rigidbodies.Count + && _refBodyIndex >= 0 && _refBodyIndex < CenterOfTheUniverse.s_rigidbodies.Count; public override bool UseInterpolation => false; public override bool IsPlayerObject => false;