Hi all, I'm trying to create a system that can reliably detect when a certain item enters or exits a player's inventory. The first idea I had was to listen to all Set Slot and Window Items packets sent to the client, and use this to see if the target item had entered or exited the inventory. However, this method is quite unreliable and there are lots of ways it can be tricked. Equipping armor doesn't count as obtaining the item (probably because the client is informed about it with the Entity Equipment packet?) and any change to an item EG durability change triggers the code to think the item has been added. The only other options I can think of are: 1. Try and listen to every possible event I could think of that could result in an item entering or exiting the inventory. InventoryClickEvent, InventoryDragEvent, PlayerDropItemEvent, ItemPickupEvent, all that kind of thing. However, this might still miss things such as players obtaining an item with a command. 2. Regularly check PlayerInventory#getContents() on a scheduler, try and make some efficient code for checking if anything has changed, and then seeing if that change involves the adding or removal of my target item. Can anyone advise me, either on another, better method for doing this, or on which of the two methods I described would be better? Thanks in advance.