Skip to main content

QuestKeeper Product Page + Documentation — Design

Summary

Add QuestKeeper — a Paper Minecraft plugin (source at C:\Users\Ben\Documents\GitHub\QuestKeeper) that generates a daily quest for a server via a Citizens NPC — as a new product on the site: a registry entry, a public landing page, and a full documentation set, following the existing pattern used by Ascendra and ConsentPVP (the closest analogs: Minecraft plugins with no hosted web app).

Source of truth

All content is derived from the plugin's own README.md and src/main/resources/plugin.yml (version 0.1.0-SNAPSHOT, requires Paper 1.21.4+, Citizens 2.x, Java 21; soft-depends on ConsentPvP). No functionality is invented beyond what those files describe.

1. Product registry entry

File: src/data/products.ts

{
slug: 'questkeeper',
name: 'QuestKeeper',
tagline: 'A new daily quest for your server, every day.',
description:
'A Paper Minecraft plugin that generates a new daily quest for your server every day, delivered through a Citizens NPC. Quests are automatically generated and validated across many types — delivering items, herding mobs, exploring biomes, discovering structures, fighting mobs, crafting, trading with villagers, and biome-specific gathering — with optional timed BossBar challenges. Players earn points and build streaks with no manual quest writing required.',
category: 'Minecraft Plugin',
status: 'in-development',
color: '#d97706',
features: [
'Automatic daily quests across 8 quest types',
'Delivered and turned in through a Citizens NPC',
'Points, streaks, and a spendable Quest Shop',
'Optional timed BossBar challenge quests',
],
docsUrl: '/docs/products/questkeeper',
showInNav: true,
},

No logoSrc (no logo asset yet) and no noindex (fully public per decision).

2. Landing page

Files: src/pages/products/questkeeper.tsx, src/pages/products/questkeeper.module.css

Follows the ConsentPVP/Ascendra landing-page pattern: getProduct('questkeeper') + STATUS_LABEL/STATUS_COLOR_VAR from the registry, shared Layout, Heading, Breadcrumbs, OffsetSplit, StaggeredGrid components from src/components/layout/.

  • Hero: name, tagline, status badge, links to docs and the GitHub repo (ModularSoftAU/QuestKeeper, per the README's clone URL).
  • Highlights grid (4 cards): Daily Quest Lifecycle (NPC-delivered, auto-resets), 8 Quest Types (modular registry, weighted selection), Points & Streaks, Quest Shop (teleport scrolls, streak shields, chat colors, completion effects).
  • How it works steps: install jar → install Citizens → create quest NPC → set quest-npc-id → reload.
  • Closing link to full docs.

3. Documentation

Location: docs/products/questkeeper/ — flat files, Docusaurus autogenerated sidebar (no _category_.json needed, matching ConsentPVP).

Sidebar registration in sidebars.ts:

questkeeper: [
{type: 'autogenerated', dirName: 'products/questkeeper'},
],

Pages (9, sidebar_position in this order):

  1. index.md — Overview: what QuestKeeper is, why it exists, feature summary table (mirrors README's quest-type table), requirements table (Paper 1.21.4+, Citizens 2.x, Java 21, optional ConsentPVP soft-dep), "Where to Next" links to the other 8 pages.
  2. installation.md — Drop-in jar install steps, Citizens dependency, NPC creation (/npc create QuestKeeper), quest-npc-id config step, /qk forcerefresh, building from source (mvn package).
  3. commands.md — Full /questkeeper (/qk) command table: player commands (show, points, points <player>) and admin commands (reroll, resetplayer, forcerefresh, stats, debug), plus /qshop and /tscroll and /dailytask top [page] from plugin.yml.
  4. permissions.mdquestkeeper.use, questkeeper.admin, questkeeper.scroll.use — node, default, description.
  5. configuration.md — Annotated config.yml reference (timezone, streak bonus settings — noted as currently inert per README, mob-search radius, broadcast toggle, quest-generator weights, timed-quest settings, exploration radii, escort flag).
  6. quest-types.md — All 8 active types + roadmap ESCORT type, with completion method (NPC turn-in vs. automatic), the item/mob/event pools, tier-based amount scaling table, repeat-prevention rule, and the roadmap frameworks (dynamic difficulty, escort) noted as architecture-only/not yet active.
  7. shop.md — Quest Shop (/qshop) and its items: Teleport Scrolls (/tscroll, ConsentPVP integration for consent-gated player teleports), Streak Shields, Timed Quest Extensions, Chat Color passes, Completion Effects.
  8. data-files.mdquest.yml, players.yml, stats.yml — what's stored in each, with the annotated YAML examples from the README.
  9. troubleshooting.md — Common issues: NPC not responding (check quest-npc-id / Citizens installed), quest not resetting (5-minute poll, /qk forcerefresh), points not changing (flat 1-point reward is current behavior, not a bug), ConsentPVP teleport blocks.

Each page uses the same frontmatter shape as ConsentPVP's (title, sidebar_label, sidebar_position, description) and an in-development admonition noting the plugin targets version 0.1.0-SNAPSHOT and behavior may change.

File: docusaurus.config.ts — add {label: 'QuestKeeper', to: '/products/questkeeper'} to the 'Products' footer column.

Out of scope

  • No logo/icon asset (none provided).
  • No sitemap noindex handling needed (fully public).
  • No changes to docusaurus.config.ts plugin instances — QuestKeeper uses the single unified docs preset, no OpenAPI or per-product plugin needed (it has no REST API).
  • Not modifying the QuestKeeper Java project itself — this is website-only work.