I wouldn't say I know enough Java to pr Forge, so I will instead make my suggestion here.
I think it would be useful if there was a ShieldBlockEvent of some sort, which is fired when an an attack is blocked by a shield. I would assume you could get the DamageSource of the attack along with the shield item from the event.