WorldBorder keeps its diameter updated properly

This commit is contained in:
Felix Cravic 2020-05-27 22:24:58 +02:00
parent af430ebc3f
commit d91b1e9966
2 changed files with 11 additions and 1 deletions

View File

@ -287,6 +287,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer {
return;
}
// Synchronization with updated fields in #getPosition()
if (cacheX != position.getX() ||
cacheY != position.getY() ||
cacheZ != position.getZ()) {

View File

@ -185,7 +185,16 @@ public class WorldBorder {
} else {
double diameterDelta = newDiameter - oldDiameter;
long elapsedTime = System.currentTimeMillis() - lerpStartTime;
this.currentDiameter = oldDiameter + (diameterDelta * ((double) elapsedTime / (double) speed));
double percentage = (double) elapsedTime / (double) speed;
percentage = Math.max(percentage, 1);
this.currentDiameter = oldDiameter + (diameterDelta * percentage);
// World border finished lerp
if (percentage == 1) {
this.lerpStartTime = 0;
this.speed = 0;
this.oldDiameter = newDiameter;
}
}
}