Skip to content

API reference

The entry point is zone.vao.claimo.ClaimoApi. It exposes requirement registration, read-only stats, voucher lookup, and a programmatic redeem flow.

Member Purpose
registerRequirement(type, factory) Register a requirement type.
registerRequirement(type, factory, inputs) Register a type and declare its creator input fields.
unregisterRequirement(type) Remove a registered type.
requirements The RequirementRegistry (isRegistered, types, …).
stats ClaimoStats — read-only player statistics.
vouchers() List loaded vouchers.
voucher(id) Look one voucher up by id.
redeem(player, voucherId) Run the full redeem flow programmatically.
reload() Reload config and voucher files.

Read-only player statistics, reachable via ClaimoApi.stats:

Method Returns
blocksMined(player) Total blocks the player has broken.
blocksMined(player, whitelist, blacklist) Total broken, filtered by material lists.
playtimeSeconds(player) The player’s total play-time in seconds.

These types live in the zone.vao.claimo.requirement package:

Type Role
Requirement The check you implement — check(context) returns a CompletableFuture<RequirementResult>.
RequirementContext Passed to check — exposes the player.
RequirementResult satisfied(description) / unsatisfied(description).
RequirementConfig The parsed config for one requirement entry — getString, getInt, getLong, getDouble, getBoolean, getStringList, has.
RequirementInput Creator field descriptors: TextInput, NumberInput, BoolInput.
RequirementRegistry The live registry — register, isRegistered, types, inputs(type).

Putting registration, an event listener and stats together:

import org.bukkit.plugin.java.JavaPlugin
import zone.vao.claimo.ClaimoApi
import zone.vao.claimo.requirement.RequirementInput
class MyAddon : JavaPlugin() {
override fun onEnable() {
ClaimoApi.registerRequirement(
"tiktok_follow",
{ cfg -> TikTokFollowRequirement(cfg.getString("account")!!) },
listOf(RequirementInput.TextInput("account", "TikTok account")),
)
server.pluginManager.registerEvents(RedeemStats(), this)
}
override fun onDisable() {
ClaimoApi.unregisterRequirement("tiktok_follow")
}
}