Yeah, 1.13. If you want variations based on something like color, take a look at the way that BlockShulkerBox handles its constructor. You can use that sort of thing to do registry like so
new BlockVariant(EnumColor.color).setRegistryName(registryName)
new BlockVariant(EnumColor.color2).setRegistryName(registryName2)
And thereby reuse the same class file while creating different blocks from it, with different blockState.json files for each one