Call EntityDamageEvent for every damage to a filled item frame

CraftEventFactory.handleEntityDamageEvent() will handle every DamageSource properly and consistently. So you can even cancel damage by explosions and you'll get the right DamageCause.

(First time I created a patch for a patch to patch a patch for a patch.)