code: @Override
  	public void detectAndSendChanges()
  	{
  		playerInventoryCache.sendChanges();
  		inventoryCaches.values().forEach(InventoryCache::sendChanges);
  
  		//picked itemStack
  		pickedItemStackCache.update();
  		if (pickedItemStackCache.hasChanged())
  			UpdateInventorySlotsMessage.updatePickedItemStack(pickedItemStackCache.get(), (EntityPlayerMP) owner, windowId);
  	}
docs: Sends all changes for base inventory, player's inventory, picked up itemStack and dragged itemStacks.