From 0ae461428e06ae8b2a77bf1d3d58c23e86ce2b2a Mon Sep 17 00:00:00 2001 From: Fff <141797114+WhereisFff@users.noreply.github.com> Date: Fri, 2 Oct 2026 22:59:42 -0700 Subject: [PATCH] =?UTF-8?q?fix(cube):=20=E4=BF=AE=E5=A4=8D=E7=89=B9?= =?UTF-8?q?=E5=AE=9A=E8=A7=86=E8=A7=92=E4=B8=8B=E8=B6=8A=E7=95=8C=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E6=97=A0=E6=B3=95=E9=80=89=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/dev/anvilcraft/lib/v2/cube/client/CubePicking.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/module.cube/src/main/java/dev/anvilcraft/lib/v2/cube/client/CubePicking.java b/module.cube/src/main/java/dev/anvilcraft/lib/v2/cube/client/CubePicking.java index 92769364..87bc2c7e 100644 --- a/module.cube/src/main/java/dev/anvilcraft/lib/v2/cube/client/CubePicking.java +++ b/module.cube/src/main/java/dev/anvilcraft/lib/v2/cube/client/CubePicking.java @@ -30,10 +30,11 @@ public static HitResult pick(Entity entity, double range, float partialTick, boo HitResult vanilla = entity.pick(range, partialTick, fluids); if (!(vanilla instanceof BlockHitResult block) || CubeSelection.searchRadius() == 0) return vanilla; Vec3 start = entity.getEyePosition(partialTick); + Vec3 end = start.add(entity.getViewVector(partialTick).scale(range)); double distanceToHit = start.distanceToSqr(block.getLocation()); // Sable 等模组可能返回子空间存储坐标,不能从玩家位置跨坐标空间逐格补扫。 - if (!(distanceToHit <= range * range + 1.0E-7)) return vanilla; - Vec3 end = start.add(entity.getViewVector(partialTick).scale(range)); + // 原版视线向量存在浮点误差,使用实际射线长度,避免误拒绝正常的 MISS 终点。 + if (!(distanceToHit <= start.distanceToSqr(end) + 1.0E-7)) return vanilla; context.nearest = block; context.distance = distanceToHit; context.visited.clear();