DUXPLIMA Documentation

Use Cases

How It Works

  1. Build a Command object using .builder()
  2. Get ClaimFacade from the API
  3. Call the appropriate method on the facade
  4. Handle the result
// Example: Rename a claim
ClaimRenameCommand command = ClaimRenameCommand.builder()
    .claimId(claimId)
    .actorUid(player.getUniqueId())
    .name("New Name")
    .build();

ClaimFacade facade = UxmClaimBukkitAPI.getInstance().claimFacade();
Claim updated = facade.renameClaim(command);

Getting the Facade

import com.uxplima.claim.bukkit.api.UxmClaimBukkitAPI;
import com.uxplima.claim.app.facade.ClaimFacade;

ClaimFacade claimFacade = UxmClaimBukkitAPI.getInstance().claimFacade();

Building Commands

All commands use Lombok's @Builder pattern:

import com.uxplima.claim.app.command.ClaimCreateCommand;

ClaimCreateCommand command = ClaimCreateCommand.builder()
    .actorUid(player.getUniqueId())
    .ownerUid(player.getUniqueId())
    .spawnLocation(BukkitConverter.toDomainLocation(player.getLocation()))
    .build();

Available Operations

Claim Lifecycle

MethodCommandDescription
createClaim()ClaimCreateCommandCreate a new claim
deleteClaim()ClaimDeleteCommandDelete a claim
renameClaim()ClaimRenameCommandChange claim name
relocateClaim()ClaimRelocateCommandMove spawn point
rescheduleClaim()ClaimRescheduleCommandExtend expiration
expireClaim()ClaimExpireCommandManually expire

Chunks

MethodCommandDescription
extendClaim()ClaimChunkExtendCommandAdd a chunk
shrinkClaim()ClaimChunkShrinkCommandRemove a chunk

Members & Invitations

MethodCommandDescription
inviteMember()ClaimInviteSendCommandSend invitation
acceptInvite()ClaimInviteAcceptCommandAccept invitation
revokeInvite()ClaimInviteRevokeCommandCancel invitation
banMember()ClaimMemberBanCommandBan a player
unbanMember()ClaimMemberUnbanCommandUnban a player
kickMember()ClaimMemberKickCommandKick a member
leaveMember()ClaimMemberLeaveCommandLeave voluntarily
assignMemberRole()ClaimMemberRoleAssignCommandChange role
updateMemberPerms()ClaimMemberPermissionUpdateCommandUpdate permissions

Roles

MethodCommandDescription
createRole()ClaimRoleCreateCommandCreate custom role
deleteRole()ClaimRoleDeleteCommandDelete role
renameRole()ClaimRoleRenameCommandRename role
updateRolePriority()ClaimRolePriorityUpdateCommandChange priority
updateRolePerms()ClaimRolePermissionUpdateCommandUpdate permissions

Warps

MethodCommandDescription
createWarp()ClaimWarpCreateCommandCreate warp
deleteWarp()ClaimWarpDeleteCommandDelete warp
renameWarp()ClaimWarpRenameCommandRename warp
relocateWarp()ClaimWarpRelocateCommandMove warp
updateWarpVisibility()ClaimWarpVisibilityCommandToggle public/private

Flags, Vault & Blocks

MethodCommandDescription
updateClaimFlags()ClaimFlagsUpdateCommandUpdate flags
updateVault()ClaimVaultUpdateCommandUpdate vault
placeBlock()ClaimBlockPlaceCommandPlace claim block
destroyBlock()ClaimBlockDestroyCommandDestroy claim block
changeBlock()ClaimBlockChangeCommandMove claim block

Examples

Creating a Claim

import com.uxplima.claim.app.command.ClaimCreateCommand;
import com.uxplima.claim.bukkit.api.BukkitConverter;

public void createClaimFor(Player player) {
    ClaimCreateCommand command = ClaimCreateCommand.builder()
        .actorUid(player.getUniqueId())
        .ownerUid(player.getUniqueId())
        .spawnLocation(BukkitConverter.toDomainLocation(player.getLocation()))
        .build();
    
    try {
        Claim claim = claimFacade.createClaim(command);
        player.sendMessage("Claim created: " + claim.getName());
    } catch (ClaimException e) {
        player.sendMessage("Error: " + e.getStatus());
    }
}

Banning a Player

import com.uxplima.claim.app.command.ClaimMemberBanCommand;

public void banFromClaim(UUID claimId, Player actor, UUID targetUid) {
    ClaimMemberBanCommand command = ClaimMemberBanCommand.builder()
        .claimId(claimId)
        .actorUid(actor.getUniqueId())
        .bannedUid(targetUid)
        .reason("Banned via API")
        .build();
    
    ClaimBan ban = claimFacade.banMember(command);
}

Creating a Warp

import com.uxplima.claim.app.command.ClaimWarpCreateCommand;

public void createWarp(UUID claimId, Player actor, String warpName) {
    ClaimWarpCreateCommand command = ClaimWarpCreateCommand.builder()
        .claimId(claimId)
        .actorUid(actor.getUniqueId())
        .name(warpName)
        .location(BukkitConverter.toDomainLocation(actor.getLocation()))
        .isPublic(false)
        .build();
    
    ClaimWarp warp = claimFacade.createWarp(command);
}

Updating Flags

import com.uxplima.claim.app.command.ClaimFlagsUpdateCommand;
import com.uxplima.claim.domain.model.enums.ClaimFlag;

public void disablePvp(UUID claimId, Player actor, Claim claim) {
    // Get current flags and remove PVP
    Set<ClaimFlag> newFlags = new HashSet\<>(claim.getFlags());
    newFlags.remove(ClaimFlag.PVP);
    
    ClaimFlagsUpdateCommand command = ClaimFlagsUpdateCommand.builder()
        .claimId(claimId)
        .actorUid(actor.getUniqueId())
        .flags(newFlags)
        .build();
    
    Claim updated = claimFacade.updateClaimFlags(command);
}

Command Options

All methods have an overloaded version with ClaimCommandOptions:

import com.uxplima.claim.app.command.options.ClaimCommandOptions;
import com.uxplima.claim.app.command.options.ClaimSideEffect;

// Disable event publishing but keep other side effects
ClaimCommandOptions options = ClaimCommandOptions.builder()
    .without(ClaimSideEffect.EVENT)  // Don't fire events
    .build();

Claim result = claimFacade.deleteClaim(command, options);

Use this when:

  • You want to suppress event firing
  • You're doing batch operations
  • You need custom side-effect control

Error Handling

All operations may throw ClaimException:

import com.uxplima.claim.domain.exception.ClaimException;

try {
    claimFacade.banMember(command);
} catch (ClaimException e) {
    switch (e.getStatus()) {
        case ERROR_CLAIM_NOT_FOUND -> player.sendMessage("Claim not found!");
        case ERROR_NO_PERMISSION -> player.sendMessage("No permission!");
        case ERROR_OWNER_CANNOT_BE_BANNED -> player.sendMessage("Cannot ban owner!");
        default -> player.sendMessage("Error: " + e.getMessage());
    }
}

Next Steps