You can use the forge multi-layer model with the forge blockstates format, to render parts of the model in different layers. In your block, override Block#canRenderInLayer to return true for every layer which your block has. Then in the blockstates file, define the model as "forge:multi-layer". Add a "custom" tag, and inside that define each of the layers with the model to be rendered. I have an example which uses both translucent and cutout layers for different parts of the model: blockstates, block code.