diff --git a/QSB/ItemSync/WorldObjects/Items/IQSBItem.cs b/QSB/ItemSync/WorldObjects/Items/IQSBItem.cs index bb372a2a..af9ab5a4 100644 --- a/QSB/ItemSync/WorldObjects/Items/IQSBItem.cs +++ b/QSB/ItemSync/WorldObjects/Items/IQSBItem.cs @@ -9,10 +9,4 @@ public interface IQSBItem : IWorldObject void PickUpItem(Transform itemSocket); void DropItem(Vector3 position, Vector3 normal, Sector sector); void OnCompleteUnsocket(); - - /// - /// store the last location when a remote player drops/sockets us - /// so we can use it if they leave while still holding - /// - void StoreLocation(); } \ No newline at end of file diff --git a/QSB/ItemSync/WorldObjects/Items/QSBItem.cs b/QSB/ItemSync/WorldObjects/Items/QSBItem.cs index f860a072..23d466bf 100644 --- a/QSB/ItemSync/WorldObjects/Items/QSBItem.cs +++ b/QSB/ItemSync/WorldObjects/Items/QSBItem.cs @@ -29,7 +29,11 @@ internal class QSBItem : WorldObject, IQSBItem public override void OnRemoval() => QSBPlayerManager.OnRemovePlayer -= OnPlayerLeave; - public void StoreLocation() + /// + /// store the last location when a remote player picks up an item + /// so we can use it if they leave while still holding it + /// + private void StoreLocation() { _lastParent = AttachedObject.transform.parent; _lastPosition = AttachedObject.transform.localPosition; @@ -76,8 +80,11 @@ internal class QSBItem : WorldObject, IQSBItem public ItemType GetItemType() => AttachedObject.GetItemType(); - public void PickUpItem(Transform holdTransform) => + public void PickUpItem(Transform holdTransform) + { + StoreLocation(); QSBPatch.RemoteCall(() => AttachedObject.PickUpItem(holdTransform)); + } public void DropItem(Vector3 position, Vector3 normal, Sector sector) => QSBPatch.RemoteCall(() => AttachedObject.DropItem(position, normal, sector.transform, sector, null));