Files
spigot-quest-board/knowledge/log.md
T
dmg e12e31c0ad
Release / release (push) Successful in 2m50s
CI / build (push) Successful in 1m8s
feat(quests): allow nearby command creation
2026-09-05 10:03:30 -04:00

7.5 KiB

type, title, description
type title description
Log Spigot Quest Board Knowledge Log Chronological record of material decisions affecting Spigot Quest Board.

Spigot Quest Board Knowledge Log

2026-09-05 — Initial quest-board design

  • Administrators create physical quest boards, and every board exposes the same global quests and claims.
  • Players create quests by selecting a requested block material and quantity and escrowing reward items from their inventory.
  • Completing players deliver the requested block items at a board and immediately receive the escrowed reward.
  • Delivered blocks remain held by the quest system until the issuer claims them at a board.
  • Cancelled and seven-day-expired quests return escrowed rewards through the same claim system rather than direct inventory delivery.
  • Inventory overflow from rewards or claims is dropped at the receiving player's feet.
  • Player /quests commands are disabled by default so administrators can require physical-board interaction.
  • The board interface follows Spigot Base by using Purpur's supported native dialog API.

2026-09-05 — Foundation started

  • Approved work begins with an OKF knowledge bundle, Java 25/Purpur 26.2 Gradle foundation, automated verification, and a public Gitea repository.

2026-09-05 — Foundation completed

  • Published the project to the public dmg/spigot-quest-board Gitea repository.
  • Added strict Java 25/Purpur 26.2 Gradle builds, plugin metadata, a metadata regression test, and CI/release workflows modeled on Spigot Base.
  • Verified the plugin foundation and JAR with ./gradlew clean check jar.

2026-09-05 — Shared physical quest boards

  • Added durable world-UUID and block-coordinate board registration through /questadmin createboard.
  • Registered main-hand interactions open one shared native Purpur dialog while unregistered blocks remain untouched.
  • Persistence publishes a board only after an atomic YAML save succeeds and rejects duplicate locations.
  • Verified 11 tests and the plugin JAR with ./gradlew clean check jar.

2026-09-05 — Quest creation and reward escrow

  • Added board-dialog and /quests create <block> <quantity> creation using a valid block material, positive quantity, and the exact held reward stack.
  • Escrow preserves full Bukkit item metadata in durable Base64-backed YAML and rolls inventory removal back if persistence fails.
  • Quests receive UUID identifiers and UTC creation and seven-day expiration timestamps.
  • Verified 26 tests and the plugin JAR with ./gradlew clean check jar.

2026-09-05 — Shared quest browsing

  • Added globally shared active-quest listings to every board and to /quests and /quests list.
  • Listings include requested blocks, exact reward summaries, issuer names, and boundary-safe remaining durations.
  • Added persisted lifecycle status with backward-compatible active defaults and filtered stale quest IDs from contextual completion and cancellation suggestions.
  • Verified 37 tests and the plugin JAR with ./gradlew clean check jar.

2026-09-05 — Block delivery and quest completion

  • Added board actions and /quests complete <quest> for exact requested-material delivery from player inventories.
  • Completion serializes state transitions, holds delivered blocks in durable issuer claims, and grants exact escrowed rewards with owner-protected overflow drops.
  • Added durable online and next-login issuer notifications and rollback before persistence succeeds.
  • Verified 49 tests and the plugin JAR with ./gradlew clean check jar.

2026-09-05 — Issuer quest cancellation

  • Added issuer-only board actions and /quests cancel <quest> with ownership-filtered autocomplete.
  • Cancellation atomically moves exact reward escrow into an issuer claim without directly changing inventory.
  • Serialized cancellation against completion and retained active state when persistence fails.
  • Verified 58 tests and the plugin JAR with ./gradlew clean check jar.

2026-09-05 — Quest expiration and held-item claims

  • Added boundary-safe scheduled expiration that moves exact rewards into durable issuer claims.
  • Added claim collection at every board and through /quests claim, distinguishing delivered blocks from cancelled or expired reward returns.
  • Inventory overflow drops at the claimant's feet with ownership protection, and failed claim acknowledgement rolls inventory and drops back before retry.
  • Added persisted online and next-login expiry notifications.
  • Verified 73 tests and the plugin JAR with ./gradlew clean check jar.

2026-09-05 — Administrative player-command control

  • Disabled all player /quests command forms and autocomplete by default while preserving equivalent physical-board actions.
  • Added persistent /questadmin commands enable|disable control with permission-aware autocomplete and failure-safe updates.
  • Kept administrative board creation available independently of the player-command setting.
  • Verified 82 tests and the plugin JAR with ./gradlew clean check jar.

2026-09-05 — Screen-fitting quest-board dialogs

  • Replaced the clipped 800-pixel combined board screen with a compact 420-pixel dashboard.
  • Split browsing, creation, and claims into dedicated native dialog screens with Back navigation.
  • Presented active quests as individual detail dialogs while retaining completion and issuer cancellation actions.
  • Verified 88 tests, including a 250-quest navigation case, and the plugin JAR with ./gradlew clean check jar.

2026-09-05 — Generated physical quest boards

  • Added /questadmin createboard physical to generate a five-wide, four-tall board above the targeted ground anchor facing the administrator.
  • Used oak-log pillars, an oak-plank face, and three oak wall signs with obfuscated decorative text.
  • Registered all visible planks and signs in one durable operation and added obstruction checks plus block rollback when construction or persistence fails.
  • Preserved existing single-block board creation and persisted board compatibility.
  • Verified 103 tests and the plugin JAR with ./gradlew clean check jar.

2026-09-05 — Readable physical-board signage

  • Added centered Quest Board and right-click instruction signs on the two layers above each generated board's three decorative signs.
  • Registered all five signs and the plank face as shared-board interaction locations.
  • Added exact legacy-structure detection and failure-safe startup upgrades for previously generated three-sign boards without touching custom or altered structures.
  • Verified 111 tests and the plugin JAR with ./gradlew clean check jar.

2026-09-05 — Glowing readable board signs

  • Enabled glowing front-side text on generated title and instruction signs while retaining non-glowing decorative signs.
  • Added exact full-structure detection to refresh existing generated boards once without modifying custom or altered signs.
  • Added two-sign snapshot rollback when a refresh cannot complete safely.
  • Verified 116 tests and the plugin JAR with ./gradlew clean check jar.

2026-09-05 — Nearby command-based quest creation

  • Allowed /quests create <block> <quantity> and its material and quantity autocomplete within five blocks of any registered board location even while global player commands are disabled.
  • Kept listing, completion, cancellation, and claiming commands disabled under that setting while preserving global command behavior when enabled.
  • Enforced same-world Euclidean proximity with an inclusive five-block boundary for custom and generated boards.
  • Verified 121 tests and the plugin JAR with ./gradlew clean check jar.