Files
spigot-tyrant/design/user-stories/us-012-configure-and-persist-state.md
T
dmg 0c4a95801a
Release / release (push) Successful in 2m56s
CI / build (push) Successful in 1m12s
feat(gear): add Tyrant legacy tools and weapons
2026-09-09 22:02:59 -04:00

2.6 KiB

type, title, description, status
type title description status
User Story US-012: Configure and persist game state Give operators validated configuration and durable defensive storage for all Tyrant behavior. done

US-012: Configure and persist game state

As a server operator, I want configurable and durable game behavior so that the plugin remains predictable across restarts and balance changes.

Acceptance criteria

  • Configuration covers ranges, durations, cooldowns, inactivity and maintenance intervals, effect levels and caps, mob restrictions, item materials and names, messages, timer behavior, shared-role-arena boss balance, and a validated barrier wall height defaulting to 12 blocks.

  • Defaults match the approved user stories, including a 50-block Tyrant range and Follower range, seven-day opt-out, 48-hour inactivity, and one-minute role maintenance.

  • Invalid required configuration prevents partial plugin initialization and produces a clear server log message.

  • UUID-keyed state stores lifecycle, current and pending roles, assignments, login history, participation, reign progression, purchases, choices, claimed legacy armor slots, cooldowns, paused time, item delivery, and captured mobs; the administrator-set arena center is durable across restarts.

  • Cooldowns and deadlines use UTC instants and exclude administratively paused time.

  • State is saved using atomic replacement where supported so failed writes do not replace valid state with partial data.

  • Corrupt, unknown, or invalid records cannot silently grant progression, roles, powers, items, or duplicated mobs.

  • Unknown forward-compatible configuration and state fields are preserved where practical.

  • Plugin disable removes transient effects and presentation safely while preserving durable state.

  • Tool and weapon claims persist alongside existing armor claims with backward-compatible loading and per-reign reset; see US-022.

US-022 validation

Verified older armor-only YAML, absent claim state, mixed armor/tool restart round trips, and nine-item reign reset with ./gradlew clean check jar (177 passing tests); see US-022 verification and limitations.