Skip to content

QuartersAPI

Jack edited this page May 13, 2024 · 5 revisions

The QuartersAPI class is not fully fleshed out yet and there are no guarantees anything will stay where it is. There are currently no events to listen for within Quarters however they will likely be included in future releases.

To get an instance of the QuartersAPI class add the plugin as a provided dependency in your build system (https://jitpack.io/#jwkerr/Quarters) and use this code:

QuartersAPI quartersAPI = QuartersAPI.getInstance();

Getting quarter instances

There are a few different ways to access quarter instances using the API depending on your use case.

// Get a quarter from a Location instance
List<Quarter> quarterList = QuartersAPI.getInstance().getQuarter(location);

// Get every quarter on the server
List<Quarter> quarterList = QuartersAPI.getInstance().getAllQuarters();

// Get all the quarters in a specific town
List<Quarter> quarterList = QuartersAPI.getInstance().getQuartersTown(town).getQuarters();

Getting Quarters' internal player and town methods

These classes exist for easy access to info about changes Quarters has made to specific residents and towns through Towny's metadata system and for an easy to comprehend way of checking things like if a player is currently in a quarter.

// Get a QuartersPlayer instance
QuartersPlayer quartersPlayer = QuartersAPI.getInstance().getQuartersPlayer(player);

// Get a QuartersTown instance
QuartersTown quartersTown = QuartersAPI.getInstance().getQuartersTown(town);

Some example usages of these instances:

QuartersPlayer quartersPlayer = QuartersAPI.getInstance().getQuartersPlayer(player);

if(!quartersPlayer.isInQuarter()) {
  QuartersMessaging.sendErrorMessage(quartersPlayer.getPlayer(), "You are not standing within a quarter")
  return;
}
QuartersTown quartersTown = QuartersAPI.getInstance().getQuartersTown(town);

List<Quarter> quarterList = quartersTown.getQuarters();

Working with quarters instances

If you want to make any change to a quarter's properties you must first get an instance of it using one of the above methods, then make any change you need like this:

// Change a quarter's owner
UUID uuid = player.getUniqueId(); // We use UUIDs internally and resolve a resident from there to allow for graceful cleanup after resident deletion

quarter.setOwner(uuid);
quarter.setClaimedAt(Instant.now().toEpochMilli());
quarter.save(); // Ensure you .save() after any change you make, the only exception to this is the .delete() method which "saves" itself
// Delete a quarter
quarter.delete();
// Iterate through some quarters and check if they are in a valid location still, if not delete them
for (Quarter quarter : quarterList) {
  if (!quarter.isInValidLocation) {
    quarter.delete();
  }
}