mirror of
https://github.com/NoCheatPlus/NoCheatPlus.git
synced 2024-12-30 20:37:52 +01:00
Fix interact-ray-tracing workaround.
This commit is contained in:
parent
48ffb2f09f
commit
0d3f63e8c3
@ -105,14 +105,23 @@ public class InteractRayTracing extends RayTracing {
|
|||||||
*/
|
*/
|
||||||
private final boolean allowsWorkaround(final int blockX, final int blockY, final int blockZ) {
|
private final boolean allowsWorkaround(final int blockX, final int blockY, final int blockZ) {
|
||||||
// TODO: This allows some bypasses for "strange" setups.
|
// TODO: This allows some bypasses for "strange" setups.
|
||||||
|
// TODO: Consider using distance to target as heuristic ? [should not get smaller !?]
|
||||||
|
final int dX = blockX - lastBx;
|
||||||
|
final int dY = blockY - lastBy;
|
||||||
|
final int dZ = blockZ - lastBz;
|
||||||
|
final double dSq = dX * dX + dY * dY + dZ * dZ;
|
||||||
for (int i = 0; i < 6; i++){
|
for (int i = 0; i < 6; i++){
|
||||||
final int[] dir = incr[i];
|
final int[] dir = incr[i];
|
||||||
final int rX = lastBx + dir[0];
|
final int rX = blockX + dir[0];
|
||||||
if (Math.abs(blockX - rX) > 1) continue;
|
if (Math.abs(lastBx - rX) > 1) continue;
|
||||||
final int rY = lastBy + dir[1];
|
final int rY = blockY + dir[1];
|
||||||
if (Math.abs(blockY - rY) > 1) continue;
|
if (Math.abs(lastBy - rY) > 1) continue;
|
||||||
final int rZ = lastBz + dir[2];
|
final int rZ = blockZ + dir[2];
|
||||||
if (Math.abs(blockZ - rZ) > 1) continue;
|
if (Math.abs(lastBz - rZ) > 1) continue;
|
||||||
|
final int dRx = rX - lastBx;
|
||||||
|
final int dRy = rY - lastBy;
|
||||||
|
final int dRz = rZ - lastBz;
|
||||||
|
if (dRx * dRx + dRy * dRy + dRz * dRz <= dSq) continue;
|
||||||
if (!doesCollide(rX, rY, rZ)){
|
if (!doesCollide(rX, rY, rZ)){
|
||||||
// NOTE: Don't check "rX == targetBx && rZ == targetBz && rY == targetBy".
|
// NOTE: Don't check "rX == targetBx && rZ == targetBz && rY == targetBy".
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
Reference in New Issue
Block a user