Using .obj files seems to have changed a lot, I am assuming that 1.15 has removed the ForgeLoader for blockstates, as the multipart system really covers everything it did (except for loading .obj).
The new way to load models:
Your blockstate should use the vanilla method (without".obj" on the model name) e.g.:
{
"variants": {
"": {
"model": "MODID:block/MODEL"
}
}
}
Every model, in the "models/block" path, now needs, MODEL.json, MODEL.obj, MODEL.mtl.
In your new MODEL.json file you need to tell it to use the OBJLoader from forge, and give the full resource path to your ".obj" file, eg:
{
"loader": "forge:obj",
"model": "MODID:models/block/MODEL.obj",
"flip-v": true
}
The options you can include in the new MODEL.json file are:
{
"loader": "forge:obj", //to inform the resource loader to use OBJLoader
"model": <<resource path to .obj file>>,
"detectCullableFaces": true|false,
"diffuseLighting": true|false,
"flip-v": true|false,
"ambientToFullbright": true|false,
"materialLibraryOverride": <<resource path to material library if you need different materials on the same .obj>>,
}
Remember to update the paths for your textures in the .mlt file to use resource paths (without ".png").