#### Solution A
In `public void a(InventorySubcontainer inventorysubcontainer)` (some kind of update callback), the horse compares the contents of its saddle and armor slots to the values in its datawatcher. If they're different, it makes a sound - `mob.horse.armor` and `mob.horse.leather` (for saddling). We can consider this the equivalent of an "event", and insert the EntitySaddleEvent there.

#### ~~Solution B~~
Import `SlotHorseSaddle` and implement the method `public void a(EntityHuman entityhuman, ItemStack itemstack)` and oh wait that's the "on item taken out" not "on item put in". Okay then.
<hr>
Well, trash the "A versus B" thing. Now you just need to determine whether they're crazy to have a grace period of a whole second.