TeamsSubcommand interface: providers can register custom subcommands under /teamsapi <name> via TeamsAPI.registerSubcommand(plugin, subcommand). Each subcommand declares a getName(), getDescription(), optional getPermission(), and execute(CommandSender, String[]).
TeamsAPI.registerSubcommand(plugin, subcommand) — registers via Bukkit ServicesManager.
TeamsAPI.unregisterSubcommand(subcommand) — unregisters; call from onDisable.
TeamsAPI.getSubcommands() — returns all registered subcommands as a snapshot.
/teamsapi status — player-accessible (no admin permission required); shows the active provider, team count, and which optional services (invites, warps, claims, power) are registered.
/teamsapi info now shows all five registered service types (TeamsService, InviteService, WarpService, ClaimService, PowerService) and the registered subcommand count.
teamsapi.use permission (default: true) — basic access to /teamsapi.
teamsapi.status permission (default: true) — access to /teamsapi status.
PowerGainSource enum (PASSIVE, PURCHASE, GAMEPLAY, ADMIN) — identifies the origin of a power gain for use in events and listeners.
PowerLossCause enum (DEATH, DECAY, ADMIN) — identifies the reason for a power loss.
TeamPowerGainEvent (cancellable): fired before a player's power is increased. Listeners can modify the gain amount or cancel the event entirely.
TeamPowerLossEvent (cancellable): fired before a player's power is decreased. Listeners can modify the loss amount or cancel the event entirely.
TeamsPowerService#addPlayerPower(UUID, double) default method: adds power to a player clamped to their maximum; built on getPlayerPower/setPlayerPower.
TeamsClaimService#isOverClaimed(UUID) default method: returns true when a team's claim count exceeds its power-gated maximum (power-negative state).
config.yml in the plugin: opt-in passive-regen (periodic power gain for online players) and power-shop (buy power via /teamsapi power buy <n>).
/teamsapi power status — shows the sender's current and max power.
/teamsapi power buy <amount> — purchases power units with Vault economy (requires Vault and power-shop.enabled: true in config).
teamsapi.power and teamsapi.power.buy permission nodes (default: op).
Passive regen scheduler: when passive-regen.enabled: true, grants configurable power to every online team member on a configurable interval. Fires TeamPowerGainEvent; skips if cancelled. Folia-compatible via GlobalRegionScheduler.
Passive regen and power shop are both Folia-compatible. Folia is detected at runtime; GlobalRegionScheduler is used on Folia and BukkitScheduler on Paper / Spigot.
Changed
/teamsapi now requires teamsapi.use; senders without it receive a permission error instead of the help message.
/teamsapi status now requires teamsapi.status.
/teamsapi info now requires teamsapi.admin.
/teamsapi help (and the bare /teamsapi) only lists subcommands that the sender has permission to execute.