Thank you very much, I'll try to understand the setCustomModelResourceLocation thing later. Sorry, I still have no idea what a ModelResourceLocation actually is, but I guess I'll figure that out.
That aside (for now), what about the missing blockstate json (which, as far as I can see, is not missing, so I've no idea what is going wrong) and the ModelBlockDefinition$MissingVariantException? What could be causing them? As far as I understand, block models should get automatically registered along with the block itself, via the default IStateMapper. What am I missing?