Files
spigot-stealth/design/user-stories/us-004-administer-player-stealth.md
T
dmg a084f86c1d
Release / release (push) Successful in 2m17s
CI / build (push) Successful in 1m3s
feat(admin): add persistent sleep-count policy
2026-09-05 08:34:50 -04:00

4.0 KiB

type, title, description, status
type title description status
User Story US-004: Inspect and manage player stealth Give administrators durable controls for online and offline progression, unlocks, and active concealment. done

US-004: Inspect and manage player stealth

As a server administrator, I want to inspect and correct player stealth state so that I can support players whether they are online or offline.

Acceptance criteria

  • /stealthadmin status <player|uuid> reports accumulated time, unlock status, prepared-login state, and current concealment state.
  • Status inspection works for online players and known offline players selected by exact current or previously recorded name or UUID.
  • /stealthadmin grant <player|uuid> grants the unlock to an online or known offline player without altering accumulated time unnecessarily.
  • Granting an already-owned unlock is safe and clearly reports that no change was needed.
  • Granting the unlock sends the normal full-screen title and chat notification when the target is online.
  • /stealthadmin reset <player|uuid> confirm clears accumulated time, unlock ownership, prepared-login state, and current concealment for an online or known offline player.
  • Reset requires explicit confirmation and safely restores an online concealed player to ordinary identity presentation.
  • /stealthadmin list lists every currently online concealed player and clearly reports when there are none.
  • Concealed players remain absent from administrators' ordinary tab lists and retain hidden overhead name tags; the admin command is the supported discovery mechanism.
  • Commands clearly reject unknown, ambiguous, malformed, or otherwise invalid targets without creating unintended player records.
  • Administrative inspection and modification require an operator-default administrative permission.
  • State-changing operations persist before success is reported and are safe under retries.
  • Grant and reset actions record the administrator, target UUID, and action in the server log without blocking the server tick thread.
  • /stealthadmin tab-completes status, grant, reset, and list, filtered by the entered prefix.
  • Target positions for status, grant, and reset suggest known player names, and reset's final argument suggests confirm.
  • Administrative completions require the administrative permission, and irrelevant positions return no suggestions instead of Bukkit's generic player list.
  • /stealthadmin list unlocked lists every known online or offline player with stealth unlocked.
  • The unlocked list is sorted case-insensitively, identifies nameless records by UUID, and clearly reports when it is empty.
  • Existing /stealthadmin list behavior continues to list currently concealed online players.
  • /stealthadmin sleepcount status reports whether concealed players are included in or excluded from sleep-percentage calculations.
  • /stealthadmin sleepcount <include|exclude> persists the policy before reporting success, applies it immediately, and records the administrator and policy in the server log.
  • The sleepcount, status, include, and exclude arguments are permission-gated and contextually tab-completed.

Validation

Automated tests verify exact offline name and UUID resolution, ambiguous and unknown rejection without record creation, complete status output, idempotent grants and notification, complete resets with presentation cleanup, online concealed-player filtering, online and offline unlocked-player listing, contextual permission-gated completion, durable sleep-count status and policy changes, immediate policy refresh, confirmation and permission gates, persisted-before-success replies, and audit records. The complete ./gradlew clean check jar lifecycle passes.