Files
spigot-tyrant/design/log.md
T
dmg d604dca129
Release / release (push) Successful in 2m13s
CI / build (push) Successful in 53s
feat(state): add validated persistent game state
2026-08-14 22:29:49 -04:00

3.0 KiB

type, title, description
type title description
Log Spigot Tyrant Design Log Chronological record of material decisions affecting the Spigot Tyrant design.

Spigot Tyrant Design Log

2026-08-14 — Configuration and persistence completed

  • Completed US-012 with validated defaults for ranges, timers, effects, items, messages, and mob restrictions, including runtime Bukkit section parsing.
  • Added immutable lifecycle and player state for roles, dual-alignment classes, progression, participation, cooldowns, bound items, and captured mobs.
  • Added RFC 3339 UTC timestamp persistence, paused deadline shifting, atomic YAML replacement, invalid-record rejection, unknown-field preservation, periodic saves, and shutdown saves.
  • Verified all state, settings, bundled configuration, corruption, forward-compatibility, and pause-time tests with ./gradlew clean check jar.

2026-08-14 — Configuration and persistence implementation started

  • US-012 begins with test-first validated defaults, immutable UUID-keyed domain state, paused-time-aware clocks, and defensive atomic YAML persistence.

2026-08-14 — Build and release foundation completed

  • Completed US-013 with a Java 17 Gradle build, Spigot 26.2 API, strict compiler linting, JUnit 5 and Mockito dependencies, plugin metadata, and a minimal plugin entrypoint.
  • Added Gitea push and pull-request CI, conventional-commit validation, development artifacts, semantic versioning, and versioned Gitea release assets modeled on ../spigot-base/.
  • Verified ./gradlew clean check jar, a release-version 1.2.3 JAR and embedded plugin version, workflow delivery settings, and OKF conformance.

2026-08-14 — Build and release implementation started

  • Approved implementation begins with US-013 and a test-driven Java 17, Gradle, Spigot, and Gitea Actions foundation modeled on ../spigot-base/.

2026-08-14 — Initial game design

  • The game has one Tyrant and one Vigilante, with Followers aligned to the Vigilante and Assassin, Fixer, and Tamer classes assigned by the Tyrant.
  • A player who kills the Tyrant becomes the next Tyrant; a Tyrant death without a player killer causes random succession among recently active eligible players.
  • Every Tyrant death clears all class and Follower assignments and resets the former Tyrant's reign progression.
  • Every Vigilante death rerolls the role among eligible players active in the preceding 24 hours. The previous Vigilante is reused only when no other eligible non-Tyrant player exists.
  • A Tyrant levels and earns one unlock choice only by personally killing the Vigilante.
  • Class abilities use named bound items where appropriate. Consumed cooldown items return when ready, and /tyrant item recovers missing ready items.
  • The Tamer has no cooldown and uses a named fishing rod plus a separate captured-mob item.
  • Game timers freeze while administratively paused.
  • The project will follow the Java 17, Gradle, testing, Gitea CI, and semantic-release structure demonstrated by ../spigot-base/.