I have something similar to this mostly working but the process is somewhat convoluted.
You can look at my code here.
You can see most of it in common/draftcore/..., helpers/..., api/
I can try to come up with a path for you to follow to help you understand what is going on.
Edit:
this is more or less the path you can follow for looking through the code:
*helpers/CommonProxy #preInit, #registerLuxin, #registerCores, #registerParts, #registerItems
They lead to my registries in the API for other mods to use,
a good practice is to use your own api's to accomplish create things.
If something can't be done with your api then expand it so it can be done.
*helpers/ClientProxy #init, you can see me registering my models here
*client/itemrenderers/DraftableModelLoader you will want to use something like this
*client/itemrenderers/DraftableModel yours should be similar to this
*client/itemrenderers/DraftableBakedModel #Quads yours you should be able to almost copy from the default one
*client/itemrenderers/DraftableOverrideList #handleItemState is where you can parse nbt info