double posYAdd = (0.5 - MathUtil.clamp(factor, 0.0, 0.5)) * 2.0;
entity.loc.y.set(block.y + posYAdd);
if (posYAdd >= 1.0) {
// Go to the vertical rail
entity.loc.y.add(1.0);
entity.loc.x.set(block.midX());
entity.loc.z.set(block.midZ());
// Turn velocity to the vertical type
entity.vel.y.set(entity.vel.xz.length());
entity.vel.xz.setZero();
}