private void SpeedV2(zenith.zov.base.events.impl.player.EventMove e) {
if (mc.player == null || mc.world == null) return;
if (!MovingUtil.hasPlayerMovement()) return;
boolean collide = mc.player.horizontalCollision || mc.player.isTouchingWater() || mc.player.isSneaking();
Box near = mc.player.getBoundingBox().expand(0.3, 0.15, 0.3);
int playersNearby = mc.world.getEntitiesByClass(PlayerEntity.class, near,
entity -> entity != mc.player && entity.isAlive()).size();
if (playersNearby <= 0) return;
double boost = Math.max(0.0, boostStrength.getCurrent());
double[] dir = MovingUtil.calculateDirection(boost);
Vec3d m = e.getMovePos();
if (m == null) m = Vec3d.ZERO;
if (!collide) {
e.setMovePos(new Vec3d(m.x + dir[0], m.y, m.z + dir[1]));
} else {
double mul = Math.max(0.0, v2CollideMultiplier.getCurrent());
e.setMovePos(new Vec3d(m.x + dir[0] * mul, m.y, m.z + dir[1] * mul));
}
}