How to implement your own WayPoints

First we need to create a new class extending IWayPointHandler this is what's going to fetch the information to display
import nl.iobyte.parkplus.api.client.ClientConnection;
import nl.iobyte.parkplus.api.waypoint.enums.WayPointType;
import nl.iobyte.parkplus.api.waypoint.interfaces.IWayPointHandler;
import nl.iobyte.parkplus.api.waypoint.objects.RayData;
import nl.iobyte.parkplus.api.waypoint.objects.WayPoint;
public class CustomWayPointHandler implements IWayPointHandler {
public String getID() {
return "HANDLER_ID";
public WayPointType getType() {
return WayPointType.NO_UPDATE; // or UPDATE if the values change
public String getTitle(WayPoint point) {
return "Get the title here";
public String getDescription(WayPoint point, RayData data, ClientConnection client) {
return "Get the desciption here";
public String getCover(WayPoint point) {
return "";
The description provides data about the WayPoint and Client

In order for us to use our custom handler we have to register it, this goes as follows:
WayPointService service = ParkPlus.getInstance().getAPI().getWayPointService();
service.addWayPointHandler(new CustomWayPointHandler())
And that's it, you can now use your custom waypoint. Either by adding the waypoint in waypoints.yml or loading them in yourself. Example waypoints.yml:
handler: HANDLER_ID
obstruct: <true/false>
range: <number of blocks>
location: '<world name>:<x>:<y>:<z>'
#Your data goes here
The waypoints are loaded without any data, so you have to load the data yourself in the handler if you want to use the waypoints.yml for your custom handler. Or you can load your waypoints as follows:
WayPointService service = ParkPlus.getInstance().getAPI().getWayPointService();
service.addWayPoint(new WayPoint(
<number of blocks>,
null //or class extending IWayPointData<T>

You can also pass a class instance to a handler using the IWayPointData<T> interface. See example:
import nl.iobyte.parkplus.api.waypoint.interfaces.IWayPointData;
public class CustomWayPointData implements IWayPointData<MyClass> {
public MyClass getValue() {
return null; //Return the instance of MyClass here
Last modified 1yr ago
Copy link
On this page
Create a Handler
Register Hanlder
Extending IWayPointData<T>