Language

QuestCore

QuestCore

ModrinthSpigotMC

A complete quest system for Paper: YAML quests with eight objective types, delivery and storage quest chests, quest-giver NPCs with holograms, a paginated journal, translatable quest content, rotating dailies, and a package audit. EN + NL, no deps.

2 downloads updated 22d ago
latest v1.0.0 Modrinth
Paper Purpur 1.21 – 26.2 AdventureGame-mechanicsUtility

QuestCore

A whole quest experience in one plugin — and not a single dependency.

Write quests in YAML. Hand them out with quest givers you place yourself. Take
deliveries in real chests in the world. Let players browse everything in a
journal with live progress bars. Translate the story separately from the buttons.
And run one command to find every problem before your players do.

No database. No Citizens. No WorldGuard. No economy plugin. No Bedrock form
toolkit. Everything is YAML you can read, and every word a player sees ships in
English and Dutch.


📜 Quests, in YAML you can actually read

  miner_pickaxe:
    name: '&6Lost Family Pickaxe'
    description: 'Bring 10 gold ingots to the Miner Supply Chest.'
    npc-id: 1
    prerequisites: []
    objectives:
      - id: pickaxe_gold
        type: DEPOSIT_TO_CHEST
        target: 1:GOLD_INGOT
        amount: 10
    rewards:
      xp: 120
      commands:
        - 'eco give {player} 2000'

Eight objective types: KILL_MOB, BREAK_BLOCK, PLACE_BLOCK,
COLLECT_ITEM, TALK_TO_NPC, VISIT_ZONE, DEPOSIT_TO_CHEST,
WITHDRAW_FROM_CHEST.

Prerequisite chains, repeatable quests, an optional permission gate, and rewards
made of items, XP, console commands and chat lines. Commands are the escape
hatch that keeps the plugin dependency-free
eco give {player} 2000 works
with whatever economy plugin you already run.

📦 Quest chests that cannot be abused

A real chest in your world that players right-click.

  • Delivery mode takes exactly what the player's quests still need and hands
    the rest straight back. Nothing is stored, so it can never be used as free
    storage and nobody can take another player's delivery.
  • Storage mode keeps its contents — personal per player, or one shared box an
    admin can stock — and turns the before/after difference into progress, so no
    shift-click, drag or hotbar swap can slip past the accounting.
  • A per-chest item whitelist, a configurable size and title, and admin-only
    block breaking.

/questchest create | place | mode | title | filter | shared | link.

🧑‍🌾 Quest-giver NPCs — the plugin's own

No Citizens. Place one where you stand, give it a name, a one-line role and a
greeting in each language, and pick any living entity as its body (or NONE
for an invisible click point over a build you made yourself).

Right-click it: the greeting appears in chat, a line reminds the player which
objective they are on, and the journal opens on that NPC's quests.

Holograms are capped at three lines — name, role, hint — enforced in code,
not just in config.

📖 A journal worth opening

Tabs for in-progress, available and completed quests, plus a page per quest
giver. Quest cards with status colours, live progress bars and percentages,
every objective ticked off individually, and a reward preview — with console
commands shown as "A special reward" rather than leaking your internals.

Built on a self-contained menu framework that cancels every item movement, so a
journal can never be used to duplicate items.

🌍 Translate the story, not the buttons

Quest titles, descriptions and objective text live in their own
quest-content_<code>.yml, separate from the interface strings. A translator can
work on your story without scrolling past error messages, and any player can pick
their own quest language with /questlang — independently of the interface.

Missing a key? It falls back to the default language, then to quests.yml, then
to a generated line from a per-type template. A half-finished translation
degrades to real words, never to a placeholder.

🔁 Rotating dailies and weeklies

Optional per-player daily and weekly objectives with proper reset windows,
reusing the same objective types and reward bundles as everything else.

🔎 The package audit

The feature you will use most.

/questaudit
  [ERROR] chest '1' does not accept ANCIENT_DEBRIS, but 'miner_drill' tells players to deposit it
  [ERROR] quest 'book_medals' needs prerequisite 'book_scroll', which does not exist
  [ERROR] quest 'side_a' can never be started (broken or circular prerequisites)
  [WARN]  quest 'elias_craft' points at quest giver #3, which has no position yet

Dangling prerequisites, circular chains, unreachable quests, missing chests and
NPCs, unknown items and entities, malformed targets, chests that reject the very
item a quest asks for, and per-language translation gaps.

A quest that is broken normally does not throw — it just quietly never completes.
This finds those.


Entity hygiene is the headline

This plugin spawns display entities for the floating text, so it is built to be
tidy:

  • Every entity is configured pre-spawn and marked non-persistent — the
    server never writes a hologram into a region file, so a crash or a hard restart
    leaves nothing behind.
  • Every entity is tagged with its NPC id and role, so an orphan can always be
    identified — even one from an older build.
  • Sweeps run on enable (before anything is spawned), on chunk load, and
    on a timer, plus /questnpc cleanup on demand.
  • No chunk tickets, ever. A quest hub does not cost you a permanently loaded
    chunk.
  • Bodies have AI off and are invulnerable, silent and non-collidable.
  • Bukkit API only — no NMS, no reflection, nothing version-locked.

Modular & standalone

Seven modules you switch on or off: quests, questchests, questnpcs,
journal, questlang, dynamicquests, questaudit. A module whose dependency
is off logs one clear line and stays off rather than half-starting — a chest
that silently swallows items is worse than a chest that does not open.

All data is plain YAML you can open, read and repair by hand.

Built for Paper 26.1

Adventure components everywhere, registry-based type lookups, pre-spawn entity
configuration, TextDisplay holograms. No deprecated-for-removal API anywhere,
and the build finishes with zero compiler warnings.

Ships with 94 JUnit tests covering the parts that matter: objective-type
parsing, the prerequisite/repeatability/permission gate matrix, per-objective
progress bookkeeping, <chestId>:<MATERIAL> parsing and matching, chest
before/after deltas, cuboid-zone containment, daily and weekly reset-window
maths, the three-line hologram cap, progress-bar rendering, and the audit's
graph checks including cycle detection.

Languages

English and Dutch out of the box, for both the interface and the quest content.
Add your own by copying one file.

Versions

Release
1.0.0
paper, purpur · 1.21, 1.21.1, 1.21.2 · 22d ago
2

Comments 0

No comments yet. Be the first to share your thoughts.

FAQ

How do I install QuestCore?

Download the file for your Minecraft version and loader from this page, then drop the .jar into your mods (or plugins) folder and launch the game.

Is QuestCore free?

QuestCore is free to download on Modgrid — we link straight to the official source, no paywall or bundled installer.

Which Minecraft versions does QuestCore support?

Works with Paper, Purpur. Supports versions 1.21–26.2. See the download section on this page for the full list of supported versions and loaders.

Download QuestCore

SpigotMC

Files are served directly from the original source. Modgrid does not host or modify them.