> You wouldn't give null for an AIR block, would you?
How would you define the targeted face of an air block? Its a concept that minecraft doesn't use, and I'm guessing it doesn't have any code to back it up in the internals.

In fact, this is the first line of the lineOfSightIntersection implementation:

````
if (block.getType() == Material.AIR) {
    return new BlockTargetResult(block, null, null);
}
````

And you can get the behavior you want with regular blocks by passing useHitBoxes = false; it'll just give you the intersection point with the block's volume ("the entire voxel").