Quest Format
Quest Format
Quests are defined in plugins/QuestForge/quests/<id>.yml. Each file is one quest. The registry hot-reloads on /quest reload.
Full Quest File Reference
# quests/bounty_hunter.yml
# ─────────────────────────────────────────
# Unique identifier (should match the filename without .yml)
id: bounty_hunter
# Display name shown in the GUI — supports MiniMessage
display-name: "<red>⚔ Bounty Hunter"
# Description shown in /quest info and the GUI lore
description: "Slay 10 zombies and return their remains."
# Prerequisites — IDs of quests that must be completed first
requires: [] # leave empty for no prerequisites
# requires: [intro_quest, another_quest]
# Citizens NPC IDs (optional — requires Citizens plugin)
npc-start-id: 1 # NPC players right-click to accept
npc-turnin-id: 1 # NPC players right-click to turn in
# Whether this quest can be repeated
repeatable: false
repeat-cooldown: 0 # seconds; 0 = one-time only
# 86400 = once per day
# ─── OBJECTIVES ──────────────────────────
objectives:
- type: KILL
target: ZOMBIE
amount: 10
description: "Kill 10 Zombies"
- type: COLLECT
material: ROTTEN_FLESH
amount: 10
description: "Collect 10 Rotten Flesh"
# ─── REWARDS ─────────────────────────────
rewards:
xp-levels: 5 # XP levels given on completion
money: 200.0 # Vault money (requires Vault)
commands: # Run as console
- "say {player} completed Bounty Hunter!"
- "give {player} diamond 1"
items:
- material: DIAMOND
amount: 1
display-name: "<aqua>Quest Diamond" # optional
Field Reference
| Field | Type | Required | Description |
|---|---|---|---|
id |
String | Yes | Unique ID, should match filename |
display-name |
String | Yes | MiniMessage display name |
description |
String | Yes | Quest description |
requires |
List | No | Prerequisite quest IDs |
npc-start-id |
Integer | No | Citizens NPC for accepting |
npc-turnin-id |
Integer | No | Citizens NPC for turn-in |
repeatable |
Boolean | No | Can the quest be done again? |
repeat-cooldown |
Integer | No | Seconds between completions |
objectives |
List | Yes | List of objective objects (see Objective Types) |
rewards |
Map | Yes | Completion rewards (see Rewards) |
MiniMessage Formatting
Quest names and descriptions support MiniMessage:
display-name: "<gradient:gold:yellow>⭐ Epic Quest</gradient>"
display-name: "<rainbow>Colorful Quest</rainbow>"
display-name: "<bold><red>HARD MODE</red></bold>"
The TTS-Studio chat prefix QuestForge: is automatically prepended to all plugin-emitted chat messages — you do not need to include it in quest descriptions or display names.
QuestForge is part of the TTS-Studio Minecraft plugin suite.