Claims API
HuskTowns provides API for getting, creating, changing the type of, & deleting claims and admin claims.
This page assumes you have read the general API introduction and that you have both imported HuskTowns into your project and added it as a dependency.
Table of contents
- Getting if a location is claimed
 - Checking what a user can do at a location
 - Creating a claim
 - Highlighting a claim
 
1. Getting if a location is claimed
- On the Bukkit platform, get a 
Positionobject using#getPosition(org.bukkit.Location location) - Use 
#isClaimAt(Position position)to check if the location has been claimed - Or, use 
#getClaimAt(Position position)to get theOptional<TownClaim>at the location- With an 
Optional<TownClaim>, you can useOptional#isPresent()to check if a claim exists at the location - With a 
TownClaimobject, you can get the associatedTownobject (see Towns API) using#town(), and theClaimitself using#claim() - The 
Claimobject has a range of properties describing the claim. 
 - With an 
 
Example — Getting if a location is claimed
void showTownWhoHasClaimedAt(org.bukkit.Location location) {
    Position position = huskTowns.getPosition(location);
    Optional<TownClaim> claim = huskTowns.getClaimAt(position);
    if (claim.isPresent()) {
        System.out.println("This location is claimed by " + claim.get().town().getName());
    }
}
1.1 Getting the ClaimWorld for a World
- Claims exist within a 
ClaimWorldin HuskTowns.Worlds withoutClaimWorlds are not protected by HuskTowns. - On the Bukkit platform, get a 
Worldobject from a Bukkit World using#getWorld(org.bukkit.World)(or call#getWorld()on aPositionobject) - You can then get the 
ClaimWorldfor a world using#getClaimWorld(World world)which will return anOptional<ClaimWorld> 
Example — Getting the claim world for a world
void showClaimWorld(org.bukkit.World world) {
    Optional<ClaimWorld> claimWorld = huskTowns.getClaimWorld(world);
    if (claimWorld.isPresent()) {
        System.out.println("This world is protected by HuskTowns, and contains " + claimWorld.get().getClaimCount() + " claims!");
    }
}
2. Checking what a user can do at a location
- On the Bukkit platform, get an 
OnlineUserobject using#getOnlineUser(@NotNull org.bukkit.Player player)- Use 
#getPosition()to get thePositionof anOnlineUserto check if there's a claim where they stand (see #1) 
 - Use 
 - Check if a user can perform 
OperationTypesusing#isOperationAllowed(OnlineUser user, OperationType type, Position position)- Use the 
#isOperationAllowedmethod that accepts and build anOperationviaOperation.builder()for more complex operation checks! 
 - Use the 
 
Example — Checking what a user can do at a location
void checkUserAccessAt(org.bukkit.Player player, org.bukkit.Location location) {
    OnlineUser user = huskTowns.getOnlineUser(player);
    Position position = huskTowns.getPosition(location);
    if (huskTowns.isOperationAllowed(user, OperationType.BREAK_BLOCKS, position)) {
        System.out.println("User can build here!");
    } else {
        System.out.println("User can't build here!");
    }
}
3. Creating a claim
- You can create a claim using 
#createClaimAt(OnlineUser actor, Town town, Chunk chunk, World world)- You may also create an admin claim using 
#createAdminClaimAt(OnlineUser actor, Chunk chunk, World world) 
 - You may also create an admin claim using 
 - This will create a claim at that position. You can then use 
#getClaimAt(Position position)to get theTownClaimobject for the claim you just created (see #1) - You can also create a claim at the chunk at a position using 
#createClaimAt(OnlineUser actor, Town town, Position position) 
Example — Creating a claim
void createClaimAt(org.bukkit.Player player, org.bukkit.Chunk chunk, org.bukkit.World world) {
    OnlineUser user = huskTowns.getOnlineUser(player);
    Town town = huskTowns.getTown("townName").get();
    huskTowns.createClaimAt(user, town, chunk, world);
}
3.1 Editing a claim
- You can edit a claim using 
#editClaimAt(Chunk chunk, World world, Consumer<TownClaim> editor) - This will allow you to edit the claim at the given chunk and world using the 
Consumer<TownClaim>to modify theTownClaimobject- For example, you can do 
townClaim.claim().setType(Claim.Type type)to change the type of the claim 
 - For example, you can do 
 
Example — Editing a claim
void editClaimAt(org.bukkit.Chunk chunk, org.bukkit.World world) {
    huskTowns.editClaimAt(chunk, world, townClaim -> {
        townClaim.claim().setType(Claim.Type.FARM);
    });
}
3.2 Deleting a claim
- You can delete a claim using 
#deleteClaimAt(OnlineUser actor, Position position)- A method that accepts a 
Chunkand aWorldis also available 
 - A method that accepts a 
 
Example — Deleting a claim
void deleteClaimAt(org.bukkit.Player player, org.bukkit.Location location) {
    OnlineUser user = huskTowns.getOnlineUser(player);
    Position position = huskTowns.getPosition(location);
    huskTowns.deleteClaimAt(user, position);
}
4. Highlighting a claim
- You can "highlight" a claim for an 
OnlineUser(displaying the outline particle effect) using#highlightClaim(OnlineUser actor, TownClaim claim) - You may additionally specify the duration, and use 
#highlightClaimAtto attempt to highlight a claim at a specifiedPosition 
Example — Highlighting a claim
void highlightClaimAt(org.bukkit.Player player, org.bukkit.Location location) {
    OnlineUser user = huskTowns.getOnlineUser(player);
    Position position = huskTowns.getPosition(location);
    Optional<TownClaim> claim = huskTowns.getClaimAt(position);
    if (claim.isPresent()) {
        huskTowns.highlightClaim(user, claim.get());
    }
}