diff --git a/src/SMAPI/Framework/StateTracking/PlayerTracker.cs b/src/SMAPI/Framework/StateTracking/PlayerTracker.cs index 9db1ecd6..94081c43 100644 --- a/src/SMAPI/Framework/StateTracking/PlayerTracker.cs +++ b/src/SMAPI/Framework/StateTracking/PlayerTracker.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; -using System.Linq; using StardewModdingAPI.Enums; using StardewModdingAPI.Framework.StateTracking.Comparers; using StardewModdingAPI.Framework.StateTracking.FieldWatchers; @@ -112,12 +111,17 @@ internal class PlayerTracker : IDisposable { HashSet added = new(new ObjectReferenceComparer()); HashSet removed = new(new ObjectReferenceComparer()); - foreach (Item item in this.PreviousInventory.Keys.Union(this.CurrentInventory.Keys)) + + foreach (Item item in this.PreviousInventory.Keys) + { + if (!this.CurrentInventory.ContainsKey(item)) + removed.Add(item); + } + + foreach (Item item in this.CurrentInventory.Keys) { if (!this.PreviousInventory.ContainsKey(item)) added.Add(item); - else if (!this.CurrentInventory.ContainsKey(item)) - removed.Add(item); } return SnapshotItemListDiff.TryGetChanges(added: added, removed: removed, stackSizes: this.PreviousInventory, out changes);