public MovingObjectPosition func_706_a(Vec3D vec3d, Vec3D vec3d1) { Vec3D vec3d2 = vec3d.getIntermediateWithXValue(vec3d1, minX); Vec3D vec3d3 = vec3d.getIntermediateWithXValue(vec3d1, maxX); Vec3D vec3d4 = vec3d.getIntermediateWithYValue(vec3d1, minY); Vec3D vec3d5 = vec3d.getIntermediateWithYValue(vec3d1, maxY); Vec3D vec3d6 = vec3d.getIntermediateWithZValue(vec3d1, minZ); Vec3D vec3d7 = vec3d.getIntermediateWithZValue(vec3d1, maxZ); if (!isVecInYZ(vec3d2)) { vec3d2 = null; } if (!isVecInYZ(vec3d3)) { vec3d3 = null; } if (!isVecInXZ(vec3d4)) { vec3d4 = null; } if (!isVecInXZ(vec3d5)) { vec3d5 = null; } if (!isVecInXY(vec3d6)) { vec3d6 = null; } if (!isVecInXY(vec3d7)) { vec3d7 = null; } Vec3D vec3d8 = null; if (vec3d2 != null && (vec3d8 == null || vec3d.squareDistanceTo(vec3d2) < vec3d.squareDistanceTo(vec3d8))) { vec3d8 = vec3d2; } if (vec3d3 != null && (vec3d8 == null || vec3d.squareDistanceTo(vec3d3) < vec3d.squareDistanceTo(vec3d8))) { vec3d8 = vec3d3; } if (vec3d4 != null && (vec3d8 == null || vec3d.squareDistanceTo(vec3d4) < vec3d.squareDistanceTo(vec3d8))) { vec3d8 = vec3d4; } if (vec3d5 != null && (vec3d8 == null || vec3d.squareDistanceTo(vec3d5) < vec3d.squareDistanceTo(vec3d8))) { vec3d8 = vec3d5; } if (vec3d6 != null && (vec3d8 == null || vec3d.squareDistanceTo(vec3d6) < vec3d.squareDistanceTo(vec3d8))) { vec3d8 = vec3d6; } if (vec3d7 != null && (vec3d8 == null || vec3d.squareDistanceTo(vec3d7) < vec3d.squareDistanceTo(vec3d8))) { vec3d8 = vec3d7; } if (vec3d8 == null) { return(null); } sbyte byte0 = -1; if (vec3d8 == vec3d2) { byte0 = 4; } if (vec3d8 == vec3d3) { byte0 = 5; } if (vec3d8 == vec3d4) { byte0 = 0; } if (vec3d8 == vec3d5) { byte0 = 1; } if (vec3d8 == vec3d6) { byte0 = 2; } if (vec3d8 == vec3d7) { byte0 = 3; } return(new MovingObjectPosition(0, 0, 0, byte0, vec3d8)); }
public virtual MovingObjectPosition collisionRayTrace(World world, int i, int j, int k, Vec3D vec3d, Vec3D vec3d1) { setBlockBoundsBasedOnState(world, i, j, k); vec3d = vec3d.addVector(-i, -j, -k); vec3d1 = vec3d1.addVector(-i, -j, -k); Vec3D vec3d2 = vec3d.getIntermediateWithXValue(vec3d1, minX); Vec3D vec3d3 = vec3d.getIntermediateWithXValue(vec3d1, maxX); Vec3D vec3d4 = vec3d.getIntermediateWithYValue(vec3d1, minY); Vec3D vec3d5 = vec3d.getIntermediateWithYValue(vec3d1, maxY); Vec3D vec3d6 = vec3d.getIntermediateWithZValue(vec3d1, minZ); Vec3D vec3d7 = vec3d.getIntermediateWithZValue(vec3d1, maxZ); if (!isVecInsideYZBounds(vec3d2)) { vec3d2 = null; } if (!isVecInsideYZBounds(vec3d3)) { vec3d3 = null; } if (!isVecInsideXZBounds(vec3d4)) { vec3d4 = null; } if (!isVecInsideXZBounds(vec3d5)) { vec3d5 = null; } if (!isVecInsideXYBounds(vec3d6)) { vec3d6 = null; } if (!isVecInsideXYBounds(vec3d7)) { vec3d7 = null; } Vec3D vec3d8 = null; if (vec3d2 != null && (vec3d8 == null || vec3d.distanceTo(vec3d2) < vec3d.distanceTo(vec3d8))) { vec3d8 = vec3d2; } if (vec3d3 != null && (vec3d8 == null || vec3d.distanceTo(vec3d3) < vec3d.distanceTo(vec3d8))) { vec3d8 = vec3d3; } if (vec3d4 != null && (vec3d8 == null || vec3d.distanceTo(vec3d4) < vec3d.distanceTo(vec3d8))) { vec3d8 = vec3d4; } if (vec3d5 != null && (vec3d8 == null || vec3d.distanceTo(vec3d5) < vec3d.distanceTo(vec3d8))) { vec3d8 = vec3d5; } if (vec3d6 != null && (vec3d8 == null || vec3d.distanceTo(vec3d6) < vec3d.distanceTo(vec3d8))) { vec3d8 = vec3d6; } if (vec3d7 != null && (vec3d8 == null || vec3d.distanceTo(vec3d7) < vec3d.distanceTo(vec3d8))) { vec3d8 = vec3d7; } if (vec3d8 == null) { return(null); } sbyte byte0 = -1; if (vec3d8 == vec3d2) { byte0 = 4; } if (vec3d8 == vec3d3) { byte0 = 5; } if (vec3d8 == vec3d4) { byte0 = 0; } if (vec3d8 == vec3d5) { byte0 = 1; } if (vec3d8 == vec3d6) { byte0 = 2; } if (vec3d8 == vec3d7) { byte0 = 3; } return(new MovingObjectPosition(i, j, k, byte0, vec3d8.addVector(i, j, k))); }