Files
spigot-base/design/user-stories/us-011-configure-and-persist-progression.md
T
dmg e0b1a25c5e
Release / release (push) Successful in 2m50s
CI / build (push) Successful in 1m15s
feat(pocket-base): share flight through gold portals
2026-08-29 00:20:40 -04:00

2.4 KiB

type, title, description, status
type title description status
User Story US-011: Configure and persist progression Give operators validated configuration and durable, defensive storage for all base progression behavior. done

US-011: Configure and persist progression

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

Acceptance criteria

  • Configuration supports all qualifying materials, progression thresholds, radii, vertical flight limits, warning-buffer distance, warm-ups, cooldowns, prices, particle settings, and notification durations.
  • Default values match the progression requirements documented by the related user stories.
  • Thresholds and levels are validated as nonnegative, representable, and sequentially coherent where required.
  • Radii, vertical ranges, durations, and prices reject unsafe or nonsensical values.
  • Invalid required configuration prevents partial plugin initialization and produces a clear server log message.
  • UUID-keyed state persists latest known names, base locations, counters, levels, relocation times, teleport times, visitor cooldowns, navigation preferences, flight preferences, boss-bar preferences, and visitor settings.
  • UUID-keyed Pocket Base state persists raid-earned flight unlocks, with missing legacy values defaulting safely to locked.
  • Pocket Base state persists the owner automatic-flight preference and active flight portal, with safe defaults for legacy records.
  • Cooldowns and relocation limits use real elapsed timestamps and continue while players are offline.
  • State is saved safely so a failed write does not replace valid persisted state with a partial document.
  • Corrupt, unknown, or invalid records are handled defensively and cannot silently grant progression or privileges.
  • Unknown forward-compatible configuration and state fields are preserved where practical.