A visual NPC dialog tree editor for Minecraft — build branching conversations with a flowchart interface and export directly to Bedrock or Java Edition.
- Drag nodes from the sidebar onto the canvas, or click to place them at the center
- Connect nodes by dragging from an output port to an input port
- Pan the canvas by clicking and dragging on empty space
- Zoom with the scroll wheel or the zoom controls
- Snap-to-grid positioning (10px grid)
- Fit all nodes into view with one click
| Node | Description |
|---|---|
| 💬 Dialog | An NPC says something. Assign an NPC and write text per language. |
| 🔀 Choice | The player picks from multiple options. Each option has its own output port. |
| ⚡ Condition | Checks a variable. Green port = true, red port = false. |
| ⚙ Action | Runs something in the background: give/take items (with amount), play sounds, set variables, or run commands. |
| ↗ Jump | Jumps directly to another node — useful for avoiding repetition. |
| ⏹ End | Closes the conversation. |
- Add any number of languages to your project (NL, EN, DE, FR, and 40+ more)
- Language tabs on every node — switch between languages with one click
- Translation status indicator per language (green = filled, red = missing)
- Auto-translate button per node or per language using:
- LibreTranslate (free, default)
- Google Translate API (requires API key)
- Anthropic Claude API (best quality, requires API key)
- Add, rename and delete NPCs with custom colors
- Click an NPC in the sidebar to filter the canvas — nodes from other NPCs are dimmed
- Each dialog and choice node can be assigned to a specific NPC
- Save as
.npcproj(recommended),.json, or.yaml - Load any previously saved file
- Auto-save option (1, 5, or 10 minute intervals)
- Keyboard shortcut:
Ctrl+S
- Generates a
scenes.jsonwith NPC dialogue scenes - Generates
.langfiles for every project language (e.g.nl_NL.lang,en_US.lang) - Generates a
manifest.jsonfor the behavior pack - Minecraft automatically picks the player's language — no extra setup needed
- Double-click the
.mcaddonfile to import into Minecraft
- Generates a
.ymlconversation file compatible with BetonQuest - Multi-language keys (
text_nl,text_en, etc.) — BetonQuest picks the player's language automatically - Copy to
plugins/BetonQuest/conversations/and run/bq reload
- Simulate the conversation as a player
- Click through dialog and choice nodes
- Switch between languages in real time
- Shows which nodes are not yet connected
- Live preview of your project data with node statistics and translation status
- Switch to raw JSON editor — edit and apply changes directly
- Copy the full JSON to clipboard
- Automatically detects when a new connection would create an infinite loop
- Shows a warning toast with the option to connect anyway (useful for "return to menu" patterns)
- Hover over any connection line to reveal a scissors button
- Click to remove the connection
- Undo with
Ctrl+Z
Open with the ⚙ button in the top bar.
| Setting | Options |
|---|---|
| Theme | Dark (default) / Light |
| Canvas background | Dots (default) / Grid / None |
| UI language | NL, EN, DE, FR, SV, NB, DA, FI, IS |
| Translation provider | LibreTranslate (default), Google Translate, Anthropic Claude |
| API key | For Google or Anthropic translation |
| Default export format | Bedrock / Java |
| Auto-save interval | Off / 1 min / 5 min / 10 min |
All settings are saved in your browser's localStorage.
| Shortcut | Action |
|---|---|
Ctrl+Z |
Undo |
Ctrl+Y |
Redo |
Ctrl+S |
Save |
Delete |
Delete selected node |
F1 |
Open help menu |
Scroll |
Zoom in / out |
QuestCraft is a single HTML file — no installation, no dependencies, no server needed.
- Download
questcraft.html - Open it in any modern browser (Chrome, Firefox, Edge)
- Drag elements from the sidebar onto the canvas
- Connect nodes by dragging from output ports to input ports
- Fill in dialog text per language in the right panel
- Click ⬇ Exporteer to export to Minecraft
| Version | Support |
|---|---|
| Bedrock Edition | ✅ Native .mcaddon export |
| Java Edition | ✅ BetonQuest YAML export |
| Both (via Geyser) | ✅ Use Java export with Geyser bridge |
🇳🇱 Nederlands · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇸🇪 Svenska · 🇳🇴 Norsk · 🇩🇰 Dansk · 🇫🇮 Suomi · 🇮🇸 Íslenska
No API key needed. Uses the public LibreTranslate endpoint. You can also self-host it.
Requires a Google Cloud API key. Works directly from the browser (no CORS issues). Pay-per-use pricing.
Requires an Anthropic API key. Best translation quality for natural NPC dialog. Enter your key in ⚙ Settings — it is stored locally in your browser and never shared.
⚠ Note: When using an API key, do not share your
questcraft.htmlfile or the browser's localStorage publicly.
After exporting, put the files into this folder structure and zip it as .mcaddon:
YourProject.mcaddon
└── behavior_pack/
├── manifest.json
├── dialogue/
│ └── yourproject_scenes.json
└── texts/
├── nl_NL.lang
├── en_US.lang
└── ...
- Multiple canvases per project (one per NPC or quest line)
- Real
.mcaddonzip download (JSZip) - More action types (XP, effects, teleport)
- Citizens plugin export (Java)
- Denizen script export (Java)
- Import from existing BetonQuest YAML
GNU General Public License v3.0 — you are free to use, modify and distribute QuestCraft, but any modified versions must also be released under GPL 3.0 and remain open source.
Made with help of Claude.ai