|
15 | 15 |
|
16 | 16 | public class SableRaycastHelper { |
17 | 17 |
|
18 | | - public static RaycastHelper.PredicateTraceResult rayCastUntilWithSublevels(final Level level, final Vec3 start, final Vec3 end, final BiPredicate<@Nullable SubLevel, BlockPos> predicate) { |
| 18 | + public static @Nullable RaycastHelper.PredicateTraceResult rayCastUntilWithSublevels(final Level level, final Vec3 start, final Vec3 end, final BiPredicate<@Nullable SubLevel, BlockPos> predicate) { |
19 | 19 | return rayCastUntilWithSublevels(level, start, end, (pos) -> predicate.test(null, pos), predicate); |
20 | 20 | } |
21 | 21 |
|
22 | | - public static RaycastHelper.PredicateTraceResult rayCastUntilWithSublevels(final Level level, final Vec3 start, final Vec3 end, final Predicate<BlockPos> predicate) { |
| 22 | + public static @Nullable RaycastHelper.PredicateTraceResult rayCastUntilWithSublevels(final Level level, final Vec3 start, final Vec3 end, final Predicate<BlockPos> predicate) { |
23 | 23 | return rayCastUntilWithSublevels(level, start, end, predicate, (sublevel, pos) -> predicate.test(pos)); |
24 | 24 | } |
25 | 25 |
|
26 | | - public static RaycastHelper.PredicateTraceResult rayCastUntilWithSublevels(final Level level, final Vec3 start, final Vec3 end, final Predicate<BlockPos> predicate, final BiPredicate<SubLevel, BlockPos> subLevelPredicate) { |
| 26 | + public static @Nullable RaycastHelper.PredicateTraceResult rayCastUntilWithSublevels(final Level level, final Vec3 start, final Vec3 end, final Predicate<BlockPos> predicate, final BiPredicate<SubLevel, BlockPos> subLevelPredicate) { |
27 | 27 | RaycastHelper.PredicateTraceResult closestRay = RaycastHelper.rayTraceUntil(start, end, predicate); |
28 | | - double closestDistance = closestRay.getPos() != null ? Vec3.atCenterOf(closestRay.getPos()).distanceToSqr(start) : Double.MAX_VALUE; |
| 28 | + double closestDistance = closestRay != null && !closestRay.missed() ? Vec3.atCenterOf(closestRay.getPos()).distanceToSqr(start) : Double.MAX_VALUE; |
29 | 29 |
|
30 | 30 | final Iterable<SubLevel> sublevels = Sable.HELPER.getAllIntersecting(level, new BoundingBox3d(start, end)); |
31 | 31 |
|
|
0 commit comments