Problem with AI for 2D games libr

Hello,
im trying to make bot for simple pong game. I have problem with reseting bots position after scoring point. Any suggestions?

//main func.
import game2dai.*;
import game2dai.entities.*;
import game2dai.entityshapes.*;
import game2dai.entityshapes.ps.*;
import game2dai.fsm.*;
import game2dai.graph.*;
import game2dai.maths.*;
import game2dai.steering.*;
import game2dai.utils.*;
import java.util.*;

World world;
StopWatch sw;
Vehicle dart;
LinkedList<Vector2D> route = new LinkedList<Vector2D>();

Plansza pl;
Prawy pr;
Lewy lw;

boolean[] keys;
int mode;
//var lewy
float xlw;
float ylw;
//var pilka
int r = 8;
PVector location;
PVector velocity;
//var prawy
int xpr = 770;
int ypr = 190;
boolean zmiana;   // do sprawdzenia czy location.y sie zmienilo 
float ploc;       //poprzednia lokacja

void setup() {
  size(800, 460);
  world = new World(width, height);
  sw = new StopWatch();

  pl = new Plansza();
  pr = new Prawy();
  lw = new Lewy();

  dart = new Vehicle(
    new Vector2D(17, 225), // pozycja
    40, // kolizja
    new Vector2D(0, 0), // przyspieszenie
    240, // max predkosc
    new Vector2D(1, 0), // kierunek
    1, // masa
    100, // zwrotnosc
    99999999 // max sila
    );

  PersonPic view = new PersonPic(this);    
  dart.renderer(view);
  dart.AP().pathFactors(10, 1).pathOn();
  world.add(dart);
  route.add(new Vector2D(dart.pos()));
  sw.reset();

  keys = new boolean[4];
  for (int i = 0; i < keys.length; i++) {
    keys[i] = false;
  }

  location = new PVector(width/2, height/2);
  velocity = new PVector(4, 0);
}

void draw() {
  double elapsedTime = sw.getElapsedTime();
  world.update(elapsedTime);
  if (dart.AP().pathRouteLength() == 0) dart.velocity(0, 0);
  background(0);
  resetDart();
  drawRoute();
  ballRoute();

  ploc = location.y;                     //zachowaj wartosc w poprzedniej klatce

  pl.hit();
  pr.gracz();
  lw.gracz();
  pl.tlo();
  pl.pilka();

  if (location.y == ploc) {
    zmiana = false;
  } else {
    zmiana = true;
  }

  world.draw(elapsedTime);
}

void keyPressed() {

  if (key == CODED && keyCode == UP)
    keys[2] = true;
  if (key == CODED && keyCode == DOWN)
    keys[3] = true;
}

void keyReleased() {

  if (key == CODED && keyCode == UP)
    keys[2] = false;
  if (key == CODED && keyCode == DOWN)
    keys[3] = false;
}

void drawRoute() {
  Vector2D p0, p1;
  while (route.size () > dart.AP().pathRouteLength() + 1)
    route.removeFirst();
}

void ballRoute() {
  if (zmiana) {      
    Vector2D wp = new Vector2D(17, location.y+15);
    dart.AP().pathAddToRoute(wp);
    route.add(wp);
  }
}

void resetDart() {                     //these should be posiotion reset func.
}

//LEFT PLAYER (bot)
class Lewy {

  void gracz() {
    Vector2D p0, p1;
    p0 = route.get(0);
    xlw = (float)p0.x - 7;
    ylw = (float)p0.y - 35;

    noStroke();
    fill(255);
    rect(xlw, ylw, 15, 80, 5);
  }
}

// RIGHT PLAYER
class Prawy {

  void gracz() {

    noStroke();
    fill(255);
    rect(xpr, ypr, 15, 80, 5);

    if (keys[2]) {
      ypr = ypr - 3;
    }
    if (keys[3]) {
      ypr = ypr + 3;
    }
    
    if (ypr < 0) ypr = 0;
    if (ypr + 80 > height) ypr = height - 80;
    
    if (location.x > width+r || location.x < 0-r) ypr = 190;
  }
}

// GAMEPLAY FUNC
class Plansza {

  int l, p;

  void tlo() {

    strokeWeight(0.5);
    stroke(230);
    line(width/2, 0, width/2, height);

    strokeWeight(0.5);
    stroke(230);
    noFill();
    ellipse(width/2, height/2, 120, 120);

    textSize(32);
    text(l, width/2 - 100, 100);
    text(p, width/2 + 100, 100);

    if (location.x > width + r) {
      l = l+1;
      velocity.x = 5;
    }
    if (location.x < 0 - r) {
      p = p+1;
      velocity.x = -5;
    }

    if (location.x > width + r || location.x < 0 - r) { 
      location.x = width/2;
      location.y = height/2;
      velocity.y = 0;
    }
  }

  void pilka() {

    fill(255);
    ellipse(location.x, location.y, 2*r, 2*r);

    location.add(velocity);

    if (keyPressed && key == 'r') {
      location.x = width/2;
      location.y = height/2;
      velocity.x = 5;
      velocity.y = 0;
      l = 0; 
      p = 0;
    }
  }

  void hit() {

    float testX1 = location.x;
    float testY1 = location.y;

    if (location.x + r < xpr)        testX1 = xpr;
    else if (location.x + r > xpr)   testX1 = xpr;

    if (location.y < ypr)            testY1 = ypr;
    else if (location.y > ypr + 80)  testY1 = ypr + 80;

    float distX1 = location.x-testX1;
    float distY1 = location.y-testY1;
    float distance1 = sqrt((distX1*distX1) + (distY1*distY1));

    if (distance1 <= r) {
      velocity.x = (velocity.x * -1) - 0.10;
    }

    if (distance1 <= r) {
      if (location.y > 0 && location.y < ypr + r) {
        velocity.y = -3;
      } else if (location.y >= ypr + r && location.y < ypr + 30) {
        velocity.y = -1;
      } else if (location.y >= ypr + 30 && location.y < ypr + 50) {
        velocity.y = 0;
      } else if (location.y >= ypr + 50 && location.y < ypr + 70) {
        velocity.y = 1;
      } else if (location.y >= ypr + 70 && location.y < height) {
        velocity.y = 3;
      }
    }

    float testX2 = location.x;
    float testY2 = location.y;

    if (location.x < xlw)            testX2 = xlw;
    else if (location.x > xlw + 15)  testX2 = xlw + 15;

    if (location.y < ylw)            testY2 = ylw;
    else if (location.y > ylw + 80)  testY2 = ylw + 80;

    float distX2 = location.x-testX2;
    float distY2 = location.y-testY2;
    float distance2 = sqrt((distX2*distX2) + (distY2*distY2));

    if (distance2 <= r) {
      velocity.x = (velocity.x * -1) + 0.10;
    }

    if (distance2 <= r) {
      if (location.y > 0 && location.y < ylw + r) {
        velocity.y = -3;
      } else if (location.y >= ylw + r && location.y < ylw + 30) {
        velocity.y = -1;
      } else if (location.y >= ylw + 30 && location.y < ylw + 50) {
        velocity.y = 0;
      } else if (location.y >= ylw + 50 && location.y < ylw + 70) {
        velocity.y = 1;
      } else if (location.y >= ylw + 70 && location.y < height) {
        velocity.y = 3;
      }
    }

    if (location.y - r < 0)           velocity.y = velocity.y * -1;
    else if (location.y + r > height) velocity.y = velocity.y * -1;
  }
}

have you tried adding a reset for each player? You have it for the ball, but not the players, as far as I can tell, but I am not a good programmer…