## [0.0.16] - 2026-02-08
### Added
- **Quest NPC System:** Added configurable quest NPC behavior on the existing `shopkeeper` entity (no duplicate entity type).
- NPC role modes: `SHOP` and `QUEST`.
- New admin tools/commands: `/eco quest list`, `/eco questnpc list`, `/eco questnpc get <id>`.
- New quest GUI flow with accept/progress/claim/cancel states and dialogue lines.
- **Quest Configs:** Added per-world quest files:
- `quests.json` for quest definitions/objectives/rewards.
- `quest_npcs.json` for quest NPC definitions (name, skin, dialogue, quest pool, max active).
- **Quest Progression Tracking:** New SQLite persistence (`quests.db`) for per-player quest state and objective progress.
- **Default Quest Content:** Added a large default quest pack including:
- Capture by type/species/dimension/shiny.
- Capture with specific balls.
- Capture specific species with specific balls.
- Label-based targets (radiant/paradox/legendary/mythical).
- Battle win, raid win, tower win, and fossil-revive objectives.
- Themed pools for Safari, Fisherman, Explorer, Duel, Ballistics, and Fossil Curator NPCs.
- **Quest Rotation & Scheduling:**
- Daily board/rotation with capped visible missions (default 4).
- Supports shared rotation for all players and configurable rotation windows (`MIDNIGHT` or `HOURS`).
- Cooldown/availability can be tied to the next board rotation.
- **Quest Rules:**
- `repeatable`, `cooldownMinutes`, `timeLimitMinutes`, and `requiresCompleted` prerequisite chains.
- Paid cancellation flow with confirmation (double right-click) and fee (`1000` by default).
- Cancelled/expired quests can be locked until next rotation.
- **Quest UX/Feedback:**
- Time remaining and cooldown remaining displayed in GUI.
- Clear success/error messages (accepted, claim ready/not ready, too many active quests, cooldown, locked, prerequisites missing, cancel rules).
### Changed
- **Config Split for Shops:** Shop definitions are now separated into `world/config/cobblemon-economy/shops.json`, while economy/global options stay in `world/config/cobblemon-economy/config.json`.
- **Automatic Migration:** On first boot after update, if `shops.json` is missing, legacy `config.json.shops` is read and exported to `shops.json` automatically.
- **Reload/Admin Workflow:** Shop edits should now be done in `shops.json` (not `config.json`) and reloaded with `/eco reload`.
- **Quest UI:** Moved to a custom 9x6 board-style layout with focused mission cards and detailed objective wording.
- **Quest Copy/Localization:** Expanded and polished EN/FR translations for quest statuses, objective details, filters, and system messages.
- **Placeholder API Compatibility:** Integration now supports both legacy and current PB4 Placeholder API class/package variants.
- **Placeholder Namespace Focus:** Placeholder registration now targets the `cobeco` namespace for consistency.
- **Display Formatting:** Balance and PCO placeholders are now rendered as rounded whole numbers.
### Fixed
- **Duplicate Capture Rewards:** Added capture reward de-duplication guard for duplicate capture callbacks.
- **NPC Nameplate Visibility:** Fully disabled rendered nameplates to prevent residual text above NPC heads.
- **Quest Dialogue Spam:** Added throttling and non-spam refresh behavior when the quest GUI reopens.
### Compatibility
- **Backward Compatible:** Existing worlds/configs continue to work:
- Legacy worlds with inline `config.json.shops` continue to load.
- `shops.json` is generated from legacy shop data when missing.
- If both formats exist, `shops.json` is the authoritative shop source.
- Existing NPCs default to `SHOP` role unless explicitly assigned as quest NPCs.
- **TAB Integration:** Added optional TAB placeholder registration with auto-reload-safe hooks.
- New placeholders: `%cobeco_balance%`, `%cobeco_balance_symbol%`, `%cobeco_pco%`, `%cobeco_pco_symbol%`, `%cobeco_unique_captures%`.
- **Unique Capture Placeholder Support:** Added `unique_captures` support to Placeholder API placeholders.
- Reads live Pokedex data when available and persists capture counts for offline display.
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }