damageEntity0() method in LivingEntity will return false when the damage is blocked by a shield. But in Vanilla server, the damage blocked by shield will still trigger the victim's invulnerableTime and makes an entity damage sound (But the knock back will not be called).