Skip to content
TTS-STUDIO docs Discord

Plugins / QuestForge

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.

Home | Objective Types | Rewards