private void OnCuffsRemovedFromContainer(EntityUid uid, CuffableComponent component, EntRemovedFromContainerMessage args)
{
- if (args.Container.ID == component.Container.ID)
- {
- _handVirtualItem.DeleteInHandsMatching(uid, args.Entity);
- UpdateCuffState(uid, component);
- }
+ if (args.Container.ID != component.Container.ID)
+ return;
+
+ _handVirtualItem.DeleteInHandsMatching(uid, args.Entity);
+ UpdateCuffState(uid, component);
}
private void OnCuffsInsertedIntoContainer(EntityUid uid, CuffableComponent component, ContainerModifiedMessage args)
/// </summary>
public void DeleteInHandsMatching(EntityUid user, EntityUid matching)
{
+ // Client can't currently predict deleting network entities atm and this might happen due to the
+ // hands leaving PVS for example, in which case we wish to ignore it.
+ if (_net.IsClient)
+ return;
+
foreach (var hand in _hands.EnumerateHands(user))
{
if (TryComp(hand.HeldEntity, out HandVirtualItemComponent? virt) && virt.BlockingEntity == matching)