Слишком большие значения значит ставил.
Используй метод который я нашел на просторах
Код:
public void pullEntityToLocation(final Entity e, final Location loc) {
final Location entityLoc = e.getLocation();
entityLoc.setY(entityLoc.getY() + 0.1);
e.teleport(entityLoc);
entityLoc.setX(Math.round(entityLoc.getX()));
entityLoc.setY(Math.round(entityLoc.getY()));
entityLoc.setZ(Math.round(entityLoc.getZ()));
final double g = -0.08;
final double t = Math.round(loc.distance(entityLoc));
final double v_x = (0.3 + 0.07 * t) * (Math.round(loc.getX()) - entityLoc.getX()) / t;
final double v_y = (0.2 + 0.03 * t) * (Math.round(loc.getY()) - entityLoc.getY()) / t - 0.5 * g * t;
final double v_z = (0.3 + 0.07 * t) * (Math.round(loc.getZ()) - entityLoc.getZ()) / t;
final Vector v = e.getVelocity();
v.setX(v_x);
v.setY(v_y);
v.setZ(v_z);
e.setVelocity(v);
}
Поиграй со значениями, если не понимаешь, что там что. На практике разберешься.
Но этот метод будет притягивать моба к тебе например, чтобы сработало от тебя используй в качестве энтити моба, а в качестве локации, локацию игрока, и умножай это *e.setVelocity(v);* на -1