From a82fd159dea553b190277cd2f19b4392522f1050 Mon Sep 17 00:00:00 2001 From: _nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 5 Mar 2023 20:48:08 +0000 Subject: [PATCH 1/7] fix gabba guh --- QSB/HUD/MultiplayerHUDManager.cs | 2 +- QSB/Player/TransformSync/PlayerTransformSync.cs | 4 ++-- QSB/Utility/DebugActions.cs | 2 +- QSB/manifest.json | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/QSB/HUD/MultiplayerHUDManager.cs b/QSB/HUD/MultiplayerHUDManager.cs index bdf89e640..cac810e25 100644 --- a/QSB/HUD/MultiplayerHUDManager.cs +++ b/QSB/HUD/MultiplayerHUDManager.cs @@ -220,7 +220,7 @@ private void OnAddPlayer(PlayerInfo player) private void OnRemovePlayer(PlayerInfo player) { - Destroy(player.HUDBox.gameObject); + Destroy(player.HUDBox?.gameObject); } private PlanetTrigger CreateTrigger(string parentPath, HUDIcon icon) diff --git a/QSB/Player/TransformSync/PlayerTransformSync.cs b/QSB/Player/TransformSync/PlayerTransformSync.cs index c030693c9..4cadce5be 100644 --- a/QSB/Player/TransformSync/PlayerTransformSync.cs +++ b/QSB/Player/TransformSync/PlayerTransformSync.cs @@ -36,7 +36,7 @@ public override void OnStartClient() var player = new PlayerInfo(this); QSBPlayerManager.PlayerList.SafeAdd(player); base.OnStartClient(); - QSBPlayerManager.OnAddPlayer?.Invoke(Player); + QSBPlayerManager.OnAddPlayer?.SafeInvoke(Player); DebugLog.DebugWrite($"Create Player : {Player}", MessageType.Info); JoinLeaveSingularity.Create(Player, true); @@ -50,7 +50,7 @@ public override void OnStopClient() // TODO : Maybe move this to a leave event...? Would ensure everything could finish up before removing the player QSBPatch.Remote = true; - QSBPlayerManager.OnRemovePlayer?.Invoke(Player); + QSBPlayerManager.OnRemovePlayer?.SafeInvoke(Player); QSBPatch.Remote = false; base.OnStopClient(); Player.HudMarker?.Remove(); diff --git a/QSB/Utility/DebugActions.cs b/QSB/Utility/DebugActions.cs index 5f75a53c9..4749c8cc6 100644 --- a/QSB/Utility/DebugActions.cs +++ b/QSB/Utility/DebugActions.cs @@ -226,7 +226,7 @@ public void Update() { var player = new PlayerInfo(QSBPlayerManager.LocalPlayer.TransformSync); QSBPlayerManager.PlayerList.SafeAdd(player); - QSBPlayerManager.OnAddPlayer?.Invoke(player); + QSBPlayerManager.OnAddPlayer?.SafeInvoke(player); DebugLog.DebugWrite($"CREATING FAKE PLAYER : {player}", MessageType.Info); JoinLeaveSingularity.Create(player, true); diff --git a/QSB/manifest.json b/QSB/manifest.json index 983d635f7..0e98a8df6 100644 --- a/QSB/manifest.json +++ b/QSB/manifest.json @@ -7,7 +7,7 @@ "body": "- Disable *all* other mods. (Can heavily affect performance)\n- Make sure you are not running any other network-intensive applications." }, "uniqueName": "Raicuparta.QuantumSpaceBuddies", - "version": "0.26.1", + "version": "0.26.2", "owmlVersion": "2.9.0", "dependencies": [ "_nebula.MenuFramework", "JohnCorby.VanillaFix" ], "pathsToPreserve": [ "debugsettings.json" ], From 4bb701cd03bc231712b6a2a8831569329d1f46f7 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Sun, 5 Mar 2023 13:20:46 -0800 Subject: [PATCH 2/7] move sector list --- QSB/Utility/DebugGUI.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/QSB/Utility/DebugGUI.cs b/QSB/Utility/DebugGUI.cs index 54139539f..4f6acf433 100644 --- a/QSB/Utility/DebugGUI.cs +++ b/QSB/Utility/DebugGUI.cs @@ -159,6 +159,12 @@ private static void DrawGui() { WriteLine(1, $" - {item}"); } + + WriteLine(1, $"Sectors :"); + foreach (var sector in PlayerTransformSync.LocalInstance.SectorDetector.SectorList) + { + WriteLine(1, $"- {sector.Name}"); + } } #endregion @@ -196,12 +202,6 @@ private static void DrawGui() WriteLine(2, $" - Ref. Sector : {(referenceSector == null ? "NULL" : referenceSector.Name)}", referenceSector == null ? Color.red : Color.white); WriteLine(2, $" - Ref. Transform : {(referenceTransform == null ? "NULL" : referenceTransform.name)}", referenceTransform == null ? Color.red : Color.white); - - WriteLine(2, $"Sectors :"); - foreach (var sector in PlayerTransformSync.LocalInstance.SectorDetector.SectorList) - { - WriteLine(2, $"- {sector.Name}"); - } } } From fd9458fa2cafb54e8be6c803ce2fdf0159f1cec6 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Sun, 5 Mar 2023 13:31:40 -0800 Subject: [PATCH 3/7] add prevent guy for vanish volume as well --- QSB/Player/Patches/VolumePatches.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/QSB/Player/Patches/VolumePatches.cs b/QSB/Player/Patches/VolumePatches.cs index 841316035..81152e7f3 100644 --- a/QSB/Player/Patches/VolumePatches.cs +++ b/QSB/Player/Patches/VolumePatches.cs @@ -49,10 +49,16 @@ public static void OnEffectVolumeEnter(RingRiverFluidVolume __instance, GameObje public static bool PreventRemotePlayerEnter(object __instance, GameObject hitObj) { DebugLog.DebugWrite($"{__instance} funny prevent enter {hitObj}"); - // this is a dogshit fix to a bug where this would ApplyShock to remote players, - // which would actually apply the shock affects to the entire planet / sector - // // TODO: also do this with remote probes return hitObj.name is not ("REMOTE_PlayerDetector" or "REMOTE_CameraDetector"); } + + [HarmonyPrefix] + [HarmonyPatch(typeof(VanishVolume), nameof(VanishVolume.OnTriggerEnter))] + public static bool PreventRemotePlayerEnter(object __instance, Collider hitCollider) + { + DebugLog.DebugWrite($"{__instance} funny prevent enter {hitCollider}"); + // TODO: also do this with remote probes + return hitCollider.name is not ("REMOTE_PlayerDetector" or "REMOTE_CameraDetector"); + } } From bfddd8f8cc6ac02126bd05fd2ca065c7d3e9d95f Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Sun, 5 Mar 2023 13:54:34 -0800 Subject: [PATCH 4/7] use .\ so mirror weaver works on linux --- QSB/QSB.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index f52bdb615..519e684fe 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -16,7 +16,7 @@ - + From a4b7deb3222506ec3693c7a69fe344322224ec27 Mon Sep 17 00:00:00 2001 From: _nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 8 Mar 2023 02:24:35 +0000 Subject: [PATCH 5/7] bust them ghosts --- QSB/Ghostbuster.cs | 66 +++++++++++++++++++++++++++++++++++++++ QSB/QSBNetworkManager.cs | 2 ++ QSB/Utility/Extensions.cs | 5 +-- 3 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 QSB/Ghostbuster.cs diff --git a/QSB/Ghostbuster.cs b/QSB/Ghostbuster.cs new file mode 100644 index 000000000..e1d9483c2 --- /dev/null +++ b/QSB/Ghostbuster.cs @@ -0,0 +1,66 @@ +using Mirror; +using QSB.Player; +using QSB.Utility; +using System.Collections.Generic; +using UnityEngine; + +namespace QSB; +internal class Ghostbuster : MonoBehaviour, IAddComponentOnStart +{ + private const int UpdateInterval = 60; + + private int _updateCount; + + public void Update() + { + if (!QSBCore.IsInMultiplayer) + { + return; + } + + if (!QSBCore.IsHost) + { + return; + } + + if (_updateCount != UpdateInterval) + { + _updateCount++; + return; + } + else + { + _updateCount = 0; + } + + var _ghostPlayers = new List(); + + foreach (var player in QSBPlayerManager.PlayerList) + { + var isGhost = false; + + var networkIdentity = player.TransformSync.netIdentity; + + if (networkIdentity.connectionToClient == null) + { + isGhost = true; + } + else if (!NetworkServer.connections.ContainsValue(networkIdentity.connectionToClient)) + { + isGhost = true; + } + + if (isGhost) + { + // WE GOT ONE!!!!!! + _ghostPlayers.Add(player); + } + } + + foreach (var item in _ghostPlayers) + { + DebugLog.ToConsole($"Deleting playerId:{item.PlayerId} - It's a ghooOoOoOooost! (hopefully)", OWML.Common.MessageType.Info); + NetworkServer.DestroyPlayerForConnection(item.TransformSync.netIdentity.connectionToClient); + } + } +} diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 9d920dbf4..0d7ebe2d0 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -260,6 +260,8 @@ private void ConfigureNetworkManager() public override void OnServerAddPlayer(NetworkConnectionToClient connection) // Called on the server when a client joins { + connection.Disconnect(); + DebugLog.DebugWrite("OnServerAddPlayer", MessageType.Info); base.OnServerAddPlayer(connection); diff --git a/QSB/Utility/Extensions.cs b/QSB/Utility/Extensions.cs index 0b1488c55..41d4e8c77 100644 --- a/QSB/Utility/Extensions.cs +++ b/QSB/Utility/Extensions.cs @@ -1,6 +1,7 @@ using Cysharp.Threading.Tasks; using Mirror; using OWML.Common; +using QSB.Player; using System; using System.Collections.Generic; using System.Linq; @@ -40,10 +41,10 @@ public static GameObject FindChild(this GameObject g, string childPath) => public static uint GetPlayerId(this NetworkConnectionToClient conn) { - if (!conn.identity) + if (conn.identity == null) { // wtf - DebugLog.ToConsole($"Error - GetPlayerId on {conn} has no identity\n{Environment.StackTrace}", MessageType.Error); + DebugLog.ToConsole($"Error - GetPlayerId on {conn} has no identity.", MessageType.Error); return uint.MaxValue; } From 50b2a40113fd0187e5d7f9ebb60abc6898ea39da Mon Sep 17 00:00:00 2001 From: _nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 8 Mar 2023 13:20:47 +0000 Subject: [PATCH 6/7] Update QSBNetworkManager.cs --- QSB/QSBNetworkManager.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 0d7ebe2d0..9d920dbf4 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -260,8 +260,6 @@ private void ConfigureNetworkManager() public override void OnServerAddPlayer(NetworkConnectionToClient connection) // Called on the server when a client joins { - connection.Disconnect(); - DebugLog.DebugWrite("OnServerAddPlayer", MessageType.Info); base.OnServerAddPlayer(connection); From c5787d9e8bd07e403a175e5856c1cf4e51d2600d Mon Sep 17 00:00:00 2001 From: _nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 8 Mar 2023 13:30:40 +0000 Subject: [PATCH 7/7] Update manifest.json --- QSB/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/QSB/manifest.json b/QSB/manifest.json index 0e98a8df6..d95fa49b0 100644 --- a/QSB/manifest.json +++ b/QSB/manifest.json @@ -7,7 +7,7 @@ "body": "- Disable *all* other mods. (Can heavily affect performance)\n- Make sure you are not running any other network-intensive applications." }, "uniqueName": "Raicuparta.QuantumSpaceBuddies", - "version": "0.26.2", + "version": "0.26.3", "owmlVersion": "2.9.0", "dependencies": [ "_nebula.MenuFramework", "JohnCorby.VanillaFix" ], "pathsToPreserve": [ "debugsettings.json" ],