feat(board): add shared physical quest boards
Release / release (push) Successful in 4m19s
CI / build (push) Successful in 1m20s

This commit is contained in:
dmg
2026-09-04 23:33:18 -04:00
parent f024744440
commit 63779d1631
20 changed files with 645 additions and 12 deletions
+7
View File
@@ -26,3 +26,10 @@ description: Chronological record of material decisions affecting Spigot Quest B
- 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`.
@@ -2,7 +2,7 @@
type: User Story
title: "US-002: Create and use shared quest boards"
description: Let administrators establish persistent physical boards that expose one shared quest system.
status: backlog
status: done
---
# US-002: Create and use shared quest boards
@@ -11,15 +11,15 @@ As an **administrator**, I want to turn a targeted block into a quest board so t
## Acceptance criteria
- [ ] An authorized administrator can use `/questadmin createboard` to register the block they are targeting.
- [ ] Creation rejects a missing, invalid, or already registered target without changing state.
- [ ] Registered boards persist across server restarts with their world and block coordinates.
- [ ] Interacting with any registered board opens the quest-board interface.
- [ ] Every registered board exposes the same global quests and claimable items.
- [ ] The interface uses Purpur's supported native dialog API and follows the interaction style of Spigot Base.
- [ ] Ordinary block interaction is not intercepted at unregistered locations.
- [ ] Administrative actions require the `spigotquestboard.admin` permission, granted to server operators by default.
- [ ] Automated tests verify board registration, persistence, shared visibility, authorization, and interaction routing.
- [x] An authorized administrator can use `/questadmin createboard` to register the block they are targeting.
- [x] Creation rejects a missing, invalid, or already registered target without changing state.
- [x] Registered boards persist across server restarts with their world and block coordinates.
- [x] Interacting with any registered board opens the quest-board interface.
- [x] Every registered board exposes the same global quests and claimable items.
- [x] The interface uses Purpur's supported native dialog API and follows the interaction style of Spigot Base.
- [x] Ordinary block interaction is not intercepted at unregistered locations.
- [x] Administrative actions require the `spigotquestboard.admin` permission, granted to server operators by default.
- [x] Automated tests verify board registration, persistence, shared visibility, authorization, and interaction routing.
## Related