Описание
# CobblemonQuests
The engagement loop your Cobblemon server needs. Daily, weekly,
elite, hidden, and **repeatable** quests, server-wide community
goals, leaderboards, configurable sound effects, and a complete
in-game authoring + customization toolkit — all built on a clean
single-screen GUI that admins can rearrange slot-by-slot from
config without touching Java.
## Feature highlights
### For players
- **6 quest types** — Daily, Weekly, Elite Weekly, Hidden,
Repeatable, and Normal (chain steps).
- **Repeatable quests** never rotate. Run them as many times as
you like; lifetime run counts are tracked per quest and shown
on the tile.
- **Elite weekly** — one extra-difficult weekly with significantly
better rewards, displayed in a dedicated slot with glow.
- **Hidden quests** unlock invisibly when triggers match (catch
count, species, dimension, etc.) and live in a dedicated Hidden
viewer GUI alongside trophy tiles for ones you've already
completed.
- **15 objective types** — catch, battle NPC, defeat wild
(separately tracked from PvE wins), level up, gain levels, evolve,
hatch eggs, throw Poké Balls, use experience candies, visit
biomes / dimensions (with anti-ping-pong dedup), catch shiny,
catch legendary, complete PokeHunts, complete raids.
- **Single 6-row quest GUI** — everything visible at once: leaderboard
tile + reset timers on row 0, dailies on rows 1–2, weeklies on
rows 3–4, streak / milestones / hidden / repeatable / close on
row 5. No more digging through sub-pages.
- **Server Quests** — shared server-wide objectives with a live boss
bar. Every player contributes. Duration from 1 hour to 1 week.
Top-3 contributors get bonus rewards; offline contributors are
paid out on next login via a queued-rewards system.
Contribution leaderboard with player heads + medals.
- **Leaderboards** — top-16 player-head pyramid with own-rank glow.
Ties are now broken by who reached the value first (timestamp-
based), so racing past a friend keeps you on top.
- **Sound + visual effects** — configurable sounds on quest complete,
claim, milestone, streak advance, hidden discovered, chain
advance, and community-goal complete. Title / subtitle flashes on
major events.
- **Claim system** — completed quests glow `★ READY ★`; claim
individually or hit Claim All. Auto-mode available.
- **Daily streak** + **lifetime milestones** — reward consistency.
Milestone GUI is paginated and fully configurable.
- **Reroll system** with hard per-rotation caps — `daily-per-day`
and `weekly-per-week` (default 1 each). No paid fallback. Counters
are consumed *before* the roll and refunded if the pool can't
produce a replacement, so concurrent clicks can't double-spend.
- **Chat reward banners** — every reward payout shows a one-line
confirmation: `★ +250 Stars` / `$ +5000 PokeDollars`. Format
fully customizable per-server.
### For admins
- **In-game customization of literally every player-facing string,
slot, item, color, and button**. No jar editing, no Java. Every
GUI is its own HOCON file under `config/cobblemonquests/gui/`:
- `main_menu.conf`, `detail_menu.conf`, `stats_menu.conf`,
`milestone_menu.conf`, `leaderboard_menu.conf`,
`repeatable_menu.conf`
- Set the `slot` (0–53) of every button. Set the `rows` (1–6) of
every menu. Toggle any button's `visible` flag. Replace the
glass-pane filler with any item id. Customize progress-bar
characters, colors, length, brackets. Reorder quest name parts
via `name-format`. Sort quests by progress / rarity /
alphabetical / status / id.
- **Custom Command Buttons** — drop unlimited extra buttons into
any GUI: store links, Discord, voting, vanilla command shortcuts.
Each entry takes `slot`, `item`, `name`, `lore`, `glow`, and a
`command` template with `{player}` substitution.
- **Event Command Hooks** — fire console commands when any of
these events happen: `quest-complete`, `milestone-reached`,
`streak-milestone`, `claim`. Wire up Discord webhooks, broadcast
messages, grant external items — all without recompiling.
- **Admin right-click quick actions** — right-click any quest tile
with admin perms to open Complete / Reset Progress / View
Details inline.
- **Quest Browser** — tabbed by type (All / Daily / Weekly /
Normal / Elite / Hidden / Repeat), filtered by rarity + category,
sortable, paginated. Scales to hundreds of quests.
- **Quest Editor + Quest Creation Wizard** — full in-game CRUD.
Cycle type / category / rarity, set targets, build rewards via
the 4-step wizard, save to disk, duplicate, delete (two-click
confirm), live preview.
- **4-Step Reward Wizard** — pick category (Currency / Items /
Crate Keys / Commands) → browse + select (item browser with
All / Cobblemon / Balls / Candies / Vanilla tabs and full
registry pagination) → set quantity → recap + confirm.
- **Per-reward `display` override** — replace any reward's lore
text with custom MiniMessage. Perfect for branded rewards or
hiding raw `padmin givekey` commands behind a clean
`Special Reward` line.
- **Reward display rename map** — `rewards.display-names` maps any
item id or key id to a custom name globally. Servers can ship a
fully branded tooltip set without per-reward edits.
- **Chain Browser + Editor + Wizard** (admin-side) — full in-game
chain authoring with step picker, inline quest creation, reorder
arrows, difficulty tags, loopable toggle, chain-completion
rewards.
- **Server Quest Browser + Editor + Wizard** — create server-wide
goals with objective type, target, duration (1h to 1 week), base
rewards, and top-3 contributor bonus rewards. **Active Goal
Management dashboard**: stop, reset, boost progress, view
contributors live.
- **Player Management GUI** — inspect any online player: active
quests, streak, Stars balance, total completed, repeatable run
counts. Admin actions: grant Stars, reset dailies / weeklies,
wipe player data (two-click confirm). Admin perms re-checked
on every click — a mid-session demotion takes effect immediately.
- **Config Editor** — multi-page hub: Reroll Caps / Pool Weights /
Toggles / GUI Layout. Each is a clean sub-page with Save.
- **GUI Layout Editor** — visual 54-slot grid. Click any slot to
cycle its role. Save writes to `gui/player_main.conf` and
auto-reloads.
- **Diagnostics & test commands**:
- `/quests admin debug events` — per-tracker fire counts +
last-fired timestamps + last detail. Triage "my quests aren't
progressing" reports in seconds.
- `/quests admin debug stars ` — print the authoritative
Stars balance + lifetime earnings.
- `/quests admin testkey [amount]` — invoke the
crate-key bridge live to verify your template without waiting
for a quest.
- `/quests admin testcommand ` — dry-run any
command-reward template through the same SafeDispatch pipeline
rewards use.
### Rewards
- **PokéDollars** (Impactor primary currency)
- **Stars** — now dispatched through a configurable economy command
(default: `eco deposit {amount} {currency} {player}`) so a real
Impactor currency account is what updates. The local JSON ledger
is mirrored only as a leaderboard cache.
- **Items** — any Minecraft / Cobblemon item id, with overflow
handling.
- **Crate keys** — global command template plus a per-key override
map (`integrations.crate-key-commands`) so `lunar` can route to
Pebble's Crates and `vote` to ExcellentCrates on the same server
with no branching elsewhere. Default template targets Pebble's
Crates (`padmin givekey {player} {amount} {key}`) out of the box.
- **Custom commands** — console execution with `{player}`
placeholder, run through a unified `SafeDispatch` pipeline that
catches typos, missing nodes, and re-entry instead of silently
swallowing them.
- All grants are atomic, audit-logged with 8-char transaction IDs,
and **resilient to offline players** — community-goal payouts and
star rewards queue into `pendingRewards` and deliver on next
login with a `★ You have rewards waiting! ★` chat banner.
### Integrations
- **Impactor** — PokéDollar + Stars currency, soft dependency.
- **PokeHunts** — auto-hooks if loaded; quest type
`COMPLETE_POKEHUNT`.
- **Raids** — auto-hooks if loaded; quest type `COMPLETE_RAID`.
- **LuckPerms** — optional, used for permission node lookups; falls
back to op-level cleanly with a one-time WARN if the provider
fails.
- **Pebble's Crates / ExcellentCrates / CMI** — any crate plugin
works via the per-key override map.
- **Public API** — any mod can call `ExternalEventApi` to feed
quest progress without a classpath dependency.
### Security & reliability
- **Permission re-checked on every action** — mid-session demotions
work. Every admin GUI has an internal `requiresAdmin()` guard on
every `open()` and click.
- **Bypass permissions are explicit-only AND now config-gated.**
`cobblemonquests.bypass.reroll-cost` and
`cobblemonquests.bypass.rate-limit` only take effect when the
matching `permissions.bypass.*` flag in `config.conf` is set to
`true`. Granting the LP node alone is no longer sufficient — so a
forgotten wildcard inheritance can't silently disable the new
reroll caps.
- **Per-player rate limits** on rerolls and admin commands.
- **Audit log** at `logs/cobblemonquests-audit.log` records every
quest assignment, completion, reward grant, reroll, admin action,
hidden discovery, milestone crossing, **community-goal mutation,
config reload, and admin test command** with an 8-char base36
transaction id.
- **Snapshot at assignment** — quest definitions snapshot at
assignment time so config edits never retroactively change a
payout.
- **Anti-exploit dedup** on "visit N biomes / dimensions" objectives
— only distinct biome / dimension ids count. Ping-pong farming
is dead.
- **`SafeDispatch`** — single canonical path for every console
command the mod runs (rewards, stars, crate keys). Treats result
`< 1` as a hard failure with a WARN carrying the resolved
command string. Re-entry guards prevent infinite loops if a
reward template accidentally calls back into the mod.
## One-line elevator pitch
Turn your Cobblemon server into a place players log in for tomorrow,
not just today.
## Setup
1. Drop `cobblemonquests-1.8.0.jar` into `mods/` next to Cobblemon
and (optionally) Impactor.
2. Start the server. A default config, sample quests (9 dailies,
7 weeklies, 1 elite, 1 hidden, 3 repeatables), a starter chain,
and 2 server-quest templates are written on first boot.
3. OPs can run `/quests` to see the player hub and `/quests admin`
for the admin panel.
4. Use the in-game wizards to create quests, chains, and server
quests — or edit `config/cobblemonquests/` files by hand.
5. Use the in-game Config Editor to tune reroll caps, pool weights,
and toggles — or edit `config.conf` and run
`/quests admin reload`.
## Commands
```
/quests Open the quest hub
/quests stats Open the stats page
/quests leaderboard Open the leaderboard
/quests reroll Reroll a quest (per-rotation cap applies)
/quests admin Open admin panel
/quests admin reload Reload config + quests
/quests admin give Give a quest to a player
/quests admin complete Force-complete a quest
/quests admin reset Reset a player's dailies
/quests admin resetweek Reset a player's weeklies
/quests admin goal set Activate a server quest
/quests admin goal stop Stop the active server quest
/quests admin goal reset Reset server quest progress
/quests admin goal progress Set progress manually
/quests admin debug events Tracker activity dashboard
/quests admin debug stars Print Stars balance + lifetime
/quests admin testkey [n] Test crate-key template live
/quests admin testcommand Test any command template
```
`/cq` is a shorter alias for `/quests`.
## Compatibility
- **Minecraft 1.21.1 / Fabric**
- Hard dependencies: Cobblemon 1.7.3+, Fabric API, Java 21
- Soft dependencies: Impactor (PokéDollar + Stars currency),
LuckPerms (perm nodes + prefix), PokeHunts (auto-hook),
Raids (auto-hook), any crate plugin (Pebble's, ExcellentCrates,
CMI, etc. — configurable per key)
- **Coexists peacefully** with PokeBuilder and StaffChat (both also
from souljagger).
## Roadmap
- **Party / multiplayer quests** — coming with the party-system update
- **NPC interaction** — right-click a Cobblemon NPC to open `/quests`
- **Quest shop** — spend Stars on exclusive items
- **Seasonal / event quests** — time-limited quest pools
- **Player-facing chains UI** — chain backend + admin authoring is
shipped today; player viewer returns alongside the party update
## License
MIT — fork, modify, redistribute.