No amount of damage reduction will make you invincible, there is a hard coded cap. You will have to subscribe to LivingHurtEvent, check if the entity is wearing your armor and cancle the event if it is.
Then you could just reuse the processes needed to get the BakedQuad in the upwards direction from the IBakedModel of each Block from the class you are referencing. I would recommend caching this data when applicable.