How It Works
- Build a Command object using
.builder()
- Get ClaimFacade from the API
- Call the appropriate method on the facade
- 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
| Method | Command | Description |
|---|
createClaim() | ClaimCreateCommand | Create a new claim |
deleteClaim() | ClaimDeleteCommand | Delete a claim |
renameClaim() | ClaimRenameCommand | Change claim name |
relocateClaim() | ClaimRelocateCommand | Move spawn point |
rescheduleClaim() | ClaimRescheduleCommand | Extend expiration |
expireClaim() | ClaimExpireCommand | Manually expire |
Chunks
| Method | Command | Description |
|---|
extendClaim() | ClaimChunkExtendCommand | Add a chunk |
shrinkClaim() | ClaimChunkShrinkCommand | Remove a chunk |
Members & Invitations
| Method | Command | Description |
|---|
inviteMember() | ClaimInviteSendCommand | Send invitation |
acceptInvite() | ClaimInviteAcceptCommand | Accept invitation |
revokeInvite() | ClaimInviteRevokeCommand | Cancel invitation |
banMember() | ClaimMemberBanCommand | Ban a player |
unbanMember() | ClaimMemberUnbanCommand | Unban a player |
kickMember() | ClaimMemberKickCommand | Kick a member |
leaveMember() | ClaimMemberLeaveCommand | Leave voluntarily |
assignMemberRole() | ClaimMemberRoleAssignCommand | Change role |
updateMemberPerms() | ClaimMemberPermissionUpdateCommand | Update permissions |
Roles
| Method | Command | Description |
|---|
createRole() | ClaimRoleCreateCommand | Create custom role |
deleteRole() | ClaimRoleDeleteCommand | Delete role |
renameRole() | ClaimRoleRenameCommand | Rename role |
updateRolePriority() | ClaimRolePriorityUpdateCommand | Change priority |
updateRolePerms() | ClaimRolePermissionUpdateCommand | Update permissions |
Warps
| Method | Command | Description |
|---|
createWarp() | ClaimWarpCreateCommand | Create warp |
deleteWarp() | ClaimWarpDeleteCommand | Delete warp |
renameWarp() | ClaimWarpRenameCommand | Rename warp |
relocateWarp() | ClaimWarpRelocateCommand | Move warp |
updateWarpVisibility() | ClaimWarpVisibilityCommand | Toggle public/private |
Flags, Vault & Blocks
| Method | Command | Description |
|---|
updateClaimFlags() | ClaimFlagsUpdateCommand | Update flags |
updateVault() | ClaimVaultUpdateCommand | Update vault |
placeBlock() | ClaimBlockPlaceCommand | Place claim block |
destroyBlock() | ClaimBlockDestroyCommand | Destroy claim block |
changeBlock() | ClaimBlockChangeCommand | Move 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