@@ -260,12 +260,20 @@ private int computeBucketIdx(T element) {
260260 int dx = x - playerPositions [0 ];
261261 int dy = y - playerPositions [1 ];
262262 int dz = z - playerPositions [2 ];
263- int distSqMin = dx *dx + dy *dy + dz *dz ;
263+ long dx2 = (long ) dx * (long ) dx ;
264+ long dy2 = (long ) dy * (long ) dy ;
265+ long dz2 = (long ) dz * (long ) dz ;
266+ long masked = dx2 | dy2 | dz2 ;
267+ int distSqMin = masked > (long ) Integer .MAX_VALUE ? Integer .MAX_VALUE : dx *dx + dy *dy + dz *dz ;
264268 for (int i = 3 ; i < playerPositions .length ; i += 3 ) {
265269 dx = x - playerPositions [i ];
266270 dy = y - playerPositions [i +1 ];
267271 dz = z - playerPositions [i +2 ];
268- int distSq = dx *dx + dy *dy + dz *dz ;
272+ dx2 = (long ) dx * (long ) dx ;
273+ dy2 = (long ) dy * (long ) dy ;
274+ dz2 = (long ) dz * (long ) dz ;
275+ masked = dx2 | dy2 | dz2 ;
276+ int distSq = masked > (long ) Integer .MAX_VALUE ? Integer .MAX_VALUE : dx *dx + dy *dy + dz *dz ;
269277 if (distSq < distSqMin ) {
270278 distSqMin = distSq ;
271279 }
@@ -274,7 +282,8 @@ private int computeBucketIdx(T element) {
274282 int log2dist = 32 - Integer .numberOfLeadingZeros (distSqMin );
275283 int bitsToCutOff = log2dist >> 1 ;
276284 int approxDist = distSqMin >> bitsToCutOff ;
277- return Math .min (approxDist , BUCKET_COUNT - 1 );
285+ int min = Math .min (approxDist , BUCKET_COUNT - 1 );
286+ return min ;
278287 }
279288
280289 /**
0 commit comments