promotional bannermobile promotional banner

InkQuest

A narrative-first quest engine for mapmakers and modpack developers — define branching quests with success and failure outcomes entirely through datapacks and commands.

InkQuest — Narrative Quest Engine

Quest Book & HUD

Build story-driven quests for Minecraft — using tools you already know.

InkQuest is a lightweight quest engine for Minecraft 1.20.1 (Fabric), built for map makers, pack developers, and narrative designers. It works with scoreboards, Minecraft predicates, and datapack functions — systems you already have. No proprietary task types to learn.

Quests have real failure states, stage-by-stage progression, and branching based on outcomes. Choices that mean something. Endings that differ.


What players experience

  • Quest Book — press J or right-click the book to browse all quests: active, completed, and failed. Each shows title, current task, description, and progress.
  • HUD tracker — pin a quest to keep its task and progress bar always on screen, with smooth stage-transition and completion animations.
  • Quest Scrolls — a physical item that starts a quest on right-click. Distribute via loot tables, trades, or /give — the player just right-clicks, no commands on their end.
  • New quest notification — a HUD toast when a quest arrives, with one key to open it immediately.

How InkQuest works

Stages, not checkboxes. A quest advances through stages in sequence. Each stage has one required task and any number of optional ones. Move forward when the required task is done; optional tasks add side content, bonus rewards, or narrative branches.

Real failure. Any task can fail — and failure ends the quest immediately. The world can react differently to each outcome.

Branching and memory. Quests unlock each other through dependencies. Different completions open different chains. Full narrative trees, no code required.

Conditions you already know:

Condition What it checks
score Scoreboard objective threshold — with progress bar
global_score A shared global counter, safe across multiple players
predicate Any Minecraft predicate: location, inventory, NBT, advancement…
all / any / none Boolean composition, nested arbitrarily deep
optionals Enough optional tasks in the current stage are done

Lifecycle hooks. Run mcfunction files and assign scoreboard tags at different points in a task's life: when the stage loads, every tick while active, every tick while active and pinned, when it deactivates, on success, and on failure.

From these primitives — timed challenges, escort missions, server-wide kill goals with shared counters, faction races — all build from systems you already understand.


For map makers and pack developers

Two ways to define quests:

  • Datapack (data/<namespace>/quests/<id>.json) — versioned, portable, source-controlled. Ships with your project.
  • Commands (/quest new) — create quests without leaving the game. Good for rapid iteration: build a quest in-game, wire it to command blocks, test immediately.

Full command API:

  • /quest give, complete, fail, skip, pin, unpin, drop, modify, new
  • /execute if quest — check quest and task status in command blocks and functions
  • /quest query — inspect task progress, quest state, and stage completion — regardless of which condition type the task uses

Manual buttons. Add Success / Failure / Skip buttons to any task for player-driven decisions right from the quest book.

Repeatable quests. One flag to allow replaying a completed quest from scratch — daily tasks, faction missions, anything cyclical.

Gamerules:

  • doQuestBookItemCheck — require holding the book to open it (make players find or craft it)
  • allowManualQuestPin — lock player-side pinning so only commands control the HUD

Localization. Full Minecraft JSON Text in all titles and descriptions — colors, formatting, translate keys. Add a lang file to a resource pack and quest text adapts to each player's language.

Resource pack override. All mod textures replaceable. Craft recipe overridable via a single datapack file.


Getting started

/quest new tutorial:intro "First Quest"
/quest give @s tutorial:intro pin
/quest modify tutorial:intro tasks add required step1 "Find the ruins"

Three commands, one working pinned quest. Add a scoreboard condition, a lifecycle hook, or a chain to the next quest — it scales from there.

[Full documentation] · [GitHub] · [Issue tracker]


Why InkQuest

Most quest systems give you a menu of pre-built task types. InkQuest hands you the tools Minecraft already provides — scoreboards, predicates, functions, tags — and composes them into a quest engine with no hardcoded limits.

Quests live in JSON, version alongside your project, and ship as a standard datapack.

Install the mod, drop in a datapack — and your world has a story.


Requires Fabric 1.20.1. No additional dependencies.

The InkQuest Team

profile avatar
Owner
  • 2
    Projects
  • 251
    Downloads

More from K4K