Here, this may help you if you're familiar with 1.12, as a LOT of stuff has changed since then.
https://gist.github.com/williewillus/353c872bcf1a6ace9921189f6100d09a
Yeah, the format i posted above is the format you have to use anyway. No such thing as "forge_marker" in 1.15 as far as i know! Just see how vanilla does things, its your best source. I do not know if that answer your question though
You can register BlockItems with DeferredRegister in the same way as normal Items. Since Blocks are registered before Items, just call RegistryObject#get on your RegistryObject<Block> in the Supplier.
I use these two utility methods to automatically register a BlockItem with the Block using DeferredRegister. RegistryUtil.getRequiredRegistryEntry just returns the registry entry from a RegistryObject or throws an exception if it's not present; but this isn't required in 1.15+ because RegistryObject#get already does this (it didn't in 1.14).