What a coincidence. I was working on my mod yesterday and I was struggling with a solution to visually represent BOTH the item damage AND extra data, let's say from NBT.
The item in question was a Watering Can - which wears out, but it can also contain different levels of fluids at different damage levels.
So I registered 9 different item models, each representing different levels of fluid, from 0 to 8 (inclusive). Then, I made sure that the initModel() method, which takes the NBT tag of the itemstack that's responsible for fluid level, returns the right item model. Item damage bar showed up as you'd expect, too, just add max damage and hasDamage.
I could just link to my github... but
1) The mod is in a very, very early stage, not even out on Curseforge, so let's spare the people its growing pains, shall we
2) This is literally my first post on this forum (HI EVERYONE!), I don't want to come of as spammy.
So PM me and I'll give you a link, feel free to use any code that you find helpful. Just... keep the nature of the mod on the hush-hush, at least till an early alpha build is out next month
Or, alternatively, have a look at this tutorial. This is more or less the baseline that I adapted to my needs:
https://wiki.mcjty.eu/modding/index.php?title=Render_Item_NBT-1.12