Default Config Files

Last updated Sep 21, 2026

Default Config Files

Shipped defaults from SoapsQuest 1.0.5.
On first run, missing files are copied to plugins/SoapsQuest/.
Edit the server copies. Reload does not reset existing files to these defaults.

Reload: /sq reload. File roles and reload order: Configuration.

Premium-only files (daily.yml, random-generator.yml, contract-request.yml, quest-loot.yml) are created when the Premium JAR is used. Free installs ignore them until you upgrade.

File index

File Purpose
config.yml Core settings, progress display, sounds, anti-cheat, performance
quests.yml Quest definitions and showcase quests
messages.yml Player-facing MiniMessage text
gui.yml Browser, editor, and active quest menu layouts
tiers.yml Rarity tiers (common through mythic)
difficulties.yml Difficulty scaling multipliers
daily.yml Daily and weekly recurring quest schedules (Premium)
random-generator.yml Random quest generator templates and reward pools (Premium)
contract-request.yml Random contracts from NPCs, commands, or the browser (Premium)
quest-loot.yml Chest and mob quest paper drops (Premium)

Data (runtime)

Created at runtime — not shipped as editable defaults:

Path Contents
playerdata.yml Progress index when sharded; legacy single-file mode
data/players/*.yml Per-player progress shards when data.per-player-files: true
statistics.yml Historical completion stats
sigils.yml Sigil balances
generated.yml Generated quest IDs (Premium; created on first generate)

config.yml

# ##############################################################
# #                                                            #
# #                      SoapsQuest                            #
# #                                                            #
# #           Created by: AlternativeSoap                      #
# #           Website:    www.SoapsUniverse.com                #
# #           Support:    https://discord.gg/mawAzwFq          #
# #                                                            #
# ##############################################################

# ════════════════════════════════════════════════════════════════════════════
# SoapsQuest - Configuration
# Free & Premium share this file. Premium-only configs: random-generator.yml, daily.yml, quest-loot.yml, contract-request.yml
# Advanced quest system with 43+ vanilla objective types (61 with integrations)
#
# Related config files:
#   difficulties.yml  — Difficulty levels & multipliers
#   tiers.yml         — Rarity tiers & display
#   daily.yml         — Recurring quest schedules
#   quests.yml        — Quest definitions
#   messages.yml      — All plugin messages
#   gui.yml           — GUI layout & items
#   random-generator.yml — Random quest generation settings
#   contract-request.yml — Random contracts for players (NPC / command / browser)
#   quest-loot.yml    — Loot table configuration
# ════════════════════════════════════════════════════════════════════════════

# ════════════════════════════════════════════════════════════════════════════
# CORE SETTINGS
# ════════════════════════════════════════════════════════════════════════════

gui:
  enabled: true             # Master switch for all SoapsQuest inventory GUIs

debug: false                            # Enable verbose debug logging (/sq debug toggle or restart)
log-quest-completions: false            # Log when players claim quest rewards to console
log-admin-actions: false                # Log quest generation and editor saves to console
autosave-interval: 5                    # Player progress save interval (minutes)

# Player progress storage: when true, each player is written to data/players/<uuid>.yml
data:
  per-player-files: true
max-generation-retries: 5               # Max random quest generation attempts
generate-cooldown: 0                    # Cooldown in seconds between /sq generate (0 = disabled)
max-batch-generate: 25                  # Max quests per /sq generate [type] [count]

# Default values for new quests created via /sq editor
default-tier: common
default-difficulty: normal

# ════════════════════════════════════════════════════════════════════════════
# DATA CLEANUP
# Automatically removes stale playerdata.yml entries
# ════════════════════════════════════════════════════════════════════════════

data-cleanup:
  enabled: true                         # Enable automatic data cleanup
  remove-inactive-after-days: 90        # Remove data for players offline this long
  cleanup-on-startup: true              # Run cleanup when plugin loads
  cleanup-on-save: true                 # Run cleanup on each autosave

# ════════════════════════════════════════════════════════════════════════════
# PERFORMANCE
# ════════════════════════════════════════════════════════════════════════════

performance:
  async-processing-enabled: true        # Enable async quest processing
  batch-size: 50                        # Operations per batch
  processing-interval-ticks: 20         # Batch processing interval (ticks)
  batch-save-enabled: true              # Enable batch save optimization
  batch-save-interval-ticks: 100        # Batch save interval (ticks)

# ════════════════════════════════════════════════════════════════════════════
# PROGRESS DISPLAY
# Modes: actionbar | chat | bossbar | none
# ════════════════════════════════════════════════════════════════════════════

progress-display:
  mode: "actionbar"                     # actionbar = above hotbar, bossbar = top bar
  interval: 5                           # Chat mode: show every X updates
  bossbar:
    color: "GREEN"
    style: "SEGMENTED_10"
    duration: 5                         # Seconds to display bossbar

# ════════════════════════════════════════════════════════════════════════════
# SOUNDS
# ════════════════════════════════════════════════════════════════════════════

# Milestone reached (e.g. 50%, 75%)
milestone-sound: "ENTITY_PLAYER_LEVELUP"
milestone-sound-volume: 1.0
milestone-sound-pitch: 1.0

# Quest completion (all objectives done)
completion-sound: "UI_TOAST_CHALLENGE_COMPLETE"
completion-sound-volume: 1.0
completion-sound-pitch: 1.0

# ════════════════════════════════════════════════════════════════════════════
# QUEST PAPER BEHAVIOR
# ════════════════════════════════════════════════════════════════════════════

# Q-drop releases the paper to the world (progress kept). Another player can pick it up and continue.
# Storing in a chest/ender chest/shulker only pauses it until picked up again.
# lock-to-player still blocks others from taking parked papers.
# Hoppers, dispensers, droppers, and similar cannot move quest papers.

# Prevent quest papers from being placed into crafting grids, anvils,
# grindstones, smithing tables, and other workstation slots.
prevent-workstation-placement: true

# Block objective anti-cheat (all on by default; set enabled: false to disable all).
anti-cheat:
  enabled: true
  break: true      # break/harvest ignore player-placed blocks
  place: true      # place ignores re-placing after breaking your own block
  collect: true    # collect ignores drops from those breaks and items you dropped
  creative: true   # no break/place/harvest/collect progress in creative mode

# ════════════════════════════════════════════════════════════════════════════
# TIMED QUEST DISPLAY (global defaults for quests with timer: in quests.yml)
# ════════════════════════════════════════════════════════════════════════════
# paper-name: append countdown to the quest paper item name (in addition to lore).
# action-bar: live countdown while a timed quest is active in your queue.
# boss-bar: progress-style boss bar for the most urgent active timed quest.
# chat-reminder-seconds: 0 = off; otherwise sends chat reminders on that interval.

quest-timer-display:
  paper-name: false
  action-bar: true
  boss-bar: false
  chat-reminder-seconds: 0

# ════════════════════════════════════════════════════════════════════════════
# OPTIONAL PLUGIN INTEGRATIONS
# Soft-dependencies: Lands, Citizens, mcMMO, WorldGuard, Denizen (see plugin.yml).
# MythicMobs and PlaceholderAPI are detected automatically — no config entry needed.
#
# With auto-detect enabled (default), each integration turns on when its plugin is installed.
# Set an integration to false to force-disable it, or set auto-detect: false to opt in manually.
# ════════════════════════════════════════════════════════════════════════════

integrations:
  auto-detect: true
  # Optional per-plugin overrides (omit or set true to allow auto-detect):
  # lands: false
  # citizens: false
  # mcmmo: false
  # worldguard: false
  # denizen: false

quests.yml

# ##############################################################
# #                                                            #
# #                      SoapsQuest                            #
# #                                                            #
# #           Created by: AlternativeSoap                      #
# #           Website:    www.SoapsUniverse.com                #
# #           Support:    https://discord.gg/mawAzwFq          #
# #                                                            #
# ##############################################################

# ╔════════════════════════════════════════════════════════════════════════════╗
# ║                        SoapsQuest - Quests                                ║
# ║  Define your server's quests here. Each quest needs a unique ID,          ║
# ║  at least one objective, and at least one reward.                         ║
# ║  Commands: /sq give <player> <quest> | /sq list | /sq browse              ║
# ╚════════════════════════════════════════════════════════════════════════════╝
#
# ════════════════════════════════════════════════════════════════════════════
# QUEST STRUCTURE
# ════════════════════════════════════════════════════════════════════════════
#
#   quest_id:                              # Unique internal ID (lowercase, underscores)
#     display: "<#55FF55>Quest Name"       # Display name (MiniMessage or legacy colors)
#     material: PAPER                      # Optional: Item material for the quest paper
#     tier: common                         # Optional: Tier from config.yml (common/uncommon/rare/epic/legendary)
#     difficulty: easy                     # Optional: Difficulty from config.yml (easy/normal/hard/expert/nightmare)
#     sequential: false                    # Optional: true = objectives must be done in order
#     milestones: [25, 50, 75]             # Optional: Progress % notifications
#     lock-to-player: false                # Optional: true = quest binds to first player
#     lore:                                # Optional: Custom item lore (list of strings)
#       - "<#AAAAAA>Description line 1"
#       - "<#AAAAAA>Description line 2"
#     quest_paper:                         # Optional: Custom quest paper appearance
#       material: BOOK
#       name: "<#FFD700>Custom Name"
#       glowing: false
#
#     objectives:                          # Required: At least 1 objective
#       - type: kill                       # Objective type (see list below)
#         target: ZOMBIE                   # Target entity/block/item
#         amount: 10                       # Amount required
#
#     reward:                              # Required: At least one reward type
#       xp: 100                            # Experience points
#       money: 50                          # Vault economy (requires Vault)
#       sigils: 25                         # SoapsQuest custom Sigils
#       items:                             # Item rewards
#         - material: DIAMOND
#           amount: 5
#           name: "<#55FFFF>Reward Diamond"
#           enchantments: ["SHARPNESS:1"]
#           chance: 100                    # Drop chance percentage
#       commands:                          # Command rewards (use {player} placeholder)
#         - "broadcast {player} completed a quest!"
#
#     conditions:                          # Optional: Requirements to start/unlock (flat keys)
#       min-level: 10                      # Minimum player level
#       min-sigils: 50                     # Minimum SoapsQuest Sigils
#       world: ["world"]                   # Allowed worlds
#       permission: "custom.perm"          # Required permission to pick up in browser
#       require-quest-completed:             # Requires prior quest completions (typed)
#         type: require-quest-completed
#         quests: ["starter_quest"]
#       cost: 500                          # Money cost to unlock (requires Vault)
#       sigil-cost: 100                    # Sigil cost to unlock
#       item: "DIAMOND:5"                  # Item cost to unlock
#       consume-item: true                 # Whether to consume the item cost
#       gamemode: ["SURVIVAL"]             # Required gamemode
#       active-limit: 1                    # Max active quests of this type
#
#     permission: "soapsquest.vip"         # Optional ROOT field: gates progress (not browser lock)
#
#     timer:                               # Optional. Omit for untimed quests.
#       minutes: 15                        # Required if timer: is present. Integer 1-10080.
#       start-on: activate                 # receive = from the moment the paper exists
#                                          # activate = right-click the active paper in hand to start
#       on-expire: fail                    # fail = void, no rewards
#                                          # consolation = fail-reward now, then void
#                                          # overtime = can still finish, claim uses fail-reward
#     fail-reward:                         # Optional. Same keys as reward: (full system).
#       xp: 10
#
# ════════════════════════════════════════════════════════════════════════════
# AVAILABLE OBJECTIVE TYPES (61+) — see showcase_* quests for working examples
# ════════════════════════════════════════════════════════════════════════════
#
#   kill, kill_mythicmob, damage, bowshoot, projectile
#   break, place, smelt, craft, enchant, anvil_repair
#   collect, consume, drop
#   fish, harvest, breed, tame, shear
#   death, sleep, heal, brew
#   move, vehicle, elytra_fly, jump
#   explore_biome
#   reachlevel (uses level:), gainlevel, xp_pickup
#   interact, trade, chat, command, placeholder, firework
#
# Special YAML fields (not target):
#   command     → command: "help"     (+ amount)
#   placeholder → placeholder: player_level  (+ amount; requires PlaceholderAPI)
#   reachlevel  → level: 30
#   vehicle     → vehicle: ANY       (+ amount = blocks; target also accepted)
#   chat        → text: "hello"       (+ amount; optional filter)
#
# Aliases resolved at load: shoot_bow→bowshoot, launch_firework→firework, ride_vehicle→vehicle, level→gainlevel
#
# ════════════════════════════════════════════════════════════════════════════
# EXAMPLE QUEST (uncomment to use)
# ════════════════════════════════════════════════════════════════════════════
#
#   starter_quest:
#     material: BOOK
#     display: "<gradient:#55FF55:#55FFFF>Starter Quest</gradient>"
#     tier: common
#     difficulty: easy
#     lore:
#       - "<#AAAAAA>A simple quest to get started"
#       - "<#AAAAAA>Break logs and kill zombies!"
#     objectives:
#       - type: break
#         target: OAK_LOG
#         amount: 10
#       - type: kill
#         target: ZOMBIE
#         amount: 5
#     reward:
#       xp: 100
#       money: 50
#       items:
#         - material: STONE_SWORD
#           name: "<#55FF55>Starter Sword"
#           enchantments:
#             - "SHARPNESS:1"
#           chance: 100
#

quests:

  # ══════════════════════════════════════════════════════════════════════════
  # STARTER QUESTS - Easy introductory quests
  # ══════════════════════════════════════════════════════════════════════════

  lumberjack:
    material: OAK_LOG
    display: "<gradient:#55FF55:#00CC44>Lumberjack</gradient>"
    tier: common
    difficulty: easy
    lore:
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
      - "<#FFFFFF>Chop down some trees!"
      - "<#888888>A simple task for any adventurer."
      - "<#666666><tier>  <#555555>·  <#666666><difficulty>"
      - ""
      - "<gradient:#FFD700:#FFAA00>➤</gradient> <#FFFFFF><objective> <#55FF55>(<progress>/<amount>)"
      - ""
      - "<#55FF55>Rewards <#AAAAAA>· <#FFFFFF>Wooden tools & bread"
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
    objectives:
      - type: break
        target: OAK_LOG
        amount: 20
    reward:
      xp: 50
      money: 25
      items:
        - material: STONE_AXE
          name: "<#55FF55>Lumberjack's Axe"
          enchantments:
            - "EFFICIENCY:1"
          chance: 100
        - material: BREAD
          amount: 8
          chance: 100

  zombie_slayer:
    material: ROTTEN_FLESH
    display: "<gradient:#FF5555:#CC0000>Zombie Slayer</gradient>"
    tier: common
    difficulty: easy
    lore:
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
      - "<#FFFFFF>The undead are rising!"
      - "<#888888>Slay zombies to protect the village."
      - "<#666666><tier>  <#555555>·  <#666666><difficulty>"
      - ""
      - "<gradient:#FFD700:#FFAA00>➤</gradient> <#FFFFFF><objective> <#55FF55>(<progress>/<amount>)"
      - ""
      - "<#55FF55>Rewards <#AAAAAA>· <#FFFFFF>Iron sword & XP"
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
    objectives:
      - type: kill
        target: ZOMBIE
        amount: 15
    reward:
      xp: 100
      money: 50
      items:
        - material: IRON_SWORD
          name: "<#FF5555>Zombie Slayer"
          enchantments:
            - "SHARPNESS:1"
            - "UNBREAKING:1"
          chance: 100

  gone_fishing:
    material: FISHING_ROD
    display: "<gradient:#5555FF:#55FFFF>Gone Fishing</gradient>"
    tier: common
    difficulty: easy
    lore:
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
      - "<#FFFFFF>Relax by the water."
      - "<#888888>Catch some fish for dinner."
      - "<#666666><tier>  <#555555>·  <#666666><difficulty>"
      - ""
      - "<gradient:#FFD700:#FFAA00>➤</gradient> <#FFFFFF><objective> <#55FF55>(<progress>/<amount>)"
      - ""
      - "<#55FF55>Rewards <#AAAAAA>· <#FFFFFF>Enchanted fishing rod"
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
    objectives:
      - type: fish
        target: ANY
        amount: 10
    reward:
      xp: 75
      money: 40
      items:
        - material: FISHING_ROD
          name: "<#55FFFF>Lucky Rod"
          enchantments:
            - "LUCK_OF_THE_SEA:1"
            - "LURE:1"
          chance: 100
        - material: COOKED_COD
          amount: 8
          chance: 100

  sigil_training:
    material: GOLD_NUGGET
    display: "<gradient:#FFD700:#FFAA00>Currency Training</gradient>"
    tier: common
    difficulty: easy
    lore:
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
      - "<#FFFFFF>Earn your first Sigils."
      - "<#666666><tier>  <#555555>·  <#666666><difficulty>"
      - ""
      - "<gradient:#FFD700:#FFAA00>➤</gradient> <#FFFFFF><objective> <#55FF55>(<progress>/<amount>)"
      - ""
      - "<#55FF55>Rewards <#AAAAAA>· <#FFFFFF>Currency + XP"
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
    objectives:
      - type: break
        target: OAK_LOG
        amount: 16
    reward:
      xp: 45
      sigils: 20

  sigil_master_contract:
    material: EMERALD
    display: "<gradient:#55FFFF:#55FF55>Currency Master Contract</gradient>"
    tier: uncommon
    difficulty: normal
    lore:
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
      - "<#FFFFFF>Spend Sigils to start this contract."
      - "<#666666><tier>  <#555555>·  <#666666><difficulty>"
      - ""
      - "<gradient:#FFD700:#FFAA00>➤</gradient> <#FFFFFF><objective> <#55FF55>(<progress>/<amount>)"
      - ""
      - "<#55FF55>Rewards <#AAAAAA>· <#FFFFFF>Currency + money"
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
    objectives:
      - type: kill
        target: ZOMBIE
        amount: 20
      - type: collect
        target: ROTTEN_FLESH
        amount: 16
    conditions:
      min-sigils: 15
      sigil-cost: 10
    reward:
      money: 120
      sigils: 50

  # ══════════════════════════════════════════════════════════════════════════
  # INTERMEDIATE QUESTS - Multi-objective challenges
  # ══════════════════════════════════════════════════════════════════════════

  iron_miner:
    material: IRON_PICKAXE
    display: "<gradient:#AAAAAA:#FFFFFF>Iron Miner</gradient>"
    tier: uncommon
    difficulty: normal
    lore:
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
      - "<#FFFFFF>Dig deep for iron!"
      - "<#888888>Mine and smelt iron ore."
      - "<#666666><tier>  <#555555>·  <#666666><difficulty>"
      - ""
      - "<gradient:#FFD700:#FFAA00>➤</gradient> <#FFFFFF><objective> <#55FF55>(<progress>/<amount>)"
      - ""
      - "<#55FF55>Rewards <#AAAAAA>· <#FFFFFF>Iron gear"
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
    objectives:
      - type: break
        target:
          - IRON_ORE
          - DEEPSLATE_IRON_ORE
        amount: 30
      - type: smelt
        target: IRON_INGOT
        amount: 20
    reward:
      xp: 200
      money: 100
      items:
        - material: IRON_PICKAXE
          name: "<#FFFFFF>Miner's Pickaxe"
          enchantments:
            - "EFFICIENCY:2"
            - "UNBREAKING:2"
          chance: 100
        - material: IRON_INGOT
          amount: 16
          chance: 100

  mob_hunter:
    material: BOW
    display: "<gradient:#FFAA00:#FF5555>Mob Hunter</gradient>"
    tier: uncommon
    difficulty: normal
    lore:
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
      - "<#FFFFFF>Hunt the night creatures."
      - "<#888888>Clear out hostile mobs!"
      - "<#666666><tier>  <#555555>·  <#666666><difficulty>"
      - ""
      - "<gradient:#FFD700:#FFAA00>➤</gradient> <#FFFFFF><objective> <#55FF55>(<progress>/<amount>)"
      - ""
      - "<#55FF55>Rewards <#AAAAAA>· <#FFFFFF>Enchanted bow & arrows"
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
    objectives:
      - type: kill
        target: ZOMBIE
        amount: 20
      - type: kill
        target: SKELETON
        amount: 15
      - type: kill
        target: SPIDER
        amount: 10
    reward:
      xp: 250
      money: 150
      items:
        - material: BOW
          name: "<#FFAA00>Hunter's Bow"
          enchantments:
            - "POWER:2"
            - "INFINITY:1"
          chance: 100
        - material: ARROW
          amount: 64
          chance: 100

  baker:
    material: BREAD
    display: "<gradient:#FFD700:#FF8C00>Baker</gradient>"
    tier: common
    difficulty: easy
    lore:
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
      - "<#FFFFFF>Bake some fresh bread!"
      - "<#888888>Harvest wheat and craft bread."
      - "<#666666><tier>  <#555555>·  <#666666><difficulty>"
      - ""
      - "<gradient:#FFD700:#FFAA00>➤</gradient> <#FFFFFF><objective> <#55FF55>(<progress>/<amount>)"
      - ""
      - "<#55FF55>Rewards <#AAAAAA>· <#FFFFFF>Golden apples & XP"
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
    objectives:
      - type: harvest
        target: WHEAT
        amount: 30
      - type: craft
        target: BREAD
        amount: 10
    reward:
      xp: 100
      money: 60
      items:
        - material: GOLDEN_APPLE
          amount: 2
          chance: 100

  shepherd:
    material: WHITE_WOOL
    display: "<gradient:#FF55FF:#FFAAFF>Shepherd</gradient>"
    tier: common
    difficulty: easy
    lore:
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
      - "<#FFFFFF>Tend to the flock!"
      - "<#888888>Shear sheep and collect wool."
      - "<#666666><tier>  <#555555>·  <#666666><difficulty>"
      - ""
      - "<gradient:#FFD700:#FFAA00>➤</gradient> <#FFFFFF><objective> <#55FF55>(<progress>/<amount>)"
      - ""
      - "<#55FF55>Rewards <#AAAAAA>· <#FFFFFF>Colorful wool & shears"
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
    objectives:
      - type: shear
        target: SHEEP
        amount: 15
    reward:
      xp: 75
      money: 35
      items:
        - material: SHEARS
          name: "<#FF55FF>Shepherd's Shears"
          enchantments:
            - "EFFICIENCY:2"
            - "UNBREAKING:2"
          chance: 100
        - material: WHITE_WOOL
          amount: 16
          chance: 100
        - material: ORANGE_WOOL
          amount: 8
          chance: 100
        - material: LIGHT_BLUE_WOOL
          amount: 8
          chance: 100

  # ══════════════════════════════════════════════════════════════════════════
  # ADVANCED QUESTS - Harder challenges with better rewards
  # ══════════════════════════════════════════════════════════════════════════

  diamond_rush:
    material: DIAMOND
    display: "<gradient:#55FFFF:#5555FF>Diamond Rush</gradient>"
    tier: rare
    difficulty: hard
    lore:
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
      - "<#FFFFFF>Strike it rich!"
      - "<#888888>Mine deep and find diamonds."
      - "<#666666><tier>  <#555555>·  <#666666><difficulty>"
      - ""
      - "<gradient:#FFD700:#FFAA00>➤</gradient> <#FFFFFF><objective> <#55FF55>(<progress>/<amount>)"
      - ""
      - "<#55FF55>Rewards <#AAAAAA>· <#FFFFFF>Enchanted diamond pickaxe"
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
    objectives:
      - type: break
        target:
          - DIAMOND_ORE
          - DEEPSLATE_DIAMOND_ORE
        amount: 10
      - type: craft
        target: DIAMOND_PICKAXE
        amount: 1
    reward:
      xp: 500
      money: 300
      items:
        - material: DIAMOND_PICKAXE
          name: "<gradient:#55FFFF:#5555FF>Fortune Seeker</gradient>"
          enchantments:
            - "FORTUNE:3"
            - "EFFICIENCY:3"
            - "UNBREAKING:3"
          chance: 100
        - material: DIAMOND
          amount: 5
          chance: 100

  nether_explorer:
    material: NETHERRACK
    display: "<gradient:#FF5555:#FFAA00>Nether Explorer</gradient>"
    tier: rare
    difficulty: hard
    lock-to-player: true
    milestones: [50]
    lore:
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
      - "<#FFFFFF>Venture into the Nether!"
      - "<#888888>Brave the dangers below."
      - "<#666666><tier>  <#555555>·  <#666666><difficulty>"
      - ""
      - "<gradient:#FFD700:#FFAA00>➤</gradient> <#FFFFFF><objective> <#55FF55>(<progress>/<amount>)"
      - ""
      - "<#55FF55>Rewards <#AAAAAA>· <#FFFFFF>Blaze gear & potions"
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
    objectives:
      - type: kill
        target: BLAZE
        amount: 25
      - type: collect
        target: NETHER_WART
        amount: 16
      - type: brew
        target: ANY
        amount: 5
    reward:
      xp: 750
      money: 400
      items:
        - material: BLAZE_ROD
          amount: 8
          chance: 100
        - material: EXPERIENCE_BOTTLE
          amount: 16
          chance: 100
    conditions:
      min-level: 15

  master_builder:
    material: BRICKS
    display: "<gradient:#FFD700:#FF8C00>Master Builder</gradient>"
    tier: epic
    difficulty: hard
    sequential: true
    milestones: [25, 50, 75]
    lore:
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
      - "<#FFFFFF>Build your way to glory!"
      - "<#888888>Sequential. Complete each step in order."
      - "<#666666><tier>  <#555555>·  <#666666><difficulty>"
      - ""
      - "<gradient:#FFD700:#FFAA00>➤</gradient> <#FFFFFF><objective> <#55FF55>(<progress>/<amount>)"
      - ""
      - "<#55FF55>Rewards <#AAAAAA>· <#FFFFFF>Builder's toolkit"
      - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
    objectives:
      - type: place
        target: COBBLESTONE
        amount: 50
      - type: craft
        target: STONE_BRICKS
        amount: 20
      - type: place
        target: STONE_BRICKS
        amount: 30
      - type: craft
        target: GLASS_PANE
        amount: 10
    reward:
      xp: 400
      money: 250
      items:
        - material: DIAMOND_AXE
          name: "<gradient:#FFD700:#FF8C00>Builder's Axe</gradient>"
          enchantments:
            - "EFFICIENCY:4"
            - "UNBREAKING:3"
          chance: 100
        - material: GOLDEN_APPLE
          amount: 3
          chance: 100

  # ══════════════════════════════════════════════════════════════════════════
  # SHOWCASE - one test quest per objective type (admin use)
  # Give with: /sq give <player> showcase_<type>
  # Omit custom lore — papers use messages.yml quest-default-lore (live progress)
  # ══════════════════════════════════════════════════════════════════════════

  showcase_kill:
    permission: soapsquest.admin
    material: IRON_SWORD
    display: "<#AAAAAA>Showcase: <#55FF55>Kill"
    tier: common
    difficulty: easy
    objectives:
      - type: kill
        target: ZOMBIE
        amount: 1
    reward:
      xp: 10

  showcase_break:
    permission: soapsquest.admin
    material: DIAMOND_PICKAXE
    display: "<#AAAAAA>Showcase: <#55FF55>Break"
    tier: common
    difficulty: easy
    objectives:
      - type: break
        target: OAK_LOG
        amount: 1
    reward:
      xp: 10

  showcase_place:
    permission: soapsquest.admin
    material: COBBLESTONE
    display: "<#AAAAAA>Showcase: <#55FF55>Place"
    tier: common
    difficulty: easy
    objectives:
      - type: place
        target: COBBLESTONE
        amount: 1
    reward:
      xp: 10

  showcase_collect:
    permission: soapsquest.admin
    material: DIRT
    display: "<#AAAAAA>Showcase: <#55FF55>Collect"
    tier: common
    difficulty: easy
    objectives:
      - type: collect
        target: DIRT
        amount: 1
    reward:
      xp: 10

  showcase_craft:
    permission: soapsquest.admin
    material: CRAFTING_TABLE
    display: "<#AAAAAA>Showcase: <#55FF55>Craft"
    tier: common
    difficulty: easy
    objectives:
      - type: craft
        target: STICK
        amount: 1
    reward:
      xp: 10

  showcase_smelt:
    permission: soapsquest.admin
    material: FURNACE
    display: "<#AAAAAA>Showcase: <#55FF55>Smelt"
    tier: common
    difficulty: easy
    objectives:
      - type: smelt
        target: IRON_INGOT
        amount: 1
    reward:
      xp: 10

  showcase_fish:
    permission: soapsquest.admin
    material: FISHING_ROD
    display: "<#AAAAAA>Showcase: <#55FF55>Fish"
    tier: common
    difficulty: easy
    objectives:
      - type: fish
        target: ANY
        amount: 1
    reward:
      xp: 10

  showcase_enchant:
    permission: soapsquest.admin
    material: ENCHANTING_TABLE
    display: "<#AAAAAA>Showcase: <#55FF55>Enchant"
    tier: common
    difficulty: easy
    objectives:
      - type: enchant
        target: ANY
        amount: 1
    reward:
      xp: 10

  showcase_consume:
    permission: soapsquest.admin
    material: BREAD
    display: "<#AAAAAA>Showcase: <#55FF55>Consume"
    tier: common
    difficulty: easy
    objectives:
      - type: consume
        target: BREAD
        amount: 1
    reward:
      xp: 10

  showcase_tame:
    permission: soapsquest.admin
    material: BONE
    display: "<#AAAAAA>Showcase: <#55FF55>Tame"
    tier: common
    difficulty: easy
    objectives:
      - type: tame
        target: WOLF
        amount: 1
    reward:
      xp: 10

  showcase_trade:
    permission: soapsquest.admin
    material: EMERALD
    display: "<#AAAAAA>Showcase: <#55FF55>Trade"
    tier: common
    difficulty: easy
    objectives:
      - type: trade
        target: ANY
        amount: 1
    reward:
      xp: 10

  showcase_brew:
    permission: soapsquest.admin
    material: BREWING_STAND
    display: "<#AAAAAA>Showcase: <#55FF55>Brew"
    tier: common
    difficulty: easy
    objectives:
      - type: brew
        target: ANY
        amount: 1
    reward:
      xp: 10

  showcase_breed:
    permission: soapsquest.admin
    material: WHEAT
    display: "<#AAAAAA>Showcase: <#55FF55>Breed"
    tier: common
    difficulty: easy
    objectives:
      - type: breed
        target: COW
        amount: 1
    reward:
      xp: 10

  showcase_shear:
    permission: soapsquest.admin
    material: SHEARS
    display: "<#AAAAAA>Showcase: <#55FF55>Shear"
    tier: common
    difficulty: easy
    objectives:
      - type: shear
        target: SHEEP
        amount: 1
    reward:
      xp: 10

  showcase_sleep:
    permission: soapsquest.admin
    material: RED_BED
    display: "<#AAAAAA>Showcase: <#55FF55>Sleep"
    tier: common
    difficulty: easy
    objectives:
      - type: sleep
        amount: 1
    reward:
      xp: 10

  showcase_heal:
    permission: soapsquest.admin
    material: GOLDEN_APPLE
    display: "<#AAAAAA>Showcase: <#55FF55>Heal"
    tier: common
    difficulty: easy
    objectives:
      - type: heal
        amount: 5
    reward:
      xp: 10

  showcase_drop:
    permission: soapsquest.admin
    material: DIRT
    display: "<#AAAAAA>Showcase: <#55FF55>Drop"
    tier: common
    difficulty: easy
    objectives:
      - type: drop
        target: DIRT
        amount: 1
    reward:
      xp: 10

  showcase_damage:
    permission: soapsquest.admin
    material: DIAMOND_SWORD
    display: "<#AAAAAA>Showcase: <#55FF55>Damage"
    tier: common
    difficulty: easy
    objectives:
      - type: damage
        amount: 10
    reward:
      xp: 10

  showcase_death:
    permission: soapsquest.admin
    material: SKELETON_SKULL
    display: "<#AAAAAA>Showcase: <#55FF55>Death"
    tier: common
    difficulty: easy
    objectives:
      - type: death
        amount: 1
    reward:
      xp: 10

  showcase_reachlevel:
    permission: soapsquest.admin
    material: EXPERIENCE_BOTTLE
    display: "<#AAAAAA>Showcase: <#55FF55>Reach Level"
    tier: common
    difficulty: easy
    objectives:
      - type: reachlevel
        level: 5
    reward:
      xp: 10

  showcase_gainlevel:
    permission: soapsquest.admin
    material: EXPERIENCE_BOTTLE
    display: "<#AAAAAA>Showcase: <#55FF55>Gain Level"
    tier: common
    difficulty: easy
    objectives:
      - type: gainlevel
        amount: 2
    reward:
      xp: 10

  showcase_move:
    permission: soapsquest.admin
    material: LEATHER_BOOTS
    display: "<#AAAAAA>Showcase: <#55FF55>Move"
    tier: common
    difficulty: easy
    objectives:
      - type: move
        amount: 50
    reward:
      xp: 10

  showcase_jump:
    permission: soapsquest.admin
    material: RABBIT_FOOT
    display: "<#AAAAAA>Showcase: <#55FF55>Jump"
    tier: common
    difficulty: easy
    objectives:
      - type: jump
        amount: 5
    reward:
      xp: 10

  showcase_chat:
    permission: soapsquest.admin
    material: BOOK
    display: "<#AAAAAA>Showcase: <#55FF55>Chat"
    tier: common
    difficulty: easy
    objectives:
      - type: chat
        text: "showcase"
        amount: 1
    reward:
      xp: 10

  showcase_interact:
    permission: soapsquest.admin
    material: CRAFTING_TABLE
    display: "<#AAAAAA>Showcase: <#55FF55>Interact"
    tier: common
    difficulty: easy
    objectives:
      - type: interact
        target: CRAFTING_TABLE
        amount: 1
    reward:
      xp: 10

  showcase_bowshoot:
    permission: soapsquest.admin
    material: BOW
    display: "<#AAAAAA>Showcase: <#55FF55>Bow Shoot"
    tier: common
    difficulty: easy
    objectives:
      - type: bowshoot
        amount: 3
    reward:
      xp: 10

  showcase_projectile:
    permission: soapsquest.admin
    material: SNOWBALL
    display: "<#AAAAAA>Showcase: <#55FF55>Projectile"
    tier: common
    difficulty: easy
    objectives:
      - type: projectile
        target: SNOWBALL
        amount: 1
    reward:
      xp: 10

  showcase_firework:
    permission: soapsquest.admin
    material: FIREWORK_ROCKET
    display: "<#AAAAAA>Showcase: <#55FF55>Firework"
    tier: common
    difficulty: easy
    objectives:
      - type: firework
        amount: 1
    reward:
      xp: 10

  showcase_vehicle:
    permission: soapsquest.admin
    material: MINECART
    display: "<#AAAAAA>Showcase: <#55FF55>Vehicle"
    tier: common
    difficulty: easy
    objectives:
      - type: vehicle
        vehicle: ANY
        amount: 100
    reward:
      xp: 10

  showcase_harvest:
    permission: soapsquest.admin
    material: WHEAT
    display: "<#AAAAAA>Showcase: <#55FF55>Harvest"
    tier: common
    difficulty: easy
    objectives:
      - type: harvest
        target: WHEAT
        amount: 1
    reward:
      xp: 10

  showcase_elytra_fly:
    permission: soapsquest.admin
    material: FEATHER
    display: "<#AAAAAA>Showcase: <#55FF55>Elytra Fly"
    tier: common
    difficulty: easy
    objectives:
      - type: elytra_fly
        amount: 50
    reward:
      xp: 10

  showcase_explore_biome:
    permission: soapsquest.admin
    material: MAP
    display: "<#AAAAAA>Showcase: <#55FF55>Explore Biome"
    tier: common
    difficulty: easy
    objectives:
      - type: explore_biome
        target: PLAINS
        amount: 1
    reward:
      xp: 10

  showcase_xp_pickup:
    permission: soapsquest.admin
    material: EXPERIENCE_BOTTLE
    display: "<#AAAAAA>Showcase: <#55FF55>XP Pickup"
    tier: common
    difficulty: easy
    objectives:
      - type: xp_pickup
        amount: 50
    reward:
      xp: 10

  showcase_anvil_repair:
    permission: soapsquest.admin
    material: ANVIL
    display: "<#AAAAAA>Showcase: <#55FF55>Anvil Repair"
    tier: common
    difficulty: easy
    objectives:
      - type: anvil_repair
        amount: 1
    reward:
      xp: 10

  showcase_command:
    permission: soapsquest.admin
    material: COMMAND_BLOCK
    display: "<#AAAAAA>Showcase: <#55FF55>Command"
    tier: common
    difficulty: easy
    objectives:
      - type: command
        command: help
        amount: 1
    reward:
      xp: 10

  showcase_placeholder:
    permission: soapsquest.admin
    material: NAME_TAG
    display: "<#AAAAAA>Showcase: <#55FF55>Placeholder"
    tier: common
    difficulty: easy
    objectives:
      - type: placeholder
        # %player_level% requires PlaceholderAPI "Player" expansion:
        # /papi ecloud download Player
        # /papi reload
        placeholder: player_level
        amount: 5
    reward:
      xp: 10

  showcase_kill_mythicmob:
    permission: soapsquest.admin
    material: NETHER_STAR
    display: "<#AAAAAA>Showcase: <#55FF55>Kill MythicMob"
    tier: common
    difficulty: easy
    objectives:
      - type: kill_mythicmob
        target: YourMobName
        amount: 1
    reward:
      xp: 10

  showcase_playtime:
    permission: soapsquest.admin
    material: CLOCK
    display: "<#AAAAAA>Showcase: <#55FF55>Playtime"
    tier: common
    difficulty: easy
    objectives:
      - type: playtime
        amount: 2
    reward:
      xp: 10

  showcase_enter_world:
    permission: soapsquest.admin
    material: OBSIDIAN
    display: "<#AAAAAA>Showcase: <#55FF55>Enter World"
    tier: common
    difficulty: easy
    objectives:
      - type: enter_world
        target: NETHER
        amount: 1
    reward:
      xp: 10

  showcase_timer:
    permission: soapsquest.admin
    material: CLOCK
    display: "<#AAAAAA>Showcase: <#FFD700>Timed Quest"
    tier: common
    difficulty: easy
    timer:
      minutes: 2
      start-on: activate
      on-expire: overtime
    objectives:
      - type: kill
        target: ZOMBIE
        amount: 1
    reward:
      xp: 25
    fail-reward:
      xp: 5

  # Showcase quests omit custom lore: on paper they use messages.yml quest-default-lore.

  showcase_kill_player:
    permission: soapsquest.admin
    material: DIAMOND_SWORD
    display: "<#AAAAAA>Showcase: <#55FF55>Kill Player"
    tier: common
    difficulty: easy
    objectives:
      - type: kill_player
        amount: 1
    reward:
      xp: 10

  showcase_advancement:
    permission: soapsquest.admin
    material: KNOWLEDGE_BOOK
    display: "<#AAAAAA>Showcase: <#55FF55>Advancement"
    tier: common
    difficulty: easy
    objectives:
      - type: advancement
        target: minecraft:story/mine_stone
        amount: 1
    reward:
      xp: 10

  showcase_equip:
    permission: soapsquest.admin
    material: DIAMOND_CHESTPLATE
    display: "<#AAAAAA>Showcase: <#55FF55>Equip"
    tier: common
    difficulty: easy
    objectives:
      - type: equip
        target: DIAMOND_CHESTPLATE
        slot: CHEST
        amount: 1
    reward:
      xp: 10

  showcase_smith:
    permission: soapsquest.admin
    material: SMITHING_TABLE
    display: "<#AAAAAA>Showcase: <#55FF55>Smith"
    tier: common
    difficulty: easy
    objectives:
      - type: smith
        target: ANY
        amount: 1
    reward:
      xp: 10

  showcase_wg_enter_region:
    permission: soapsquest.admin
    material: IRON_BARS
    display: "<#AAAAAA>Showcase: <#55FF55>WG Enter Region"
    tier: common
    difficulty: easy
    objectives:
      - type: wg_enter_region
        target: spawn
        amount: 1
    reward:
      xp: 10

  showcase_lands_enter_land:
    permission: soapsquest.admin
    material: GRASS_BLOCK
    display: "<#AAAAAA>Showcase: <#55FF55>Lands Enter"
    tier: common
    difficulty: easy
    objectives:
      - type: lands_enter_land
        target: MyLand
        amount: 1
    reward:
      xp: 10

  showcase_citizens_talk_npc:
    permission: soapsquest.admin
    material: VILLAGER_SPAWN_EGG
    display: "<#AAAAAA>Showcase: <#55FF55>Talk NPC"
    tier: common
    difficulty: easy
    objectives:
      - type: citizens_talk_npc
        target: "1"
        amount: 1
    reward:
      xp: 10

  showcase_mcmmo_skill_level:
    permission: soapsquest.admin
    material: EXPERIENCE_BOTTLE
    display: "<#AAAAAA>Showcase: <#55FF55>mcMMO Skill"
    tier: common
    difficulty: easy
    objectives:
      - type: mcmmo_skill_level
        target: MINING
        amount: 5
    reward:
      xp: 10

  showcase_denizen_run:
    permission: soapsquest.admin
    material: COMMAND_BLOCK
    display: "<#AAAAAA>Showcase: <#55FF55>Denizen Run"
    tier: common
    difficulty: easy
    objectives:
      - type: denizen_run
        target: my_script
        amount: 1
    reward:
      xp: 10

  showcase_wg_leave_region:
    permission: soapsquest.admin
    material: IRON_DOOR
    display: "<#AAAAAA>Showcase: <#55FF55>WG Leave Region"
    tier: common
    difficulty: easy
    objectives:
      - type: wg_leave_region
        target: spawn
        amount: 1
    reward:
      xp: 10

  showcase_wg_time_in_region:
    permission: soapsquest.admin
    material: CLOCK
    display: "<#AAAAAA>Showcase: <#55FF55>WG Time In Region"
    tier: common
    difficulty: easy
    objectives:
      - type: wg_time_in_region
        target: spawn
        amount: 60
    reward:
      xp: 10

  showcase_lands_visit_land:
    permission: soapsquest.admin
    material: OAK_BOAT
    display: "<#AAAAAA>Showcase: <#55FF55>Lands Visit"
    tier: common
    difficulty: easy
    objectives:
      - type: lands_visit_land
        target: MyLand
        amount: 1
    reward:
      xp: 10

  showcase_lands_claim_chunks:
    permission: soapsquest.admin
    material: GOLDEN_SHOVEL
    display: "<#AAAAAA>Showcase: <#55FF55>Lands Claim"
    tier: common
    difficulty: easy
    objectives:
      - type: lands_claim_chunks
        target: ANY
        amount: 1
    reward:
      xp: 10

  showcase_lands_land_level:
    permission: soapsquest.admin
    material: BEACON
    display: "<#AAAAAA>Showcase: <#55FF55>Lands Level"
    tier: common
    difficulty: easy
    objectives:
      - type: lands_land_level
        target: MyLand
        level: 5
    reward:
      xp: 10

  showcase_lands_deposit:
    permission: soapsquest.admin
    material: GOLD_INGOT
    display: "<#AAAAAA>Showcase: <#55FF55>Lands Deposit"
    tier: common
    difficulty: easy
    objectives:
      - type: lands_deposit
        target: MyLand
        amount: 100
    reward:
      xp: 10

  showcase_lands_member_count:
    permission: soapsquest.admin
    material: PLAYER_HEAD
    display: "<#AAAAAA>Showcase: <#55FF55>Lands Members"
    tier: common
    difficulty: easy
    objectives:
      - type: lands_member_count
        target: MyLand
        amount: 3
    reward:
      xp: 10

  showcase_citizens_deliver_npc:
    permission: soapsquest.admin
    material: CHEST
    display: "<#AAAAAA>Showcase: <#55FF55>Deliver to NPC"
    tier: common
    difficulty: easy
    objectives:
      - type: citizens_deliver_npc
        target: "1"
        item: WHEAT:16
        amount: 1
    reward:
      xp: 10

  showcase_citizens_kill_npc:
    permission: soapsquest.admin
    material: IRON_SWORD
    display: "<#AAAAAA>Showcase: <#55FF55>Kill NPC"
    tier: common
    difficulty: easy
    objectives:
      - type: citizens_kill_npc
        target: "1"
        amount: 1
    reward:
      xp: 10

  showcase_mcmmo_skill_gain:
    permission: soapsquest.admin
    material: DIAMOND_PICKAXE
    display: "<#AAAAAA>Showcase: <#55FF55>mcMMO Skill Gain"
    tier: common
    difficulty: easy
    objectives:
      - type: mcmmo_skill_gain
        target: MINING
        amount: 100
    reward:
      xp: 10

  showcase_mcmmo_power_level:
    permission: soapsquest.admin
    material: NETHER_STAR
    display: "<#AAAAAA>Showcase: <#55FF55>mcMMO Power Level"
    tier: common
    difficulty: easy
    objectives:
      - type: mcmmo_power_level
        amount: 100
    reward:
      xp: 10

  showcase_mcmmo_ability:
    permission: soapsquest.admin
    material: BLAZE_POWDER
    display: "<#AAAAAA>Showcase: <#55FF55>mcMMO Ability"
    tier: common
    difficulty: easy
    objectives:
      - type: mcmmo_ability
        target: SUPER_BREAKER
        amount: 1
    reward:
      xp: 10

  showcase_mcmmo_xp_gain:
    permission: soapsquest.admin
    material: LAPIS_LAZULI
    display: "<#AAAAAA>Showcase: <#55FF55>mcMMO XP Gain"
    tier: common
    difficulty: easy
    objectives:
      - type: mcmmo_xp_gain
        target: MINING
        amount: 500
    reward:
      xp: 10

# ════════════════════════════════════════════════════════════════════════════
# CITIZENS NPC QUEST ASSIGNMENTS
# Requires integrations.citizens: true in config.yml
# Link NPCs to quests on right-click — or use /sq npc link
# ════════════════════════════════════════════════════════════════════════════
#
# citizens-npcs:
#   "42":                    # NPC id (Citizens /npc id) or NPC display name
#     quest: tutorial_quest  # Quest id from the quests section above
#     message: "&aHere is your quest!"
#   "Quest Giver":
#     quest: daily_hunt
#     message: "&eGood luck!"

citizens-npcs: {}

messages.yml

# ##############################################################
# #                                                            #
# #                      SoapsQuest                            #
# #                                                            #
# #           Created by: AlternativeSoap                      #
# #           Website:    www.SoapsUniverse.com                #
# #           Support:    https://discord.gg/mawAzwFq          #
# #                                                            #
# ##############################################################

# ╔════════════════════════════════════════════════════════════════════════════╗
# ║                        SoapsQuest Messages                                 ║
# ║  All plugin messages, notifications, and player communication             ║
# ║  Uses consistent color palette and formatting across all features         ║
# ║  See README.md for placeholders and detailed documentation                ║
# ╚════════════════════════════════════════════════════════════════════════════╝

prefix: "<dark_gray>[<gradient:#FF8C00:#FFD700>SoapsQuest</gradient><dark_gray>]"

# ════════════════════════════════════════════════════════════════════════════
# GENERAL MESSAGES
# ════════════════════════════════════════════════════════════════════════════
no-permission: "<prefix> <#FF5555>You don't have permission to do that."
premium-only: "<prefix> <#FF5555>✗ This feature requires <gradient:#FF8C00:#FFD700>SoapsQuest Premium</gradient><#FF5555>. See <#FFFFFF>www.SoapsUniverse.com<#FF5555>."
player-not-found: "<prefix> <#FF5555>Player '<#FFFFFF><player><#FF5555>' not found."
quest-not-found: "<prefix> <#FF5555>Quest '<#FFFFFF><quest><#FF5555>' not found."
player-only: "<prefix> <#FF5555>This command can only be used by players."
config-reloaded: "<prefix> <gradient:#55FFFF:#55FF55>Reload complete.</gradient> <#AAAAAA><count> quests loaded."

browser-config-error: "<prefix> <#FF5555>The quest browser is not configured. Ask an admin to check gui.yml."
browser-no-results: "<prefix> <#FF5555>No quests match your filters."
browser-no-results-hint: "<prefix> <#AAAAAA>Adjust the filters to widen your search."
browser-empty: "<prefix> <#AAAAAA>No quests are available."
browser-paper-error: "<prefix> <#FF5555>Could not create the quest paper. Try again or ask an admin."

# ════════════════════════════════════════════════════════════════════════════
# QUEST RECEIVING & ACTIVATION
# ════════════════════════════════════════════════════════════════════════════

# Quest received (active)
quest-received: "<prefix> <#55FF55>✓ <gradient:#55FF55:#55FFFF>New Quest:</gradient> <#FFFFFF><quest><#55FF55>."

# Quest queued (behind active quest)
quest-received-queued: "<prefix> <#FFD700>📋 Quest queued: <#FFFFFF><quest><#FFD700>. It will activate after your current quest."

# Quest replacement
quest-received-replaced: "<prefix> <#55FF55>New Quest: <#FFFFFF><quest> <#AAAAAA>(replaced previous)."

# Already has this quest
quest-already-active: "<prefix> <#FF5555>You already have this quest active."

# ════════════════════════════════════════════════════════════════════════════
# QUEST INTERACTION (Right-Click Paper)
# ════════════════════════════════════════════════════════════════════════════

# Progress check (incomplete quest)
quest-progress-display: |
  <prefix> <gradient:#555555:#333333><st>━━━━━━━━━━━━━━━━━━━━━━</st></gradient>
  <gradient:#FFD700:#FFAA00>Quest:</gradient> <#FFFFFF><quest>
  <objective>
  <prefix> <gradient:#555555:#333333><st>━━━━━━━━━━━━━━━━━━━━━━</st></gradient>

# Completion (redeeming rewards)
quest-completion-redeemed: |
  <prefix> <gradient:#55FF55:#00FF88><st>━━━━━━━━━━━━━━━━━━━━━━</st></gradient>
  <#55FF55>✓ <gradient:#55FF55:#55FFFF>Quest Complete:</gradient> <#FFFFFF><quest>
  <gradient:#FFD700:#FFAA00>Rewards claimed:</gradient>
  <quest_rewards>
  <prefix> <gradient:#55FF55:#00FF88><st>━━━━━━━━━━━━━━━━━━━━━━</st></gradient>

# Already completed
quest-already-redeemed: "<prefix> <#AAAAAA>This quest has already been completed."

# ════════════════════════════════════════════════════════════════════════════
# QUEST OWNERSHIP (Lock-to-Player System)
# ════════════════════════════════════════════════════════════════════════════
# When lock-to-player: true, only the bound player can pick the paper up.

quest-not-yours: "<prefix> <#FF5555>⚠ This quest is bound to another player."
quest-locked-to-other: "<prefix> <#FF5555>This quest belongs to <#FFFFFF><player><#FF5555>."
quest-bound-to-you: "<prefix> <#55FF55>✓ Quest '<#FFFFFF><quest><#55FF55>' is now bound to you."
quest-activated: "<prefix> <#FFD700>Quest '<#FFFFFF><quest><#FFD700>' is now active."
quest-dropped: "<prefix> <#FFAA00>▶ Dropped '<#FFFFFF><quest><#FFAA00>'. Progress is saved. Another player can pick it up."
quest-picked-up: "<prefix> <#55FF55>✓ You picked up a quest: '<#FFFFFF><quest><#55FF55>'!"
quest-stored-in-container: "<prefix> <#FFAA00>▶ You stored '<#FFFFFF><quest><#FFAA00>' in a container. Quest tracking paused until you pick it up again."
quest-completed-pickup: "<prefix> <#FFD700>★ You picked up a completed quest: '<#FFFFFF><quest><#FFD700>'! Right-click to claim rewards."
quest-cannot-place-workstation: "<prefix> <#FF5555>✗ Quest papers cannot be moved into crafting/workstation menus."

# ════════════════════════════════════════════════════════════════════════════
# PERMISSION SYSTEM
# ════════════════════════════════════════════════════════════════════════════

quest-no-permission: "<prefix> <#FF5555>You don't have permission for this quest."
quest-give-no-permission: "<prefix> <#FF5555>Player <#FFFFFF><player> <#FF5555>lacks permission for quest '<#FFFFFF><quest><#FF5555>'."
quest-requires-permission: "<prefix> <#FF5555>Requires permission: <#FFFFFF><permission><#FF5555>."

# ════════════════════════════════════════════════════════════════════════════
# QUEST CONDITIONS & REQUIREMENTS
# ════════════════════════════════════════════════════════════════════════════

# ════════════════════════════════════════════════════════════════════════════
# QUEST LOCK/UNLOCK SYSTEM
# ════════════════════════════════════════════════════════════════════════════

quest-locked-lore:
  - "<gradient:#FF5555:#AA0000:#FF5555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
  - "<gradient:#FF5555:#FF8888><bold>Locked</bold></gradient>"
  - ""
  - "<#888888>Pay the cost or meet the requirements"
  - "<#888888>to start this quest."
  - ""
  - "<gradient:#FFD700:#FFAA00>Right-click to start</gradient>"
  - ""
  - "<#666666>Requirements"
  - "<requirements>"
  - ""
  - "<gradient:#FF5555:#AA0000:#FF5555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"

quest-unlocked: "<prefix> <#55FF55>✓ <gradient:#55FF55:#55FFFF>You can start this quest now.</gradient>"
quest-already-unlocked: "<prefix> <#AAAAAA>You already meet the requirements for this quest."
quest-unlock-failed: "<prefix> <#FF5555>✗ Cannot start quest: <#FFFFFF><reason><#FF5555>."

# ════════════════════════════════════════════════════════════════════════════
# PROGRESS DISPLAY SYSTEM
# ════════════════════════════════════════════════════════════════════════════
# Configured in config.yml: progress-display.mode

# Chat mode (interval-based)
quest-progress-updated: "<prefix> <#FFD700><objective><#AAAAAA>: <#55FF55><progress><#AAAAAA>/<#55FF55><amount> <#AAAAAA>[<#55FF55>+1<#AAAAAA>]"

# Actionbar mode (compact, above hotbar)
quest-progress-actionbar: "<#FFFFFF><quest><#AAAAAA>: <#55FF55><progress><#AAAAAA>/<#55FF55><amount> <#555555>• <#FFD700><objective>"

# Bossbar mode (top of screen)
quest-progress-bossbar: "<#FFFFFF><quest><#AAAAAA>: <#55FF55><progress><#AAAAAA>/<#55FF55><amount> <#555555>• <#FFD700><objective>"

# Completion notification
quest-complete: "<prefix> <#55FF55>✓ <gradient:#55FF55:#55FFFF>Quest Complete:</gradient> <#FFFFFF><quest><#55FF55>!"

# Quest claimable 
quest-claimable: "<prefix> <#55FF55>✓ <gradient:#55FF55:#55FFFF>Quest Complete!</gradient> '<#FFFFFF><quest><#55FF55>' <#FFD700>Right-click to claim rewards."

# ════════════════════════════════════════════════════════════════════════════
# MILESTONE NOTIFICATIONS
# ════════════════════════════════════════════════════════════════════════════

quest-milestone: "<prefix> <gradient:#FFAA00:#FFD700>★ Milestone:</gradient> <#FFFFFF><quest><#AAAAAA>: <gradient:#FFAA00:#FFD700><milestone>% complete</gradient>"

# ════════════════════════════════════════════════════════════════════════════
# REWARD CHANCES
# ════════════════════════════════════════════════════════════════════════════

reward-chance-failed: "<#AAAAAA><italic>(Some rewards not received due to chance.)</italic>"
reward-claim-failed: "<prefix> <#FF5555><bold>✗</bold> <#FF5555>Could not claim rewards for <#FFFFFF><quest><#FF5555>. Clear inventory space and try again."

usage-npc-link: "<prefix> <#FF5555>Usage: <#FFFFFF>/sq npc link <npc-id|name> <quest-id> [message]"
usage-npc: "<prefix> <#FF5555>Usage: <#FFFFFF>/sq npc <link|broker|unbroker|brokers> ..."
usage-npc-broker: "<prefix> <#FF5555>Usage: <#FFFFFF>/sq npc broker <npc-id|name> [message]"
usage-npc-unbroker: "<prefix> <#FF5555>Usage: <#FFFFFF>/sq npc unbroker <npc-id|name>"
npc-link-success: "<prefix> <#55FF55>Linked NPC <#FFFFFF><npc> <#55FF55>to quest <#FFFFFF><quest><#55FF55> in quests.yml."
npc-link-citizens-disabled: "<prefix> <#FF5555>Citizens integration is not available. Install Citizens and set integrations.citizens: true."
npc-link-is-broker: "<prefix> <#FF5555><npc> <#FF5555>already hands out random contracts. Run <#FFFFFF>/sq npc unbroker <npc> <#FF5555>before linking a fixed quest."
npc-broker-success: "<prefix> <#55FF55><npc> <#55FF55>now hands out random contracts (<#FFFFFF><count>/<max><#55FF55>)."
npc-broker-message-set: "<prefix> <#AAAAAA>Greeting saved for <#FFFFFF><npc><#AAAAAA>."
npc-broker-full: "<prefix> <#FF5555>You already have <#FFFFFF><max> <#FF5555>contract NPCs. Raise max-broker-npcs in contract-request.yml, or remove one with /sq npc unbroker."
npc-broker-already: "<prefix> <#FF5555><npc> <#FF5555>is already a contract NPC."
npc-broker-fixed-linked: "<prefix> <#FF5555><npc> <#FF5555>already gives a fixed quest. Unlink that quest before making it a contract NPC."
npc-unbroker-success: "<prefix> <#55FF55><npc> <#55FF55>no longer hands out random contracts."
npc-unbroker-missing: "<prefix> <#FF5555><npc> <#FF5555>is not a contract NPC."
npc-brokers-header: "<prefix> <#55FF55>Contract NPCs <#FFFFFF>(<count>/<max>)<#55FF55>:"
npc-brokers-empty: "<prefix> <#AAAAAA>None yet. Use <#FFFFFF>/sq npc broker <npc-id|name><#AAAAAA>."
npc-brokers-entry: "  <#FFFFFF>• <npc>"

contract-request-disabled: "<prefix> <#FF5555>Random contracts are turned off on this server."
contract-request-generator-unavailable: "<prefix> <#FF5555>Random contracts need the quest generator enabled. Check random-generator.yml."
contract-request-channel-disabled: "<prefix> <#FF5555>You cannot request a contract this way right now."
contract-request-cooldown: "<prefix> <#FF5555>Wait <#FFFFFF><remaining>s <#FF5555>before taking another contract."
contract-request-limit-reached: "<prefix> <#FF5555>You already have <#FFFFFF><limit> <#FF5555>active contract(s). Finish or drop one first."
contract-request-cannot-afford: "<prefix> <#FF5555>You need <#FFFFFF><cost> <#FF5555>to take this contract."
contract-request-no-economy: "<prefix> <#FF5555>This contract costs money, but no economy plugin is hooked. Install Vault and an economy plugin."
contract-request-generation-failed: "<prefix> <#FF5555>Could not create a contract. Try again in a moment."
contract-request-delivery-failed: "<prefix> <#FF5555>Could not give you the contract paper. Clear inventory space and try again."
contract-request-invalid-difficulty: "<prefix> <#FF5555>That difficulty is not available here: <#FFFFFF><difficulty>"
contract-request-pick-difficulty: "<prefix> <#FF5555>Select a difficulty first."
contract-request-no-difficulties: "<prefix> <#FF5555>No difficulties are available for contracts right now."
contract-request-success: "<prefix> <#55FF55>You received a contract: <#FFFFFF><quest>"
contract-request-fee-paid: "<prefix> <#AAAAAA>You paid <#FFFFFF><cost><#AAAAAA>."

usage-denizen-signal: "<prefix> <#FF5555>Usage: <#FFFFFF>/sq denizen signal <script> [player]"
denizen-disabled: "<prefix> <#FF5555>Denizen integration is not available."
denizen-signal-success: "<prefix> <#55FF55>Signaled Denizen script <#FFFFFF><script> <#55FF55>for <#FFFFFF><player><#55FF55>."
reward-chance-received: "<#55FF55>✓ Reward received."

# ════════════════════════════════════════════════════════════════════════════
# MULTI-OBJECTIVE SYSTEM
# ════════════════════════════════════════════════════════════════════════════
objective-progress: "<#AAAAAA>Progress: <#FFD700><progress>"

# Single objective completed
objective-complete: "<#55FF55>✓ Objective complete."

# All objectives completed (quest ready to redeem)
all-objectives-complete: "<#55FF55>✓ Quest complete! <#AAAAAA>Right-click to claim rewards."

# Objective-specific messages
objective-craft-progress: "<#AAAAAA>Crafted: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#FFFFFF><item>"
objective-craft-complete: "<#55FF55>✓ Crafting objective complete."
objective-smelt-progress: "<#AAAAAA>Smelted: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#FFFFFF><item>"
objective-smelt-complete: "<#55FF55>✓ Smelting objective complete."
objective-fish-progress: "<#AAAAAA>Caught: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#FFFFFF><item>"
objective-fish-complete: "<#55FF55>✓ Fishing objective complete."
objective-enchant-progress: "<#AAAAAA>Enchanted: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#FFFFFF><item>"
objective-enchant-complete: "<#55FF55>✓ Enchanting objective complete."
objective-consume-progress: "<#AAAAAA>Consumed: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#FFFFFF><item>"
objective-consume-complete: "<#55FF55>✓ Consumption objective complete."
objective-tame-progress: "<#AAAAAA>Tamed: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#FFFFFF><entity>"
objective-tame-complete: "<#55FF55>✓ Taming objective complete."
objective-trade-progress: "<#AAAAAA>Traded: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#FFFFFF><item>"
objective-trade-complete: "<#55FF55>✓ Trading objective complete."
objective-brew-progress: "<#AAAAAA>Brewed: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#FFFFFF><item>"
objective-brew-complete: "<#55FF55>✓ Brewing objective complete."
objective-shear-progress: "<#AAAAAA>Sheared: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#FFFFFF><entity>"
objective-shear-complete: "<#55FF55>✓ Shearing objective complete."
objective-sleep-progress: "<#AAAAAA>Slept: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#AAAAAA>times"
objective-sleep-complete: "<#55FF55>✓ Sleeping objective complete."
objective-heal-progress: "<#AAAAAA>Healed: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#AAAAAA>HP"
objective-heal-complete: "<#55FF55>✓ Healing objective complete."
objective-drop-progress: "<#AAAAAA>Dropped: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#AAAAAA><item>"
objective-drop-complete: "<#55FF55>✓ Dropping objective complete."
objective-damage-progress: "<#AAAAAA>Dealt: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#AAAAAA>damage"
objective-damage-complete: "<#55FF55>✓ Damage objective complete."
objective-death-progress: "<#AAAAAA>Died: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#AAAAAA>times"
objective-death-complete: "<#55FF55>✓ Death objective complete."
objective-reachlevel-progress: "<#AAAAAA>Level: <#FFD700><progress><#AAAAAA>/<#FFD700><amount>"
objective-reachlevel-complete: "<#55FF55>✓ Level objective complete."
objective-gainlevel-progress: "<#AAAAAA>Gained: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#AAAAAA>levels"
objective-gainlevel-complete: "<#55FF55>✓ Level gain objective complete."
objective-move-progress: "<#AAAAAA>Traveled: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#AAAAAA>blocks"
objective-move-complete: "<#55FF55>✓ Movement objective complete."
objective-jump-progress: "<#AAAAAA>Jumped: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#AAAAAA>times"
objective-jump-complete: "<#55FF55>✓ Jumping objective complete."
objective-chat-progress: "<#AAAAAA>Sent: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#AAAAAA>messages"
objective-chat-complete: "<#55FF55>✓ Chat objective complete."
objective-interact-progress: "<#AAAAAA>Interacted: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#AAAAAA>times"
objective-interact-complete: "<#55FF55>✓ Interaction objective complete."
objective-bowshoot-progress: "<#AAAAAA>Shot: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#AAAAAA>arrows"
objective-bowshoot-complete: "<#55FF55>✓ Bow shooting objective complete."
objective-projectile-progress: "<#AAAAAA>Launched: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#AAAAAA>projectiles"
objective-projectile-complete: "<#55FF55>✓ Projectile objective complete."
objective-firework-progress: "<#AAAAAA>Launched: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#AAAAAA>fireworks"
objective-firework-complete: "<#55FF55>✓ Firework objective complete."
objective-vehicle-progress: "<#AAAAAA>Traveled: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#AAAAAA>blocks"
objective-vehicle-complete: "<#55FF55>✓ Vehicle travel objective complete."
objective-killmythicmob-progress: "<#AAAAAA>Killed: <#FFD700><progress><#AAAAAA>/<#FFD700><amount> <#FFFFFF><name>"
objective-killmythicmob-complete: "<#55FF55>✓ MythicMob objective complete."

# ════════════════════════════════════════════════════════════════════════════
# SEQUENTIAL QUEST MESSAGES
# ════════════════════════════════════════════════════════════════════════════

objective-sequential-progress: "<#AAAAAA>Current Step: <#FFD700><objective> <#AAAAAA>(<#55FF55><progress><#AAAAAA>/<#55FF55><amount><#AAAAAA>)"
objective-sequential-complete: "<#55FF55>✓ Step complete. <#FFD700>Continue with the next objective."
all-sequential-complete: "<#55FF55>✓ All steps complete! <#AAAAAA>Right-click to claim rewards."

# ════════════════════════════════════════════════════════════════════════════
# COMMAND SYSTEM
# ════════════════════════════════════════════════════════════════════════════

# Usage errors
usage-main: "<prefix> <#AAAAAA>Unknown command. Use <#55FF55>/sq help <#AAAAAA>for a list of commands."
usage-debug: "<prefix> <#AAAAAA>Usage: <#55FF55>/sq debug toggle"
usage-give: "<prefix> <#AAAAAA>Usage: <#55FF55>/sq give <player> <quest><#AAAAAA>."
usage-addreward: "<prefix> <#AAAAAA>Usage: <#55FF55>/sq addreward <quest> <type> [args...]<#AAAAAA>."
usage-removereward: "<prefix> <#AAAAAA>Usage: <#55FF55>/sq removereward <quest> <index><#AAAAAA>."
usage-listreward: "<prefix> <#AAAAAA>Usage: <#55FF55>/sq listreward <quest><#AAAAAA>."
invalid-page-number: "<prefix> <#FF5555>Invalid page number."

# ════════════════════════════════════════════════════════════════════════════
# HELP MENU
# ════════════════════════════════════════════════════════════════════════════
help-header: "<#AAAAAA><st>━━━━━━━</st> <gradient:#FFD700:#FF8C00>SoapsQuest Help</gradient> <#AAAAAA><st>━━━━━━━</st>"
help-footer: "<gradient:#FF8C00:#FFD700:#FF8C00><st>━━━━━━━━━━━━━━━━━━━━━━━━━</st></gradient>"
help-quest-command: "<#FFAA00>▶ <#FFD700>/sq browse <#555555>• <#AAAAAA>Open quest browser"
help-quest-list: "<#FFAA00>▶ <#FFD700>/sq list <#555555>• <#AAAAAA>View all quests"
help-generate-command: "<#FFAA00>▶ <#FFD700>/sq generate [type] [amount|count] [objective] [min] [max] [difficulty] [tier] [material] <#555555>• <#AAAAAA>Generate quest(s)"
help-give: "  <#55FF55>/sq give <player> <quest> <#AAAAAA>→ Give quest to player"
help-list: "  <#55FF55>/sq list [page] <#AAAAAA>→ List all quests (paginated)"
help-claim: "  <#55FF55>/sq claim <questId> <#AAAAAA>→ Claim a quest from /sq list (click or command)"
help-browse: "  <#55FF55>/sq browse <#AAAAAA>→ Open quest browser GUI"
help-editor: "  <#55FF55>/sq editor <#AAAAAA>→ Open quest editor GUI"
help-statistic: "  <#55FF55>/sq statistic [player] <#AAAAAA>→ View quest statistics"
help-leaderboard: ""
help-generate: "  <#55FF55>/sq generate [type] [amount|count] [objective] [min] [max] [difficulty] [tier] [material] <#AAAAAA>→ Generate random quest(s)"
help-contract: "  <#55FF55>/sq contract [difficulty] <#AAAAAA>→ Open the contract board (Premium)"
help-reload: "  <#55FF55>/sq reload <#AAAAAA>→ Reload configuration"
help-listreward: "  <#55FF55>/sq listreward <quest> <#AAAAAA>→ List quest rewards"
help-addreward: "  <#55FF55>/sq addreward <quest> <type> <#AAAAAA>→ Add reward"
help-removereward: "  <#55FF55>/sq removereward <quest> <index> <#AAAAAA>→ Remove reward"
help-debug: "  <#55FF55>/sq debug toggle <#AAAAAA>→ Toggle debug logging"
help-remove: "  <#55FF55>/sq remove <questId> <#AAAAAA>→ Remove quest from config"
help-copy: "  <#55FF55>/sq copy <sourceId> <newId> <#AAAAAA>→ Copy a quest to a new ID"
help-reset: "  <#55FF55>/sq reset <player> <questId> <#AAAAAA>→ Reset a player's quest progress"
help-complete: "  <#55FF55>/sq complete <player> <questId> <#AAAAAA>→ Force-complete a player's quest"
help-active: "  <#55FF55>/sq active [player] <#AAAAAA>→ View active quest papers GUI"
help-sigils: "  <#55FF55>/sq sigils <action> <player> [amount] <#AAAAAA>→ Manage SoapsQuest Sigils"
help-drop: "  <#55FF55>/sq drop <questId> ... <#AAAAAA>→ Alias for spawnpaper (admin world drop)"
help-spawnpaper: "  <#55FF55>/sq spawnpaper <questId> ... <#AAAAAA>→ Spawn a fresh unbound quest paper in the world"
help-npc: "  <#55FF55>/sq npc <link|broker|unbroker|brokers> ... <#AAAAAA>→ Citizens NPC quest/contract setup"
help-denizen: "  <#55FF55>/sq denizen signal <script> [player] <#AAAAAA>→ Trigger Denizen script progress"
help-info: "  <#55FF55>/sq info <#AAAAAA>→ Show plugin information"
help-help: "  <#55FF55>/sq help <#AAAAAA>→ Show this menu"

# Plugin info
info-header-premium: "<prefix> <gradient:#FF8C00:#FFD700><bold>SoapsQuest Premium</bold></gradient>"
info-header-free: "<prefix> <gradient:#55FFFF:#55FF55><bold>SoapsQuest</bold></gradient> <#AAAAAA>(Free)"
info-version: "  <#AAAAAA>Version: <#FFFFFF><version>"
info-description: "  <#AAAAAA>Physical quest papers · <#FFFFFF>43+ <#AAAAAA>vanilla / <#FFFFFF>61 <#AAAAAA>with integrations"
info-features-premium: "  <#55FF55>✓ <#AAAAAA>Generator · dailies · loot · editor · sigils · drop"
info-features-free: "  <#55FF55>✓ <#AAAAAA>Quest papers · browser · tiers · conditions · sigil rewards"
info-premium-hint: "  <#AAAAAA>Premium adds the generator, loot, dailies, and editor: <#FFFFFF>www.SoapsUniverse.com"

# Quest list
quest-list-header: "<prefix> <gradient:#FFD700:#FFAA00><bold>Available Quests</bold></gradient> <#AAAAAA>(Page <#FFD700><page><#AAAAAA>/<#FFD700><total_pages><#AAAAAA>)"
quest-list-entry: "  <#555555>• <tier_prefix> <tier_color><quest> <#555555>| <#AAAAAA><type> <#555555>[<difficulty>]"
quest-list-empty: "<prefix> <#AAAAAA>No quests configured yet."
quest-list-regular-header: "<gradient:#FFD700:#FFAA00><bold>Regular Quests</bold></gradient>"
quest-list-generated-header: "<gradient:#FF55FF:#AA55FF><bold>Generated Quests</bold></gradient>"
quest-list-navigation: "<#AAAAAA>Page <#FFD700><page><#AAAAAA>/<#FFD700><total_pages><#AAAAAA><previous><next>"

# ════════════════════════════════════════════════════════════════════════════
# REWARD MANAGEMENT
# ════════════════════════════════════════════════════════════════════════════

reward-added: "<prefix> <#55FF55>✓ Reward added to quest '<#FFFFFF><quest><#55FF55>'."
reward-removed: "<prefix> <#55FF55>✓ Reward removed from quest '<#FFFFFF><quest><#55FF55>'."
reward-index-invalid: "<prefix> <#FF5555>✗ Invalid reward index."
must-hold-item: "<prefix> <#FF5555>✗ Hold an item to add as reward."

# Quest give feedback (to sender)
quest-give-sender-activated: "<prefix> <#55FF55>✓ Quest given to <#FFFFFF><player><#55FF55>: <#FFFFFF><quest><#55FF55>."
quest-give-sender-queued: "<prefix> <#FFD700>📋 Quest queued for <#FFFFFF><player><#FFD700>: <#FFFFFF><quest><#FFD700>."
quest-give-sender-replaced: "<prefix> <#55FF55>✓ Quest given to <#FFFFFF><player><#55FF55>: <#FFFFFF><quest> <#AAAAAA>(replaced previous)."
quest-give-sender-already-active: "<prefix> <#FF5555>Player <#FFFFFF><player> <#FF5555>already has this quest active."

# Reward listing
rewards-header: "<prefix> <gradient:#FFD700:#FFAA00>━━━ Rewards for '<#FFFFFF><quest><gradient:#FFD700:#FFAA00>' ━━━</gradient>"
rewards-empty: "<prefix> <#AAAAAA>No rewards configured for quest '<#FFFFFF><quest><#AAAAAA>'."

# ════════════════════════════════════════════════════════════════════════════
# QUEST PAPER TEMPLATES
# ════════════════════════════════════════════════════════════════════════════
# Default lore when quest doesn't specify custom lore
# Placeholders: <quest> <objective> <progress> <amount> <progress_unit> <type> <tier> <difficulty>

quest-default-lore:
  - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"
  - "<#88CCFF><italic><objective></italic>"
  - "<#666666><type>  <#555555>·  <#AAAAAA><tier>  <#555555>·  <#AAAAAA><difficulty>"
  - ""
  - "<gradient:#FFD700:#FFAA00>➤</gradient> <#FFFFFF><progress><#888888>/<amount><progress_unit>"
  - ""
  - "<gradient:#555555:#AAAAAA:#555555><st>━━━━━━━━━━━━━━━━━━━━</st></gradient>"

# Internal lore elements (Paper MiniMessage / hex gradients)
paper-lore-claimable: "<gradient:#55FF55:#AAFF55><bold>[Claimable]</bold></gradient>"
paper-lore-active: "<gradient:#55FF55:#88FF88>[Active]</gradient>"
paper-lore-queued: "<gradient:#FFAA00:#FFCC66>[Queued]</gradient>"
paper-lore-redeemed: "<gradient:#55FF55:#88FFAA>[Redeemed]</gradient>"
paper-lore-complete: "<gradient:#55FF55:#55FFFF><bold>✓ Complete</bold></gradient>"
paper-lore-claim-hint: "<gradient:#FFD700:#FFAA00>Right-click to claim</gradient>"
paper-lore-timer: "<gradient:#FFD700:#FFAA00>⏱</gradient> <#AAAAAA><remaining>"
paper-lore-timer-waiting: "<gradient:#FFD700:#FFAA00>⏱ Right-click to start timer</gradient>"
paper-lore-timer-overtime: "<gradient:#FF5555:#FF8888>⏱ Overtime</gradient> <#888888>reduced rewards"
paper-name-timer: "<#FFFFFF><quest> <#888888>[<#FFD700><remaining><#888888>]"
paper-name-timer-waiting: "<#FFFFFF><quest> <#888888>[<#FFAA00>Start timer<#888888>]"
paper-name-timer-overtime: "<#FFFFFF><quest> <#888888>[<#FF5555>Overtime<#888888>]"
timer-hud-actionbar: "<#FFD700>⏱ <#FFFFFF><quest><#AAAAAA>: <#FFD700><remaining>"
timer-hud-bossbar: "<#FFFFFF><quest> <#888888>(<#FFD700><remaining><#888888>)"
timer-hud-chat: "<prefix> <#FFAA00>⏱ <#FFFFFF><quest><#AAAAAA>: <#FFD700><remaining> <#AAAAAA>left"

# Timed quests
quest-timer-started: "<prefix> <#55FF55>Timer started for <#FFFFFF><quest><#55FF55>. You have <#FFFFFF><minutes> <#55FF55>minute(s)."
quest-timer-not-started: "<prefix> <#FFAA00>Right-click the paper to start the timer for <#FFFFFF><quest><#FFAA00> before you can progress."
quest-timer-warning: "<prefix> <#FFAA00>⚠ <#FFFFFF><quest> <#FFAA00>has <#FFFFFF><remaining> <#FFAA00>left!"
quest-timer-overtime: "<prefix> <#FF5555>Time is up for <#FFFFFF><quest><#FF5555>. You can still finish, but rewards are reduced."
quest-timer-consolation: "<prefix> <#FFAA00>Time ran out for <#FFFFFF><quest><#FFAA00>. Consolation rewards granted."
quest-timer-consolation-failed: "<prefix> <#FF5555>Time ran out for <#FFFFFF><quest><#FF5555>, but consolation rewards could not be granted. Will retry."
quest-timer-expired-fail: "<prefix> <#FF5555>Time ran out for <#FFFFFF><quest><#FF5555>. The quest has failed."

# ════════════════════════════════════════════════════════════════════════════
# RANDOM QUEST GENERATOR
# ════════════════════════════════════════════════════════════════════════════

random-generator-disabled: "<prefix> <#FF5555>Random quest generation is disabled."
random-generator-config-missing: "<prefix> <#FFAA00>random-generator.yml is missing or invalid. Ensure settings are under <#FFFFFF>random-generator:<#FFAA00> with <#FFFFFF>enabled: true<#FFAA00>. Run <#FFFFFF>/sq reload<#FFAA00> after fixing."
random-generator-success: "<prefix> <#55FF55>✓ Quest generated: <#FFFFFF><quest><#55FF55>."
random-generator-batch-success: "<prefix> <#55FF55>✓ Generated <#FFFFFF><count> <#55FF55><type> quest(s). <#AAAAAA>(<#FFFFFF><failed> <#AAAAAA>failed)"
random-generator-batch-complete: "<prefix> <#55FF55>✓ Successfully generated <#FFFFFF><count> <#55FF55><type> quest(s)."
random-generator-batch-too-many: "<prefix> <#FF5555>Cannot generate more than <#FFFFFF><max> <#FF5555>quests at once."
random-generator-batch-invalid-count: "<prefix> <#FF5555>Invalid count. Must be a number between <#FFFFFF>1 <#FF5555>and <#FFFFFF><max><#FF5555>."
random-generator-error: "<prefix> <#FF5555>✗ Failed to generate quest."
random-generator-filters-applied: "<prefix> <#AAAAAA>Filters: <#FFFFFF><filters>"
random-generator-invalid-objective: "<prefix> <#FF5555>Unknown objective or template: <#FFFFFF><objective><#FF5555>."
random-generator-usage: "<prefix> <#AAAAAA>Usage: <#FFFFFF>/sq generate [type] [amount|count] [objective] [min] [max] [difficulty] [tier] [material]<#AAAAAA>. Use <#FFFFFF>-<#AAAAAA> for a random slot."
random-generator-template-single-only: "<prefix> <#FF5555>Template <#FFFFFF><objective> <#FF5555>can only be used with <#FFFFFF>single<#FF5555> quests."
random-generator-invalid-min-amount: "<prefix> <#FF5555>Invalid min amount: <#FFFFFF><value><#FF5555>."
random-generator-invalid-max-amount: "<prefix> <#FF5555>Invalid max amount: <#FFFFFF><value><#FF5555>."
random-generator-invalid-amount-range: "<prefix> <#FF5555>Min amount (<#FFFFFF><min><#FF5555>) cannot exceed max (<#FFFFFF><max><#FF5555>)."
random-generator-invalid-difficulty: "<prefix> <#FF5555>Unknown difficulty: <#FFFFFF><difficulty><#FF5555>."
random-generator-invalid-tier: "<prefix> <#FF5555>Unknown tier: <#FFFFFF><tier><#FF5555>."
random-generator-invalid-material: "<prefix> <#FF5555>Unknown quest material: <#FFFFFF><material><#FF5555>."
random-generator-too-many-args: "<prefix> <#FF5555>Too many generate arguments."
random-generator-unrecognized-arg: "<prefix> <#FF5555>Unrecognized argument: <#FFFFFF><arg><#FF5555>."
random-generator-cooldown: "<prefix> <#FF5555>Wait <#FFFFFF><remaining>s <#FF5555>before generating another quest."
random-generator-load-failed: "<prefix> <#FF5555>The quest was generated but could not be loaded. Check the server logs."
random-generator-give-hint: "<prefix> <#AAAAAA>Use <#FFFFFF>/sq give <player> <quest> <#AAAAAA>to give this quest to a player."
random-generator-reload-hint: "<prefix> <#FFAA00>Run <#FFFFFF>/sq reload <#FFAA00>to update lore and rewards on existing papers."
random-generator-editor-hint: "<prefix> <#AAAAAA>Use <#FFFFFF>/sq editor <#AAAAAA>to browse and manage generated quests."

# ════════════════════════════════════════════════════════════════════════════
# STATISTICS SYSTEM
# ════════════════════════════════════════════════════════════════════════════

# Statistics Display
statistic-header: "<gradient:#FFAA00:#555555><st>━━━━</st></gradient> <gradient:#FFD700:#FF8C00>SoapsQuest Statistics</gradient> <#AAAAAA>for <#FFFFFF><player> <gradient:#555555:#FFAA00><st>━━━━</st></gradient>"
statistic-total: "<#AAAAAA>Total Quests Completed: <gradient:#55FF55:#55FFFF><total></gradient>"
statistic-rewards: "<#AAAAAA>Rewards Claimed: <gradient:#55FF55:#55FFFF><claimed></gradient>"
statistic-footer: "<gradient:#FFAA00:#555555:#FFAA00><st>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</st></gradient>"
statistic-no-data: "<prefix> <#AAAAAA>No statistics found for player '<#FFFFFF><player><#AAAAAA>'."
statistic-other-no-permission: "<prefix> <#FF5555>You don't have permission to view other players' statistics."

# ════════════════════════════════════════════════════════════════════════════
# RECURRING QUESTS (DAILY/WEEKLY)
# ════════════════════════════════════════════════════════════════════════════

# Reset notifications
recurring-quest-reset-daily: "<#55FF55>✓ <gradient:#55FF55:#00FF88>Daily quests have been reset. New quests are available!</gradient>"
recurring-quest-reset-weekly: "<#FFAA00>✓ <gradient:#FFAA00:#FF8C00>Weekly quests have been reset. New weekly quests are available.</gradient>"

# Title notifications (if using title mode)
recurring-quest-reset-daily-title: "<gradient:#55FF55:#00FF88><bold>Daily Quests Reset</bold></gradient>"
recurring-quest-reset-daily-subtitle: "<gradient:#AAAAAA:#CCCCCC>New quests are available</gradient>"
recurring-quest-reset-weekly-title: "<gradient:#FFAA00:#FF8C00><bold>Weekly Quests Reset</bold></gradient>"
recurring-quest-reset-weekly-subtitle: "<gradient:#AAAAAA:#CCCCCC>New weekly quests are available</gradient>"

# Quest received messages
recurring-quest-received-daily: "<prefix> <#55FF55>✓ Received <count> daily quest(s)."
recurring-quest-received-weekly: "<prefix> <#FFAA00>✓ Received <count> weekly quest(s)."
recurring-quest-daily-bonus: "<prefix> <#55FF55>★ Daily completion bonus claimed!"
recurring-quest-weekly-bonus: "<prefix> <#FFAA00>★ Weekly completion bonus claimed!"

# No eligible quests
recurring-quest-no-daily: "<prefix> <#AAAAAA>You have already received all available daily quests."
recurring-quest-no-weekly: "<prefix> <#AAAAAA>You have already received all available weekly quests."

# VIP required
recurring-quest-vip-required: "<prefix> <#FF5555>This recurring quest requires VIP access."

# Debug Mode Messages
debug-mode-enabled: "<prefix> <gradient:#55FFFF:#55FF55>Debug mode enabled.</gradient> <#AAAAAA>Console will now show detailed debug messages."
debug-mode-disabled: "<prefix> <gradient:#55FFFF:#55FF55>Debug mode disabled.</gradient> <#AAAAAA>Console debug messages are now hidden."

# ════════════════════════════════════════════════════════════════════════════
# QUEST TYPE LABELS
# ════════════════════════════════════════════════════════════════════════════

quest-type-sequential: "<gradient:#FFD700:#FFA500>Sequential</gradient> <#AAAAAA>(Complete in order)"
quest-type-single: "<gradient:#55FF55:#00FF55>Single</gradient> <#AAAAAA>(One objective)"
quest-type-multi: "<gradient:#55FFFF:#5599FF>Multi</gradient> <#AAAAAA>(Any order)"

# Objective list headers
objectives-header-sequential: "<gradient:#FFD700:#FFA500>Objectives</gradient> <#AAAAAA>(Complete in order):"
objectives-header-multi: "<gradient:#55FFFF:#5599FF>Objectives</gradient> <#AAAAAA>(Any order):"
objectives-divider: "<#AAAAAA><st>                    </st>"

# ════════════════════════════════════════════════════════════════════════════
# QUEST REWARD MESSAGES (Quest as Reward)
# ════════════════════════════════════════════════════════════════════════════

reward-quest-failed-unknown: "<prefix> <#FF5555><bold>✗</bold> <#FF5555>Reward failed: <#AAAAAA>Unknown quest <#FFFFFF><quest>"
reward-quest-failed-creation: "<prefix> <#FF5555><bold>✗</bold> <#FF5555>Reward failed: <#AAAAAA>Could not create quest paper"
reward-quest-inventory-full: "<prefix> <#FFD700><bold>⚠</bold> <#AAAAAA>Your inventory is full! Quest paper dropped at your feet."
reward-quest-received: "<prefix> <#55FF55><bold>✓</bold> <#55FF55>You received a new quest: <#FFFFFF><quest>"

# ════════════════════════════════════════════════════════════════════════════
# ADMIN / COMMAND MESSAGES
# ════════════════════════════════════════════════════════════════════════════

give-instance-failed: "<prefix> <#FF5555>Failed to create quest instance."
reload-aborted-header: "<prefix> <#FF5555>Reload aborted! Found <#FFFFFF><count> <#FF5555>error(s) in quests.yml:"
reload-aborted-item: "  <#FF5555>• <#AAAAAA><error>"
reload-aborted-footer: "<#AAAAAA>Fix the errors above and try again. Old config is still active."
reload-syntax-header: "<prefix> <#FF5555>Reload aborted! quests.yml has syntax errors:"
reload-syntax-item: "  <#FF5555>• <#AAAAAA><error>"
reload-syntax-footer: "<#AAAAAA>Fix the YAML syntax and try again. Old config is still active."
usage-remove: "<prefix> <#FF5555>Usage: <#FFFFFF>/sq remove <questId>"
remove-success: "<prefix> <#55FF55>Quest '<#FFFFFF><quest><#55FF55>' has been removed from config."
remove-failed: "<prefix> <#FF5555>Failed to remove quest '<#FFFFFF><quest><#FF5555>'!"
usage-copy: "<prefix> <#FF5555>Usage: <#FFFFFF>/sq copy <sourceQuestId> <newQuestId>"
copy-exists: "<prefix> <#FF5555>A quest with ID '<#FFFFFF><quest><#FF5555>' already exists."
copy-success: "<prefix> <#55FF55>Quest '<#FFFFFF><source><#55FF55>' copied to '<#FFFFFF><quest><#55FF55>'!"
copy-editor-hint: "<#AAAAAA>Use /sq editor <quest> to edit the copy."
copy-failed: "<prefix> <#FF5555>Failed to copy quest. Check server logs."
usage-reset: "<prefix> <#FF5555>Usage: <#FFFFFF>/sq reset <player> <questId>"
reset-success: "<prefix> <#55FF55>Reset <#FFFFFF><player><#55FF55>'s progress for quest '<#FFFFFF><quest><#55FF55>'."
reset-not-found: "<prefix> <#FF5555><#FFFFFF><player> <#FF5555>does not have an active paper for '<#FFFFFF><quest><#FF5555>'."
usage-complete: "<prefix> <#FF5555>Usage: <#FFFFFF>/sq complete <player> <questId>"
complete-notify-target: "<prefix> <#55FF55>An admin has completed quest '<#FFFFFF><quest><#55FF55>' for you!"
complete-success: "<prefix> <#55FF55>Force-completed '<#FFFFFF><quest><#55FF55>' for <#FFFFFF><player><#55FF55>."
complete-not-found: "<prefix> <#FF5555><#FFFFFF><player> <#FF5555>does not have an active paper for '<#FFFFFF><quest><#FF5555>'."
sigils-unavailable: "<prefix> <#FF5555>Sigil manager is unavailable."
usage-sigils: "<prefix> <#FF5555>Usage: <#FFFFFF>/sq sigils <give|take|set|reset|balance> <player> [amount]"
sigils-balance: "<prefix> <#55FF55><player> has <#FFFFFF><amount> <#55FF55>sigils."
sigils-reset-success: "<prefix> <#55FF55>Reset sigils for <#FFFFFF><player><#55FF55>."
sigils-usage-amount: "<prefix> <#FF5555>Usage: <#FFFFFF>/sq sigils <give|take|set> <player> <amount>"
sigils-invalid-amount: "<prefix> <#FF5555>Invalid amount: <#FFFFFF><amount>"
sigils-updated: "<prefix> <#55FF55>Sigils updated for <#FFFFFF><player><#55FF55>. New balance: <#FFFFFF><balance>"
sigils-unknown-action: "<prefix> <#FF5555>Unknown sigil action."
usage-spawnpaper: "<prefix> <#FF5555>Usage: <#FFFFFF>/sq spawnpaper <questId> [x y z [world]] | /sq spawnpaper entity <entity|uuid> <questId>"
usage-spawnpaper-entity: "<prefix> <#FF5555>Usage: <#FFFFFF>/sq spawnpaper entity <entity|uuid> <questId>"
usage-drop: "<prefix> <#FF5555>Usage: <#FFFFFF>/sq drop <questId> ... <#AAAAAA>(alias for spawnpaper)"
usage-drop-entity: "<prefix> <#FF5555>Usage: <#FFFFFF>/sq drop entity <entity|uuid> <questId> <#AAAAAA>(alias for spawnpaper)"
usage-claim: "<prefix> <#FF5555>Usage: <#FFFFFF>/sq claim <questId>"
drop-entity-not-found: "<prefix> <#FF5555>Entity not found: <#FFFFFF><entity>"
drop-coords-invalid: "<prefix> <#FF5555>Coordinates must be numbers."
drop-console-world: "<prefix> <#FF5555>Console must specify a world: /sq drop <questId> <x> <y> <z> <world>"
drop-world-not-found: "<prefix> <#FF5555>World not found."
drop-console-coords: "<prefix> <#FF5555>Console must provide coordinates."
drop-success: "<prefix> <#55FF55>Spawned quest paper for '<#FFFFFF><quest><#55FF55>' at the target location."
spawnpaper-success: "<prefix> <#55FF55>Spawned quest paper for '<#FFFFFF><quest><#55FF55>' at the target location."
usage-progress: "<prefix> <#FF5555>Usage: <#FFFFFF>/sq progress [player]"
progress-header: "<prefix> <gradient:#FFD700:#FFAA00><bold>Quest progress</bold></gradient> <#AAAAAA>for <#FFFFFF><player>"
progress-entry: "  <#555555>• <#FFFFFF><quest> <#888888>(<status>)<#AAAAAA>: <#FFD700><progress>"
progress-empty: "<prefix> <#AAAAAA>No active quest papers for <#FFFFFF><player><#AAAAAA>."
help-progress: "  <#55FF55>/sq progress [player] <#AAAAAA>→ View quest progress in chat"

gui.yml

# ##############################################################
# #                                                            #
# #                      SoapsQuest                            #
# #                                                            #
# #           Created by: AlternativeSoap                      #
# #           Website:    www.SoapsUniverse.com                #
# #           Support:    https://discord.gg/mawAzwFq          #
# #                                                            #
# ##############################################################

# ══════════════════════════════════════════════════════════════════════
# SoapsQuest GUI Configuration
# All inventory menus are configured here
# ══════════════════════════════════════════════════════════════════════
#
# Suite GUI: config.yml -> gui.enabled is the master kill-switch for this plugin's
# inventory UIs. This file defines menu layout (titles, sizes, items). Text may use
# MiniMessage; legacy & and § are accepted where documented.
# SoapsAdmin uses a gui/ folder for many menus (advanced suite layout).
#

# Quest Browser GUI - Browse and receive quest papers
quest-browser:
  title: "&6&lSoapsQuest &7| Quest Browser"
  size: 54
  fill-empty: true
  filler-item:
    material: GRAY_STAINED_GLASS_PANE
    name: "&7"
  next-page:
    material: LIME_DYE
    name: "&aNext Page"
    lore:
      - "&7Click to view next page"
    slot: 53
  prev-page:
    material: RED_DYE
    name: "&cPrevious Page"
    lore:
      - "&7Click to view previous page"
    slot: 45
  close-button:
    material: BARRIER
    name: "&cClose"
    lore:
      - "&7Click to close"
    slot: 49
  editor-button:
    material: BOOKSHELF
    name: "&dQuest Editor"
    lore:
      - "&7Open the Quest Editor GUI"
      - ""
    slot: 50
  contract-button:
    material: WRITABLE_BOOK
    name: "&6Get a Contract"
    lore:
      - "&7Open the contract board."
      - "&7Pick a difficulty and confirm."
      - ""
      - "&eClick to open"
    slot: 51
  quest-item:
    material: WRITABLE_BOOK
    display: "&e<quest_display>"
    lore:
      - "&7<quest_description>"
      - ""
      - "&8Type: &f<quest_type>"
      - "&8Difficulty: &f<quest_difficulty>"
      - "&8Tier: &f<quest_tier>"
      - ""
      - "&7Objectives: &f<quest_objective_count>"
      - "&7Conditions: &f<quest_condition_count>"
      - "&7Rewards: &f<quest_reward_count>"
      - "&7Origin: &f<quest_origin>"
      - ""
      - "&aClick to receive quest paper"
  layout:
    quest-slots: [10,11,12,13,14,15,16,19,20,21,22,23,24,25,28,29,30,31,32,33,34]

# Contract Request Board (Premium): pick difficulty, see cost, confirm
contract-request:
  title: "&6&lSoapsQuest &7| Contract"
  size: 27
  fill-empty: true
  filler-item:
    material: GRAY_STAINED_GLASS_PANE
    name: "&7"
  info-item:
    material: BOOK
    name: "&6&lContract Board"
    lore:
      - "&7Choose a difficulty, then confirm."
    slot: 4
  confirm-button:
    material: LIME_CONCRETE
    name: "&a&lConfirm"
    lore:
      - "&7Take this contract"
    slot: 22
  cancel-button:
    material: BARRIER
    name: "&cCancel"
    lore:
      - "&7Close without buying"
    slot: 24
  layout:
    difficulty-slots: [10, 11, 12, 13, 14, 15, 16]

# Quest Editor Main Menu - Edit existing quests
quest-editor:
  title: "&6&lSoapsQuest &7| Quest Editor"
  size: 54
  fill-empty: true
  filler-item:
    material: GRAY_STAINED_GLASS_PANE
    name: "&7"
  back-button:
    material: ARROW
    name: "&e&l← Back to Quest Browser"
    lore:
      - "&7Return to the quest list"
    slot: 45
  prev-page:
    material: RED_DYE
    name: "&cPrevious Page"
    lore:
      - "&7Click to view previous page"
    slot: 46
  close-button:
    material: BARRIER
    name: "&cClose"
    slot: 49
  next-page:
    material: LIME_DYE
    name: "&aNext Page"
    lore:
      - "&7Click to view next page"
    slot: 52
  add-quest:
    enabled: true
    material: EMERALD_BLOCK
    name: "&aCreate New Quest"
    lore:
      - "&7Start a new quest wizard"
    slot: 48
  layout:
    quest-slots: [10,11,12,13,14,15,16,19,20,21,22,23,24,25,28,29,30,31,32,33,34]

# Quest Details Editor - Edit specific quest
quest-details:
  title: "&6&lSoapsQuest &7| Edit: <quest_name>"
  size: 54
  fill-empty: true
  filler-item:
    material: GRAY_STAINED_GLASS_PANE
    name: "&7"
  back-button:
    material: ARROW
    name: "&7← Back"
    lore:
      - "&7Return to quest editor"
    slot: 45
  save-button:
    material: EMERALD
    name: "&a✓ Close"
    lore:
      - "&7Changes are saved instantly!"
      - "&7Click to see summary and close"
    slot: 53
  edit-display:
    material: NAME_TAG
    name: "&eEdit Display Name"
    lore:
      - "&7Current: &f<quest_display>"
      - ""
      - "&aClick to change"
    slot: 11
  edit-description:
    material: WRITABLE_BOOK
    name: "&eEdit Description"
    lore:
      - "&7Current: &f<quest_description>"
      - ""
      - "&aClick to change"
    slot: 13
  edit-type:
    material: COMPASS
    name: "&eEdit Type"
    lore:
      - "&7Current: &f<quest_type>"
      - ""
      - "&aClick to change"
    slot: 15
  edit-difficulty:
    material: IRON_SWORD
    name: "&eEdit Difficulty"
    lore:
      - "&7Current: &f<quest_difficulty>"
      - ""
      - "&aClick to cycle"
    slot: 20
  edit-tier:
    material: DIAMOND
    name: "&eEdit Tier"
    lore:
      - "&7Current: &f<quest_tier>"
      - ""
      - "&aClick to cycle"
    slot: 22
  toggle-lock:
    material: TRIPWIRE_HOOK
    name: "&eBind to one player"
    lore:
      - "&7Status: &f<lock_status>"
      - ""
      - "&7When enabled, only the bound player"
      - "&7can pick up this quest paper."
      - ""
      - "&aClick to toggle"
    slot: 24
  edit-material:
    material: ITEM_FRAME
    name: "&eEdit Material"
    lore:
      - "&7Change the material used for this quest's physical item."
      - "&7Current: &f<quest_material>"
      - "&7Default: PAPER"
      - ""
      - "&eClick to enter a new material name."
      - "&7Example: 'BOOK', 'DIAMOND', or 'HAND'"
    slot: 29
  edit-objectives:
    material: TARGET
    name: "&eEdit Objectives"
    lore:
      - "&7Objectives: &f<quest_objective_count>"
      - ""
      - "&aClick to edit"
    slot: 31
  edit-conditions:
    material: REDSTONE_TORCH
    name: "&eEdit Conditions"
    lore:
      - "&7Conditions: &f<quest_condition_count>"
      - ""
      - "&aClick to edit"
    slot: 33
  edit-rewards:
    material: CHEST
    name: "&eEdit Rewards"
    lore:
      - "&7Rewards: &f<quest_reward_count>"
      - ""
      - "&aClick to edit"
    slot: 40
  edit-timer:
    material: CLOCK
    name: "&eTimer"
    lore:
      - "&7Optional time limit for this quest"
      - ""
      - "&eLeft-click &7cycle start: off / receive / activate"
      - "&eShift-click &7cycle on-expire"
      - "&eRight-click &7set minutes"
    slot: 38
  edit-fail-rewards:
    material: SOUL_LANTERN
    name: "&eFail Rewards"
    lore:
      - "&7Same types as success rewards"
      - "&7Used for consolation / overtime"
      - ""
      - "&aClick to edit"
    slot: 42
  delete-quest:
    material: BARRIER
    name: "&cDelete Quest"
    lore:
      - "&7Permanently removes this quest"
      - "&7from quests.yml"
      - ""
      - "&c⚠ This cannot be undone!"
      - ""
      - "&eClick to delete"
      - "&7Type 'confirm' in chat to proceed"
    slot: 49

# Objective Editor - Manage quest objectives
objective-editor:
  title: "&6&lSoapsQuest &7| Objectives: <quest_name>"
  size: 54
  fill-empty: true
  filler-item:
    material: GRAY_STAINED_GLASS_PANE
    name: "&7"
  back-button:
    material: ARROW
    name: "&7← Back"
    slot: 45
  add-objective:
    material: LIME_DYE
    name: "&a+ Add Objective"
    lore:
      - "&7Click to add a new objective"
    slot: 49
  layout:
    objective-slots: [10,11,12,13,14,15,16,19,20,21,22,23,24,25,28,29,30,31,32,33,34]

# Condition Editor - Manage quest conditions
condition-editor:
  title: "&6&lSoapsQuest &7| Conditions: <quest_name>"
  size: 54
  fill-empty: true
  filler-item:
    material: GRAY_STAINED_GLASS_PANE
    name: "&7"
  back-button:
    material: ARROW
    name: "&7← Back"
    slot: 45
  add-condition:
    material: LIME_DYE
    name: "&a+ Add Condition"
    lore:
      - "&7Click to add a new condition"
    slot: 49
  layout:
    condition-slots: [10,11,12,13,14,15,16,19,20,21,22,23,24,25,28,29,30,31,32,33,34]

# Reward Editor - Manage quest rewards
reward-editor:
  title: "&6&lSoapsQuest &7| Rewards: <quest_name>"
  size: 54
  fill-empty: true
  filler-item:
    material: GRAY_STAINED_GLASS_PANE
    name: "&7"
  back-button:
    material: ARROW
    name: "&7← Back"
    slot: 45
  add-reward:
    material: LIME_DYE
    name: "&a+ Add Reward"
    lore:
      - "&7Click to add a new reward"
    slot: 49
  layout:
    reward-slots: [10,11,12,13,14,15,16,19,20,21,22,23,24,25,28,29,30,31,32,33,34]

# Objective Type Selector
objective-type-selector:
  title: "&6&lSoapsQuest &7| Select Objective Type"
  size: 54
  fill-empty: true
  filler-item:
    material: GRAY_STAINED_GLASS_PANE
    name: "&7"
  back-button:
    material: ARROW
    name: "&7← Cancel"
    slot: 49
  layout:
    type-slots: [10,11,12,13,14,15,16,19,20,21,22,23,24,25,28,29,30,31,32,33,34,37,38,39,40,41,42,43]

# Condition Type Selector
condition-type-selector:
  title: "&6&lSoapsQuest &7| Select Condition Type"
  size: 45
  fill-empty: true
  filler-item:
    material: GRAY_STAINED_GLASS_PANE
    name: "&7"
  back-button:
    material: ARROW
    name: "&7← Cancel"
    slot: 40
  layout:
    type-slots: [10,11,12,13,14,15,16,19,20,21,22,23,24,25,28,29,30,31,32,33,34]

# Reward Type Selector
reward-type-selector:
  title: "&6&lSoapsQuest &7| Select Reward Type"
  size: 45
  fill-empty: true
  filler-item:
    material: GRAY_STAINED_GLASS_PANE
    name: "&7"
  back-button:
    material: ARROW
    name: "&7← Cancel"
    slot: 40
  layout:
    type-slots: [10,11,12,13,14,15,16,19,20,21,22,23,24,25,28,29,30,31,32,33,34]

tiers.yml

# ##############################################################
# #                      SoapsQuest                            #
# #           Created by: AlternativeSoap                      #
# #           Website:    www.SoapsUniverse.com                #
# #           Support:    https://discord.gg/mawAzwFq          #
# ##############################################################
#
# Quest rarity tiers (file order = GUI order).
# Used by quests.yml, the Premium generator, and browser filters.
#
#   display / prefix / color — player-facing (& codes or MiniMessage)
#   weight — relative generator chance (must be > 0); higher = more common
#   description — GUI tooltip when cycling / listing tiers
#
# Approx. roll odds with defaults below (total weight 103):
#   common ~47% · uncommon ~27% · rare ~14% · epic ~7% · legendary ~3% · mythic ~1%

tiers:
  common:
    display: "<white>Common</white>"
    prefix: "<dark_gray>[</dark_gray><white>COMMON</white><dark_gray>]</dark_gray>"
    color: "&f"
    weight: 48
    description: "&7Everyday quests. Solid starter progress."

  uncommon:
    display: "<green>Uncommon</green>"
    prefix: "<dark_gray>[</dark_gray><green>UNCOMMON</green><dark_gray>]</dark_gray>"
    color: "&a"
    weight: 28
    description: "&aA step up — better pay for a bit more work."

  rare:
    display: "<blue>Rare</blue>"
    prefix: "<dark_gray>[</dark_gray><blue>RARE</blue><dark_gray>]</dark_gray>"
    color: "&9"
    weight: 14
    description: "&9Worth hunting down for stronger rewards."

  epic:
    display: "<light_purple>Epic</light_purple>"
    prefix: "<dark_gray>[</dark_gray><light_purple>EPIC</light_purple><dark_gray>]</dark_gray>"
    color: "&d"
    weight: 7
    description: "&dHarder runs with substantial loot."

  legendary:
    display: "<gold>Legendary</gold>"
    prefix: "<dark_gray>[</dark_gray><gold>LEGENDARY</gold><dark_gray>]</dark_gray>"
    color: "&6"
    weight: 3
    description: "&6Prestige quests for dedicated players."

  mythic:
    display: "<bold><#FF55FF>Mythic</#FF55FF></bold>"
    prefix: "<dark_gray>[</dark_gray><bold><#FF55FF>MYTHIC</#FF55FF></bold><dark_gray>]</dark_gray>"
    color: "&d"
    weight: 1
    description: "&d&lRarest rolls. Expect a real fight."

difficulties.yml

# ##############################################################
# #                                                            #
# #                      SoapsQuest                            #
# #                                                            #
# #           Created by: AlternativeSoap                      #
# #           Website:    www.SoapsUniverse.com                #
# #           Support:    https://discord.gg/mawAzwFq          #
# #                                                            #
# ##############################################################

# ════════════════════════════════════════════════════════════════════════════
# SoapsQuest - Difficulty System
# ════════════════════════════════════════════════════════════════════════════
#
# Difficulties scale quest objectives and rewards. You can add, remove, or
# rename difficulties freely — the plugin loads them in the order listed here.
#
# Fields per difficulty:
#   display   — Name shown to players (supports & color codes and MiniMessage)
#   color     — Base color code used in generic difficulty text / placeholders
#   weight    — Relative spawn weight (higher = more common). Must be > 0.
#   description — Shown in tooltips / GUIs (supports & color codes)
#   multiplier:
#     objective-amount — Scales the required amount on all objectives
#                        (0.75 = 25% fewer targets, 2.0 = double targets)
#     reward          — Scales all quest rewards by this factor
#                        (0.75 = 25% less loot, 2.0 = double loot)
#
# Tip: Order matters — difficulties are displayed in GUIs exactly as listed here.
# ════════════════════════════════════════════════════════════════════════════

difficulties:
  easy:
    display: "&aEasy"
    color: "&a"
    weight: 50
    description: "&aGreat for beginners. Fewer objectives and lighter rewards."
    multiplier:
      objective-amount: 0.75
      reward: 0.75

  normal:
    display: "&eNormal"
    color: "&e"
    weight: 35
    description: "&eBalanced objectives and rewards."
    multiplier:
      objective-amount: 1.0
      reward: 1.0

  hard:
    display: "&cHard"
    color: "&c"
    weight: 20
    description: "&cMore demanding objectives with noticeably better rewards."
    multiplier:
      objective-amount: 1.5
      reward: 1.5

  expert:
    display: "&6Expert"
    color: "&6"
    weight: 10
    description: "&6Hard objectives with better rewards. For seasoned players."
    multiplier:
      objective-amount: 2.0
      reward: 2.0

  nightmare:
    display: "&4&lNightmare"
    color: "&4"
    weight: 5
    description: "&4&lExtreme objectives and extreme rewards."
    multiplier:
      objective-amount: 2.5
      reward: 2.5

daily.yml

# ##############################################################
# #                      SoapsQuest                            #
# #           Created by: AlternativeSoap                      #
# #           Website:    www.SoapsUniverse.com                #
# #           Support:    https://discord.gg/mawAzwFq          #
# ##############################################################
#
# Daily & Weekly recurring quests (Premium only)
#
# Quest IDs must exist under quests: in quests.yml.
# Quests with root permission: are only given to players who have it.
# On reset, online players are notified and get new papers.
# Players who join mid-cycle receive any they have not gotten yet.
# Completing every quest given this cycle can grant bonus.reward.

settings:
  join-delay-ticks: 40          # After join before assigning (40 = 2s)
  give-delay-ticks: 20          # After reset before giving papers (20 = 1s)

# Message text: messages.yml → recurring-quest-reset-*
notifications:
  mode: actionbar               # actionbar | chat | title | bossbar | none
  sound:
    enabled: true
    type: ENTITY_PLAYER_LEVELUP
    volume: 1.0
    pitch: 1.0

# ── Daily — resets every day at schedule.time (server timezone) ─────────────
daily:
  enabled: false
  schedule:
    time: "06:00"               # HH:mm (24-hour)
  pool:
    # Easy / short quests from quests.yml — avoid showcase_* demos
    quests:
      - lumberjack
      - zombie_slayer
      - gone_fishing
      - baker
      - shepherd
      - sigil_training
    mode: random                # random = shuffle pick | ordered = first N in list
    count: 2                    # Quests each player gets per day
  bonus:
    enabled: true               # When all of that day's given quests are claimed
    reward:
      xp: 200
      sigils: 30
      money: 150

# ── Weekly — resets on schedule.day at schedule.time ────────────────────────
weekly:
  enabled: false
  schedule:
    day: MONDAY                 # MONDAY … SUNDAY
    time: "06:00"
  pool:
    # Longer / harder set — nether_explorer uses min-level (locked until met)
    quests:
      - iron_miner
      - mob_hunter
      - diamond_rush
      - nether_explorer
      - master_builder
    mode: random
    count: 2
  bonus:
    enabled: true
    reward:
      xp: 800
      sigils: 120
      money: 500

random-generator.yml

# ##############################################################
# #                                                            #
# #                      SoapsQuest                            #
# #                                                            #
# #           Created by: AlternativeSoap                      #
# #           Website:    www.SoapsUniverse.com                #
# #           Support:    https://discord.gg/mawAzwFq          #
# #                                                            #
# ##############################################################

# ════════════════════════════════════════════════════════════════════════════
# SoapsQuest — Random Quest Generator (Premium)
# ════════════════════════════════════════════════════════════════════════════
#
# Commands: /sq generate [type] [count|amount] [objective] [min] [max] [difficulty] [tier] [material]
# After type, a lone number is objective amount (e.g. /sq generate single 20). Use "-" for a random slot.
# Permission: soapsquest.generate
#
# Generated quests save to save-location (default: generated.yml).
# Give papers with /sq give <player> <quest_id> after generating.
#
# ─── OBJECTIVE TEMPLATE FIELDS ───────────────────────────────────────────────
#   objective   Canonical type (kill, break, collect, bowshoot, …)
#   target      Entity, block, item, or list thereof
#   amount      Fixed number or [min, max] range
#   amount-by-difficulty   Per-difficulty min/max map
#
# ─── REWARDS ─────────────────────────────────────────────────────────────────
# reward-pool uses the same block format as quests.yml.
# When templates are defined, they take priority over tier ranges.
#
# ════════════════════════════════════════════════════════════════════════════
# SETTINGS
# ════════════════════════════════════════════════════════════════════════════

random-generator:

  enabled: true
  id-prefix: "generated_"
  generated-quest-mode: persistent   # persistent | temporary | session
  save-location: generated.yml
  allowed-types: [single, multi, sequence]

  internal-name-formats:
    single: "quest_<tier>_<objective>_<id>"
    multi: "multi_<tier>_<id>"
    sequence: "seq_<tier>_<counter>"
    default: "generated_<id>"

  # ════════════════════════════════════════════════════════════════════════════
  # TIER & DIFFICULTY POOLS
  # Empty allowed: [] = use all tiers/difficulties from tiers.yml / difficulties.yml
  # ════════════════════════════════════════════════════════════════════════════

  difficulty-pool:
    enabled: true
    allowed: []
    default: normal

  tier-pool:
    enabled: true
    allowed: []
    default: common

  milestones:
    enabled: true
    mode: tier-based                    # tier-based | random | default
    default: [25, 50, 75]
    random-pool:
      - [50]
      - [25, 75]
      - [25, 50, 75]
      - [33, 66]
    tier-based:
      common: [50]
      uncommon: [50]
      rare: [25, 75]
      epic: [25, 50, 75]
      legendary: [20, 40, 60, 80]
      mythic: [20, 40, 60, 80]

  # ════════════════════════════════════════════════════════════════════════════
  # QUEST STRUCTURE
  # ════════════════════════════════════════════════════════════════════════════

  multi-objective:
    min-objectives: 2
    max-objectives: 4

  sequence-objective:
    min-objectives: 2
    max-objectives: 4

  objective-weights:
    # Combat
    kill: 45
    bowshoot: 15
    damage: 10
    death: 3
    projectile: 10
    kill_mythicmob: 8
    # Mining & building
    break: 40
    place: 25
    interact: 8
    harvest: 12
    # Collection & crafting
    collect: 30
    craft: 30
    smelt: 20
    fish: 18
    enchant: 12
    brew: 12
    drop: 10
    # Survival
    consume: 12
    tame: 10
    shear: 10
    breed: 10
    trade: 15
    sleep: 10
    heal: 10
    # Movement
    move: 20
    jump: 12
    vehicle: 8
    # Leveling
    gainlevel: 15
    reachlevel: 10
    # Misc
    chat: 8
    firework: 5
    playtime: 6
    enter_world: 8
    kill_player: 2
    advancement: 5
    equip: 6
    smith: 6
    anvil_repair: 4
    explore_biome: 6
    elytra_fly: 5
    xp_pickup: 6
    command: 3
    placeholder: 2

  # ════════════════════════════════════════════════════════════════════════════
  # UNLOCK CONDITIONS (random requirements by tier / difficulty)
  # ════════════════════════════════════════════════════════════════════════════

  conditions:
    enabled: true

    min-level:
      enabled: true
      chance: 40
      by-tier:
        common: 0
        uncommon: 3
        rare: 10
        epic: 25
        legendary: 50
        mythic: 75
      by-difficulty:
        easy: 0
        normal: 5
        hard: 15
        expert: 20
        nightmare: 30
    
    max-level:
      enabled: false
      chance: 10
      default: 100
    
    min-money:
      enabled: true
      chance: 25
      by-tier:
        common: 100
        uncommon: 250
        rare: 500
        epic: 2000
        legendary: 10000
        mythic: 50000
    
    world:
      enabled: false
      chance: 15
      allowed-worlds:
        - world
        - world_nether
        - world_the_end
    
    gamemode:
      enabled: false
      chance: 20
      allowed-modes:
        - SURVIVAL
        - ADVENTURE
    
    time:
      enabled: false
      chance: 10
      options:
        - DAY
        - NIGHT
    
    permission:
      enabled: false
      chance: 30
      by-tier:
        common: "soapsquest.tier.common"
        uncommon: "soapsquest.tier.uncommon"
        rare: "soapsquest.tier.rare"
        epic: "soapsquest.tier.epic"
        legendary: "soapsquest.tier.legendary"
        mythic: "soapsquest.tier.mythic"
    
    cost:
      enabled: true
      chance: 20
      by-tier:
        common: 50
        uncommon: 150
        rare: 250
        epic: 1000
        legendary: 5000
        mythic: 25000
    
    item:
      enabled: false
      chance: 15
      consume-item: true
      by-tier:
        common: "IRON_INGOT:5"
        uncommon: "GOLD_INGOT:5"
        rare: "GOLD_INGOT:3"
        epic: "DIAMOND:2"
        legendary: "NETHERITE_INGOT:1"
        mythic: "NETHERITE_INGOT:3"
    
    active-limit:
      enabled: false
      chance: 5
      default: 3
    
    placeholder:
      enabled: false
      chance: 10
      expressions:
        - "%player_health% >= 15"
        - "%player_food_level% >= 10"
        - "%vault_eco_balance% >= 1000"

  # ════════════════════════════════════════════════════════════════════════════
  # QUEST PAPER MATERIAL
  # ════════════════════════════════════════════════════════════════════════════

  quest-paper-material:
    selection-mode: random
    default-material: PAPER
    random-pool:
      - material: PAPER
        weight: 55
      - material: MAP
        weight: 25
      - material: ENCHANTED_BOOK
        weight: 15
      - material: KNOWLEDGE_BOOK
        weight: 5
    tier-based:
      common:
        - PAPER
        - MAP
      rare:
        - MAP
        - ENCHANTED_BOOK
      epic:
        - ENCHANTED_BOOK
        - KNOWLEDGE_BOOK
      legendary:
        - ENCHANTED_BOOK
        - KNOWLEDGE_BOOK
        - NETHER_STAR

  # ════════════════════════════════════════════════════════════════════════════
  # DISPLAY — quest names & lore
  # Placeholders: <tier>, <tier_prefix>, <tier_color>, <difficulty>, <target>,
  #               <amount>, <type>, <objective>, <progress>
  # ════════════════════════════════════════════════════════════════════════════

  display:

    lore-style: fancy   # simple | detailed | fancy

    name-templates:
      # Combat
      kill:
        - "<gradient:#FF5555:#CC0000><target> Slayer</gradient>"
        - "<#FF4444>Hunt <white><amount></white> <target>s</#FF4444>"
        - "<gradient:#FF0000:#FF5555>Eliminate <white><amount></white> <target></gradient>"
        - "<tier_prefix> <gradient:#FF5555:#FF0000><target> Hunter</gradient>"
      
      damage:
        - "<gradient:#FF5555:#FFAA00>Damage Dealer</gradient>"
        - "<#FF4444>Deal <white><amount></white> damage</#FF4444>"
      
      bowshoot:
        - "<gradient:#FFAA00:#FFD700>Archery Challenge</gradient>"
        - "<#FFAA00>Shoot <white><amount></white> arrows</#FFAA00>"
        - "<tier_prefix> <gradient:#FFAA00:#FFD700>Marksman Trial</gradient>"
      
      # Building
      break:
        - "<#AAAAAA>Mine <white><amount></white> <target></#AAAAAA>"
        - "<gradient:#888888:#FFFFFF><target> Breaker</gradient>"
      
      place:
        - "<#55FF55>Place <white><amount></white> <target></#55FF55>"
        - "<gradient:#00CC44:#55FF55><target> Builder</gradient>"
      
      # Collection
      collect:
        - "<#FFAA00>Gather <white><amount></white> <target>s</#FFAA00>"
        - "<gradient:#FFD700:#FFAA00><target> Collector</gradient>"
      
      craft:
        - "<#00AAAA>Forge <white><amount></white> <target>s</#00AAAA>"
        - "<gradient:#55FFFF:#00AAAA>Crafting Order: <white><target></white></gradient>"
      
      fish:
        - "<#0000AA>Catch <white><amount></white> <target></#0000AA>"
        - "<gradient:#5555FF:#55FFFF>Fishing Contract</gradient>"
      
      # Smelting
      smelt:
        - "<gradient:#FF8800:#FFCC00>Smelt <white><amount></white> <target></gradient>"
        - "<#FF8800>Furnace Duty: <white><target></#FF8800>"
      
      # Enchanting & brewing
      enchant:
        - "<gradient:#AA00FF:#FF55FF>Enchant <white><amount></white> items</gradient>"
        - "<#AA00FF>Arcane Study</#AA00FF>"
      
      brew:
        - "<gradient:#FF55FF:#AA00FF>Brew <white><amount></white> potions</gradient>"
        - "<#FF55FF>Alchemist's Task</#FF55FF>"
      
      # Animals & Farming
      tame:
        - "<gradient:#55FF55:#00AA00>Tame <white><amount></white> <target></gradient>"
        - "<#55FF55>Animal Whisperer</#55FF55>"
      
      breed:
        - "<gradient:#55FF55:#FFAA00>Breed <white><amount></white> <target></gradient>"
        - "<#55FF55>Rancher's Task: <white><target></#55FF55>"
      
      shear:
        - "<gradient:#FFFFFF:#AAAAAA>Shear <white><amount></white> <target></gradient>"
        - "<#AAAAAA>Wool Gatherer</#AAAAAA>"
      
      trade:
        - "<gradient:#55FF55:#00FF00>Trade <white><amount></white> times</gradient>"
        - "<#55FF55>Merchant's Contract</#55FF55>"
      
      # Survival
      consume:
        - "<gradient:#FFAA00:#FF5555>Consume <white><amount></white> <target></gradient>"
        - "<#FFAA00>Feast or Famine</#FFAA00>"
      
      sleep:
        - "<gradient:#5555FF:#000088>Sleep <white><amount></white> nights</gradient>"
        - "<#5555FF>Rest Mandate</#5555FF>"
      
      heal:
        - "<gradient:#FF5555:#55FF55>Heal <white><amount></white> health</gradient>"
        - "<#55FF55>Recovery Mission</#55FF55>"
      
      drop:
        - "<#AAAAAA>Drop <white><amount></white> <target></#AAAAAA>"
        - "<gradient:#AAAAAA:#555555>Discard Order</#AAAAAA>"
      
      death:
        - "<gradient:#555555:#FF5555>Die <white><amount></white> times</gradient>"
        - "<#FF5555>Martyrdom</#FF5555>"
      
      # Movement
      move:
        - "<gradient:#55FFFF:#5555FF>Travel <white><amount></white> blocks</gradient>"
        - "<#55FFFF>Exploration Contract</#55FFFF>"
      
      jump:
        - "<gradient:#55FF55:#FFFF55>Jump <white><amount></white> times</gradient>"
        - "<#55FF55>Leap Challenge</#55FF55>"
      
      vehicle:
        - "<gradient:#AAAAAA:#FFFF55>Ride <white><amount></white> blocks</gradient>"
        - "<#FFFF55>Vehicle Journey</#FFFF55>"
      
      # Leveling
      gainlevel:
        - "<gradient:#55FF55:#FFFF55>Gain <white><amount></white> levels</gradient>"
        - "<#55FF55>Experience Seeker</#55FF55>"
      
      reachlevel:
        - "<gradient:#55FFFF:#55FF55>Reach level <white><amount></white></gradient>"
        - "<#55FFFF>Ascension Goal</#55FFFF>"
      
      # Misc
      chat:
        - "<gradient:#FFFF55:#FFFFFF>Send <white><amount></white> messages</gradient>"
        - "<#FFFF55>Chatterbox Challenge</#FFFF55>"
      
      firework:
        - "<gradient:#FF55FF:#FF5555>Launch <white><amount></white> fireworks</gradient>"
        - "<#FF55FF>Pyrotechnics Display</#FF55FF>"
      
      projectile:
        - "<gradient:#FFAA00:#FF5555>Launch <white><amount></white> projectiles</gradient>"
        - "<#FFAA00>Throwing Challenge</#FFAA00>"
      
      interact:
        - "<gradient:#FFFF55:#FFAA00>Interact <white><amount></white> times</gradient>"
        - "<#FFFF55>Interaction Task</#FFFF55>"

      playtime:
        - "<gradient:#55FFFF:#AAAAAA>Play for <white><amount></white> minutes</gradient>"
        - "<#55FFFF>Active Duty</#55FFFF>"

      enter_world:
        - "<gradient:#AA55FF:#55FFFF>Visit <white><target></white></gradient>"
        - "<#AA55FF>World Traveler</#AA55FF>"

      kill_player:
        - "<gradient:#FF5555:#AA0000>Defeat <white><amount></white> players</gradient>"
        - "<#FF5555>Duelist Contract</#FF5555>"

      advancement:
        - "<gradient:#FFD700:#FFFF55>Earn <white><amount></white> advancements</gradient>"
        - "<#FFD700>Achievement Hunt</#FFD700>"

      equip:
        - "<gradient:#55FF55:#FFAA00>Equip <white><target></white></gradient>"
        - "<#55FF55>Gear Up</#55FF55>"

      smith:
        - "<gradient:#AAAAAA:#FFD700>Smith <white><amount></white> items</gradient>"
        - "<#FFD700>Smithing Order</#FFD700>"

      harvest:
        - "<gradient:#55FF55:#FFFF55>Harvest <white><amount></white> <target></gradient>"
        - "<#55FF55>Crop Duty</#55FF55>"

      anvil_repair:
        - "<gradient:#AAAAAA:#FFFFFF>Repair <white><amount></white> items</gradient>"
        - "<#AAAAAA>Anvil Work</#AAAAAA>"

      elytra_fly:
        - "<gradient:#55FFFF:#FFFFFF>Glide <white><amount></white> blocks</gradient>"
        - "<#55FFFF>Elytra Flight</#55FFFF>"

      xp_pickup:
        - "<gradient:#55FF55:#FFFF55>Collect <white><amount></white> XP</gradient>"
        - "<#55FF55>Experience Gatherer</#55FF55>"

      command:
        - "<gradient:#FFAA00:#FFFF55>Run /<white><target></white></gradient>"
        - "<#FFAA00>Command Task</#FFAA00>"

      placeholder:
        - "<gradient:#AAAAAA:#55FFFF>Reach placeholder goal</gradient>"
        - "<#55FFFF>Progress Check</#55FFFF>"
      
      # Fallback for any objective type
      generic:
        - "<tier_color><tier_prefix> <type> Challenge"
        - "<tier_color><type> Challenge"
        - "<tier_color>Complete <white><amount></white> <type>"
    
    # ─────────────────────────────────────────────────────────────────────────
    # LORE STYLES (Pick one with "lore-style" above)
    # ─────────────────────────────────────────────────────────────────────────
    # Placeholders: <tier>, <tier_color>, <difficulty>, <objective>, <progress>, <amount>
    
    lore-styles:
      # ─── simple ────────────────────────────────────────────────────────────
      # Minimal design — gray borders, tier-colored label, task line, progress.
      simple:
        - "<#AAAAAA><st>\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501</st>"
        - "<tier_color>Guild Quest"
        - "<#AAAAAA>Tier: <tier>  \u2022  Difficulty: <difficulty>"
        - ""
        - "<#AAAAAA>\u27a4 <objective>"
        - ""
        - "<#55FF55>Progress: <white><progress><#AAAAAA>/<white><amount>"
        - "<#AAAAAA><st>\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501</st>"

      # ─── detailed ──────────────────────────────────────────────────────────
      # Same structure as simple but borders pick up the tier's color.
      detailed:
        - "<tier_color><st>\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501</st>"
        - "<white>The guild has a task for you."
        - "<#AAAAAA>Tier: <tier>  \u2022  Difficulty: <difficulty>"
        - ""
        - "<#AAAAAA>\u27a4 <objective>"
        - ""
        - "<#55FF55>Progress: <white><progress><#AAAAAA>/<white><amount>"
        - "<tier_color><st>\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501</st>"

      # ─── fancy ─────────────────────────────────────────────────────────────
      # Per-tier flavor text and tier-matched border colors.
      # Mirrors the visual style of manually authored quests in quests.yml.
      fancy:
        common:
          - "<#AAAAAA><st>\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501</st>"
          - "<white>A task from the guild."
          - "<#AAAAAA>Tier: <tier>  \u2022  Difficulty: <difficulty>"
          - ""
          - "<#AAAAAA>\u27a4 <objective>"
          - ""
          - "<#55FF55>Progress: <white><progress><#AAAAAA>/<white><amount>"
          - "<#AAAAAA><st>\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501</st>"

        uncommon:
          - "<#00AA00><st>\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501</st>"
          - "<white>The guild requires your skill."
          - "<#AAAAAA>Tier: <tier>  \u2022  Difficulty: <difficulty>"
          - ""
          - "<#AAAAAA>\u27a4 <objective>"
          - ""
          - "<#55FF55>Progress: <white><progress><#AAAAAA>/<white><amount>"
          - "<#00AA00><st>\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501</st>"

        rare:
          - "<#5555FF><st>\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501</st>"
          - "<white>A rare contract has been issued."
          - "<#AAAAAA>Tier: <tier>  \u2022  Difficulty: <difficulty>"
          - ""
          - "<#AAAAAA>\u27a4 <objective>"
          - ""
          - "<#55FF55>Progress: <white><progress><#AAAAAA>/<white><amount>"
          - "<#5555FF><st>\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501</st>"

        epic:
          - "<#AA00FF><st>\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501</st>"
          - "<white>An epic challenge looms."
          - "<#AAAAAA>Tier: <tier>  \u2022  Difficulty: <difficulty>"
          - ""
          - "<#AAAAAA>\u27a4 <objective>"
          - ""
          - "<#55FF55>Progress: <white><progress><#AAAAAA>/<white><amount>"
          - "<#AA00FF><st>\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501</st>"

        legendary:
          - "<#FFAA00><st>\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501</st>"
          - "<white><bold>A legendary deed is called for.</bold>"
          - "<#AAAAAA>Tier: <tier>  \u2022  Difficulty: <difficulty>"
          - ""
          - "<#AAAAAA>\u27a4 <objective>"
          - ""
          - "<#55FF55>Progress: <white><progress><#AAAAAA>/<white><amount>"
          - "<#FFAA00><st>\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501</st>"

        mythic:
          - "<gradient:#FF55FF:#AA00FF><st>\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501</st></gradient>"
          - "<white><bold>A mythic legend demands your service.</bold>"
          - "<#AAAAAA>Tier: <tier>  \u2022  Difficulty: <difficulty>"
          - ""
          - "<#AAAAAA>\u27a4 <objective>"
          - ""
          - "<#55FF55>Progress: <white><progress><#AAAAAA>/<white><amount>"
          - "<gradient:#FF55FF:#AA00FF><st>\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501</st></gradient>"

  # ════════════════════════════════════════════════════════════════════════════
  # OBJECTIVE TEMPLATES
  # Keys are internal labels; objective: is the canonical type used at runtime.
  # ════════════════════════════════════════════════════════════════════════════

  objectives:

    kill_hostile:
      objective: kill
      target: [ZOMBIE, SKELETON, CREEPER, SPIDER]
      amount-by-difficulty:
        easy: [10, 25]
        normal: [20, 40]
        hard: [40, 75]
        nightmare: [75, 150]

    kill_zombies:
      objective: kill
      target: [ZOMBIE]
      amount: [15, 40]
    
    kill_skeletons:
      objective: kill
      target: [SKELETON]
      amount: [10, 35]
    
    kill_creepers:
      objective: kill
      target: [CREEPER]
      amount: [5, 20]
    
    kill_spiders:
      objective: kill
      target: [SPIDER, CAVE_SPIDER]
      amount: [15, 45]
    
    kill_endermen:
      objective: kill
      target: [ENDERMAN]
      amount: [5, 15]
    
    kill_nether_mobs:
      objective: kill
      target: [BLAZE, WITHER_SKELETON, PIGLIN, ZOMBIFIED_PIGLIN]
      amount: [10, 30]
    
    kill_ocean_mobs:
      objective: kill
      target: [DROWNED, GUARDIAN, ELDER_GUARDIAN]
      amount: [8, 25]
    
    kill_bosses:
      objective: kill
      target: [WITHER, ENDER_DRAGON]
      amount: [1, 3]
    
    kill_breeze:
      objective: kill
      target: [BREEZE]
      amount: [5, 15]
    
    kill_armadillo:
      objective: kill
      target: [ARMADILLO]
      amount: [3, 10]
    
    deal_damage:
      objective: damage
      amount-by-difficulty:
        easy: [50, 200]
        normal: [100, 500]
        hard: [300, 1000]
        nightmare: [500, 2000]
    
    shoot_arrows:
      objective: bowshoot
      amount: [10, 100]
    
    throw_projectiles:
      objective: projectile
      target: [SNOWBALL, EGG, ENDER_PEARL]
      amount: [10, 100]
    
    die_once:
      objective: death
      amount: [1, 3]
    
    die_many:
      objective: death
      amount: [5, 15]
    
    # ═══════════════════════════════════════════════════════════════════
    # MINING & BUILDING OBJECTIVES
    # ═══════════════════════════════════════════════════════════════════
    
    break_stone:
      objective: break
      target: [STONE, COBBLESTONE, ANDESITE, DIORITE, GRANITE]
      amount-by-difficulty:
        easy: [30, 80]
        normal: [50, 200]
        hard: [150, 400]
        nightmare: [300, 800]
    
    break_deepslate:
      objective: break
      target: [DEEPSLATE, COBBLED_DEEPSLATE]
      amount: [30, 150]
    
    break_coal_ore:
      objective: break
      target: [COAL_ORE, DEEPSLATE_COAL_ORE]
      amount: [20, 80]
    
    break_iron_ore:
      objective: break
      target: [IRON_ORE, DEEPSLATE_IRON_ORE]
      amount: [10, 40]
    
    break_gold_ore:
      objective: break
      target: [GOLD_ORE, DEEPSLATE_GOLD_ORE]
      amount: [5, 25]
    
    break_diamond_ore:
      objective: break
      target: [DIAMOND_ORE, DEEPSLATE_DIAMOND_ORE]
      amount: [3, 15]
    
    break_netherite:
      objective: break
      target: [ANCIENT_DEBRIS]
      amount: [1, 5]
    
    break_logs:
      objective: break
      target: [OAK_LOG, BIRCH_LOG, SPRUCE_LOG, JUNGLE_LOG, ACACIA_LOG, DARK_OAK_LOG]
      amount: [30, 150]
    
    break_nether_blocks:
      objective: break
      target: [NETHERRACK, NETHER_BRICKS, BLACKSTONE]
      amount: [50, 200]
    
    break_copper_ore:
      objective: break
      target: [COPPER_ORE, DEEPSLATE_COPPER_ORE]
      amount: [20, 80]
    
    break_trial_blocks:
      objective: break
      target: [TRIAL_SPAWNER, VAULT]
      amount: [1, 5]
    
    break_copper_blocks:
      objective: break
      target: [COPPER_BULB, COPPER_GRATE, COPPER_DOOR, COPPER_TRAPDOOR, CHISELED_COPPER, CUT_COPPER]
      amount: [10, 50]
    
    place_blocks:
      objective: place
      target: [OAK_PLANKS, STONE_BRICKS, COBBLESTONE]
      amount: [20, 100]
    
    place_decorations:
      objective: place
      target: [TORCH, LANTERN, GLOWSTONE, SEA_LANTERN]
      amount: [10, 50]
    
    place_rails:
      objective: place
      target: [RAIL, POWERED_RAIL, DETECTOR_RAIL]
      amount: [10, 64]
    
    use_blocks:
      objective: interact
      target: [CHEST, FURNACE, CRAFTING_TABLE, ANVIL, ENCHANTING_TABLE]
      amount: [5, 50]
    
    # ═══════════════════════════════════════════════════════════════════
    # COLLECTION & CRAFTING OBJECTIVES
    # ═══════════════════════════════════════════════════════════════════
    
    collect_crops:
      objective: collect
      target: [WHEAT, CARROT, POTATO, BEETROOT]
      amount-by-difficulty:
        easy: [10, 32]
        normal: [16, 64]
        hard: [48, 128]
        nightmare: [96, 256]
    
    collect_seeds:
      objective: collect
      target: [WHEAT_SEEDS, PUMPKIN_SEEDS, MELON_SEEDS]
      amount: [10, 40]
    
    collect_valuables:
      objective: collect
      target: [IRON_INGOT, GOLD_INGOT, DIAMOND, EMERALD]
      amount: [5, 20]
    
    collect_rare_items:
      objective: collect
      target: [NETHERITE_INGOT, NETHERITE_SCRAP, NETHER_STAR]
      amount: [1, 5]
    
    collect_flowers:
      objective: collect
      target: [POPPY, DANDELION, BLUE_ORCHID, ALLIUM, AZURE_BLUET]
      amount: [10, 50]
    
    collect_mob_drops:
      objective: collect
      target: [BONE, ROTTEN_FLESH, SPIDER_EYE, GUNPOWDER, ENDER_PEARL]
      amount: [10, 50]
    
    collect_copper:
      objective: collect
      target: [COPPER_INGOT, RAW_COPPER]
      amount: [20, 64]
    
    collect_breeze_items:
      objective: collect
      target: [BREEZE_ROD, WIND_CHARGE]
      amount: [5, 20]
    
    collect_trial_items:
      objective: collect
      target: [TRIAL_KEY, OMINOUS_TRIAL_KEY]
      amount: [1, 5]
    
    collect_armadillo_scute:
      objective: collect
      target: [ARMADILLO_SCUTE]
      amount: [5, 20]
    
    craft_tools:
      objective: craft
      target: [WOODEN_PICKAXE, STONE_PICKAXE, IRON_PICKAXE, DIAMOND_PICKAXE]
      amount: [1, 5]
    
    craft_weapons:
      objective: craft
      target: [WOODEN_SWORD, STONE_SWORD, IRON_SWORD, DIAMOND_SWORD]
      amount: [1, 5]
    
    craft_armor:
      objective: craft
      target: [IRON_HELMET, IRON_CHESTPLATE, IRON_LEGGINGS, IRON_BOOTS]
      amount: [1, 4]
    
    craft_blocks:
      objective: craft
      target: [CRAFTING_TABLE, CHEST, FURNACE, TORCH]
      amount: [5, 20]
    
    craft_decorations:
      objective: craft
      target: [PAINTING, ITEM_FRAME, ARMOR_STAND, BANNER]
      amount: [3, 15]
    
    craft_copper_items:
      objective: craft
      target: [COPPER_BULB, COPPER_GRATE, COPPER_DOOR, COPPER_TRAPDOOR]
      amount: [5, 20]
    
    craft_wolf_armor:
      objective: craft
      target: [WOLF_ARMOR]
      amount: [1, 3]
    
    craft_crafter:
      objective: craft
      target: [CRAFTER]
      amount: [1, 5]
    
    smelt_ores:
      objective: smelt
      target: [IRON_INGOT, GOLD_INGOT, COPPER_INGOT]
      amount: [10, 50]
    
    smelt_food:
      objective: smelt
      target: [COOKED_BEEF, COOKED_PORKCHOP, COOKED_CHICKEN, COOKED_MUTTON]
      amount: [10, 40]
    
    smelt_blocks:
      objective: smelt
      target: [GLASS, BRICK, TERRACOTTA]
      amount: [10, 64]
    
    # ═══════════════════════════════════════════════════════════════════
    # FISHING & OCEAN OBJECTIVES
    # ═══════════════════════════════════════════════════════════════════
    
    catch_fish:
      objective: fish
      target: [COD, SALMON, TROPICAL_FISH, PUFFERFISH]
      amount: [10, 50]
    
    catch_rare_fish:
      objective: fish
      target: [SALMON, TROPICAL_FISH]
      amount: [5, 25]
    
    catch_treasure:
      objective: fish
      target: [ANY]
      amount: [15, 60]
    
    # ═══════════════════════════════════════════════════════════════════
    # FARMING & ANIMALS OBJECTIVES
    # ═══════════════════════════════════════════════════════════════════
    
    tame_wolves:
      objective: tame
      target: [WOLF]
      amount: [1, 5]
    
    tame_cats:
      objective: tame
      target: [CAT]
      amount: [1, 3]
    
    tame_horses:
      objective: tame
      target: [HORSE]
      amount: [1, 3]
    
    tame_parrots:
      objective: tame
      target: [PARROT]
      amount: [1, 2]
    
    breed_cows:
      objective: breed
      target: [COW]
      amount: [5, 20]
    
    breed_sheep:
      objective: breed
      target: [SHEEP]
      amount: [5, 20]
    
    breed_pigs:
      objective: breed
      target: [PIG]
      amount: [5, 15]
    
    breed_chickens:
      objective: breed
      target: [CHICKEN]
      amount: [5, 25]
    
    breed_horses:
      objective: breed
      target: [HORSE]
      amount: [2, 8]
    
    breed_wolves:
      objective: breed
      target: [WOLF]
      amount: [2, 10]
    
    breed_any:
      objective: breed
      target: [ANY]
      amount: [10, 30]
    
    shear_sheep:
      objective: shear
      target: [SHEEP]
      amount: [10, 40]
    
    trade_villagers:
      objective: trade
      target: [ANY]
      amount: [5, 20]
    
    # ═══════════════════════════════════════════════════════════════════
    # ENCHANTING & BREWING OBJECTIVES
    # ═══════════════════════════════════════════════════════════════════
    
    enchant_items:
      objective: enchant
      target: [ANY]
      amount: [3, 15]
    
    brew_potions:
      objective: brew
      target: [ANY]
      amount: [5, 20]
    
    # ═══════════════════════════════════════════════════════════════════
    # MOVEMENT & EXPLORATION OBJECTIVES
    # ═══════════════════════════════════════════════════════════════════
    
    travel_short:
      objective: move
      amount: [500, 2000]
    
    travel_medium:
      objective: move
      amount-by-difficulty:
        easy: [1000, 3000]
        normal: [2000, 5000]
        hard: [4000, 8000]
        nightmare: [6000, 12000]
    
    travel_long:
      objective: move
      amount: [5000, 10000]
    
    travel_vehicle:
      objective: vehicle
      target: [ANY]
      amount: [500, 3000]
    
    jump_challenge:
      objective: jump
      amount: [50, 200]
    
    # ═══════════════════════════════════════════════════════════════════
    # LEVELING OBJECTIVES
    # ═══════════════════════════════════════════════════════════════════
    
    gain_levels:
      objective: gainlevel
      amount: [5, 20]
    
    reach_level_10:
      objective: reachlevel
      amount: [10, 15]
    
    reach_level_20:
      objective: reachlevel
      amount: [20, 30]
    
    reach_level_30:
      objective: reachlevel
      amount: [30, 40]
    
    # ═══════════════════════════════════════════════════════════════════
    # SURVIVAL & MISC OBJECTIVES
    # ═══════════════════════════════════════════════════════════════════
    
    sleep_in_bed:
      objective: sleep
      amount: [3, 15]
    
    heal_health:
      objective: heal
      amount: [50, 200]
    
    consume_food:
      objective: consume
      target: [APPLE, BREAD, COOKED_BEEF, GOLDEN_APPLE]
      amount: [10, 50]
    
    drop_items:
      objective: drop
      target: [DIRT, COBBLESTONE, STICK]
      amount: [10, 64]
    
    send_messages:
      objective: chat
      amount: [10, 50]
    
    launch_fireworks:
      objective: firework
      amount: [5, 20]
    
    # ═══════════════════════════════════════════════════════════════════
    # SPECIAL & EXTREME OBJECTIVES
    # ═══════════════════════════════════════════════════════════════════
    
    kill_wither:
      objective: kill
      target: [WITHER]
      amount: [1, 3]
    
    kill_ender_dragon:
      objective: kill
      target: [ENDER_DRAGON]
      amount: [1, 2]
    
    kill_warden:
      objective: kill
      target: [WARDEN]
      amount: [1, 5]
    
    break_obsidian:
      objective: break
      target: [OBSIDIAN]
      amount: [10, 100]
    
    place_end_crystals:
      objective: place
      target: [END_CRYSTAL]
      amount: [1, 4]
    
    collect_end_items:
      objective: collect
      target: [END_STONE, END_STONE_BRICKS, PURPUR_BLOCK]
      amount: [32, 128]
    
    craft_netherite_gear:
      objective: craft
      target: [NETHERITE_HELMET, NETHERITE_CHESTPLATE, NETHERITE_LEGGINGS, NETHERITE_BOOTS]
      amount: [1, 4]
    
    collect_rare_flowers:
      objective: collect
      target: [WITHER_ROSE, LILY_OF_THE_VALLEY, CHORUS_FLOWER]
      amount: [5, 20]
    
    massive_mining:
      objective: break
      target: [STONE, DEEPSLATE, COBBLESTONE]
      amount: [500, 2000]
    
    epic_travel:
      objective: move
      amount: [10000, 50000]

    repair_anvil:
      objective: anvil_repair
      target: [ANY]
      amount: [1, 8]

    explore_biomes:
      objective: explore_biome
      target: [PLAINS, DESERT, FOREST, JUNGLE, SAVANNA, SNOWY_PLAINS]
      amount: [1, 3]

    elytra_glide:
      objective: elytra_fly
      amount: [200, 1500]

    collect_xp:
      objective: xp_pickup
      amount: [50, 300]

    play_for_minutes:
      objective: playtime
      amount: [5, 30]

    visit_worlds:
      objective: enter_world
      target: [world, world_nether, world_the_end, NETHER, THE_END]
      amount: [1, 2]

    player_duels:
      objective: kill_player
      amount: [1, 3]

    earn_advancements:
      objective: advancement
      target: [ANY]
      amount: [1, 3]

    wear_gear:
      objective: equip
      target: [IRON_CHESTPLATE, DIAMOND_CHESTPLATE, GOLDEN_HELMET, NETHERITE_BOOTS]
      amount: [1, 1]

    smith_items:
      objective: smith
      target: [ANY]
      amount: [1, 5]

    harvest_crops:
      objective: harvest
      target: [WHEAT, CARROTS, POTATOES, BEETROOTS, NETHER_WART]
      amount: [16, 64]

    run_command:
      objective: command
      target: [help, spawn]
      amount: [1, 3]

    placeholder_progress:
      objective: placeholder
      # %player_level% requires PlaceholderAPI "Player" expansion:
      # /papi ecloud download Player
      # /papi reload
      target: [player_level]
      amount: [5, 25]

  reward-pool:
    # Same reward block format as quests.yml. Templates override tier ranges when present.

    templates:
      - weight: 35
        tiers: [common, uncommon]
        min-difficulty: easy
        reward:
          xp: 80
          money: 45
          sigils: 15
          items:
            - material: BREAD
              amount: 8
              chance: 100
          commands:
            - "say {player} completed a generated quest."
          command-chance: 35
      - weight: 25
        tiers: [rare, epic]
        min-difficulty: normal
        reward:
          xp: [180, 320]
          money: [120, 250]
          sigils: [35, 80]
          items:
            - material: DIAMOND
              amount: [1, 3]
              chance: 100
      - weight: 12
        tiers: [legendary, mythic]
        min-difficulty: hard
        reward:
          xp: [450, 900]
          money: [400, 1200]
          sigils: [100, 300]
          quest:
            quest-id: diamond_rush
            chance: 75
    
    xp:
      common: [25, 100]
      uncommon: [75, 150]
      rare: [100, 250]
      epic: [250, 500]
      legendary: [400, 800]
      mythic: [750, 1500]
    
    money:
      common: [10, 100]
      uncommon: [50, 150]
      rare: [100, 400]
      epic: [400, 1000]
      legendary: [750, 2000]
      mythic: [1500, 4000]
    
    quests:
      enabled: true
      chance: 15
      pool:
        # Quest IDs must match entries in quests.yml
        - quest-id: lumberjack
          tiers: [common, uncommon]
          chance: 80
          min-difficulty: easy
        
        - quest-id: mob_hunter
          tiers: [rare, epic]
          chance: 60
          min-difficulty: normal
        
        - quest-id: diamond_rush
          tiers: [epic, legendary]
          chance: 40
          min-difficulty: hard
    
    items:
      selection-mode: "weighted"
      min-items: 1
      max-items: 3
      
      pool:
        # ═══════════════════════════════════════════════════════
        # COMMON TIER REWARDS
        # ═══════════════════════════════════════════════════════
        
        - material: COAL
          amount: [8, 32]
          tiers: [common]
          weight: 60
        
        - material: IRON_INGOT
          amount: [2, 8]
          tiers: [common, uncommon]
          weight: 50
        
        - material: BREAD
          amount: [8, 16]
          tiers: [common]
          weight: 55
        
        - material: TORCH
          amount: [16, 64]
          tiers: [common]
          weight: 50
        
        - material: ARROW
          amount: [16, 64]
          tiers: [common]
          weight: 45
        
        - material: LEATHER
          amount: [4, 16]
          tiers: [common]
          weight: 40
        
        - material: COPPER_INGOT
          amount: [8, 32]
          tiers: [common]
          weight: 55
        
        - material: WIND_CHARGE
          amount: [4, 16]
          tiers: [common, uncommon]
          weight: 35
        
        # ═══════════════════════════════════════════════════════
        # UNCOMMON TIER REWARDS
        # ═══════════════════════════════════════════════════════
        
        - material: IRON_SWORD
          amount: 1
          name: "&2Uncommon Blade"
          enchantments:
            - "SHARPNESS:2"
            - "UNBREAKING:1"
          tiers: [uncommon]
          weight: 35
        
        - material: IRON_PICKAXE
          amount: 1
          name: "&2Miner's Tool"
          enchantments:
            - "EFFICIENCY:2"
            - "UNBREAKING:1"
          tiers: [uncommon]
          weight: 35
        
        - material: GOLD_INGOT
          amount: [2, 6]
          tiers: [uncommon, rare]
          weight: 35
        
        - material: LAPIS_LAZULI
          amount: [16, 32]
          tiers: [uncommon]
          weight: 30
        
        - material: REDSTONE
          amount: [16, 32]
          tiers: [uncommon]
          weight: 30
        
        # ═══════════════════════════════════════════════════════
        # RARE TIER REWARDS
        # ═══════════════════════════════════════════════════════
        
        - material: DIAMOND
          amount: [1, 3]
          tiers: [rare, epic]
          weight: 30
        
        - material: ENCHANTED_BOOK
          amount: 1
          name: "&9Rare Enchantment"
          enchantments:
            - "EFFICIENCY:3"
          tiers: [rare]
          weight: 25
        
        - material: GOLDEN_APPLE
          amount: [1, 3]
          tiers: [rare, epic]
          weight: 25
        
        - material: DIAMOND_SWORD
          amount: 1
          name: "&9Rare Sword"
          enchantments:
            - "SHARPNESS:3"
            - "UNBREAKING:2"
            - "LOOTING:1"
          tiers: [rare]
          weight: 20
        
        - material: DIAMOND_PICKAXE
          amount: 1
          name: "&9Fortune Pick"
          enchantments:
            - "EFFICIENCY:3"
            - "FORTUNE:2"
            - "UNBREAKING:2"
          tiers: [rare]
          weight: 20
        
        - material: ENDER_PEARL
          amount: [4, 12]
          tiers: [rare]
          weight: 25
        
        - material: BREEZE_ROD
          amount: [2, 8]
          tiers: [rare, epic]
          weight: 20
        
        - material: TRIAL_KEY
          amount: [1, 3]
          tiers: [rare]
          weight: 18
        
        - material: WOLF_ARMOR
          amount: 1
          name: "&9Armored Companion"
          tiers: [rare]
          weight: 15
        
        # ═══════════════════════════════════════════════════════
        # EPIC TIER REWARDS
        # ═══════════════════════════════════════════════════════
        
        - material: NETHERITE_INGOT
          amount: [1, 2]
          tiers: [epic, legendary]
          weight: 15
          min-difficulty: hard
        
        - material: DIAMOND_SWORD
          amount: 1
          name: "&5&lEpic Blade"
          lore:
            - "&7A powerful weapon"
            - "&7for epic adventurers"
          enchantments:
            - "SHARPNESS:5"
            - "UNBREAKING:3"
            - "LOOTING:3"
            - "FIRE_ASPECT:2"
          tiers: [epic]
          weight: 12
          min-difficulty: normal
        
        - material: DIAMOND_PICKAXE
          amount: 1
          name: "&5&lEpic Excavator"
          lore:
            - "&7Mine with epic efficiency"
          enchantments:
            - "EFFICIENCY:5"
            - "FORTUNE:3"
            - "UNBREAKING:3"
          tiers: [epic]
          weight: 12
          min-difficulty: normal
        
        - material: ENCHANTED_BOOK
          amount: 1
          name: "&5Epic Tome"
          enchantments:
            - "MENDING:1"
          tiers: [epic, legendary]
          weight: 15
        
        - material: ENCHANTED_GOLDEN_APPLE
          amount: [1, 2]
          tiers: [epic, legendary]
          weight: 10
          min-difficulty: hard
        
        - material: TOTEM_OF_UNDYING
          amount: 1
          tiers: [epic, legendary]
          weight: 8
          min-difficulty: hard
        
        - material: ELYTRA
          amount: 1
          name: "&5Epic Wings"
          enchantments:
            - "UNBREAKING:3"
          tiers: [epic]
          weight: 5
          min-difficulty: hard
        
        - material: OMINOUS_TRIAL_KEY
          amount: [1, 2]
          name: "&5&lOminous Key"
          lore:
            - "&7Ominous rewards on completion"
          tiers: [epic]
          weight: 8
          min-difficulty: normal
        
        - material: HEAVY_CORE
          amount: 1
          name: "&5Heavy Core"
          lore:
            - "&7Craft the mighty mace"
          tiers: [epic, legendary]
          weight: 6
          min-difficulty: hard
        
        # ═══════════════════════════════════════════════════════
        # LEGENDARY TIER REWARDS
        # ═══════════════════════════════════════════════════════
        
        - material: NETHERITE_SWORD
          amount: 1
          name: "&6&l⚔ Legendary Blade ⚔"
          lore:
            - "&7A weapon of legendary power"
            - ""
            - "&e▸ &7Sharpness VII"
            - "&e▸ &7Looting IV"
            - "&e▸ &7Fire Aspect III"
            - "&e▸ &7Unbreaking V"
            - ""
            - "&6&l★ LEGENDARY ★"
          enchantments:
            - "SHARPNESS:7"
            - "LOOTING:4"
            - "FIRE_ASPECT:3"
            - "UNBREAKING:5"
            - "SWEEPING_EDGE:3"
          tiers: [legendary]
          weight: 8
          min-difficulty: hard
        
        - material: NETHERITE_PICKAXE
          amount: 1
          name: "&6&l⛏ Legendary Excavator ⛏"
          lore:
            - "&7Mine with legendary power"
            - ""
            - "&e▸ &7Efficiency VII"
            - "&e▸ &7Fortune IV"
            - "&e▸ &7Unbreaking V"
            - ""
            - "&6&l★ LEGENDARY ★"
          enchantments:
            - "EFFICIENCY:7"
            - "FORTUNE:4"
            - "UNBREAKING:5"
          tiers: [legendary]
          weight: 8
          min-difficulty: hard
        
        - material: NETHER_STAR
          amount: [1, 2]
          name: "&6Legendary Star"
          tiers: [legendary, mythic]
          weight: 6
          min-difficulty: nightmare
        
        - material: BEACON
          amount: 1
          name: "&6Beacon of Legends"
          tiers: [legendary]
          weight: 4
          min-difficulty: nightmare
        
        - material: DRAGON_HEAD
          amount: 1
          name: "&6Dragon Trophy"
          tiers: [legendary]
          weight: 3
          min-difficulty: nightmare
        
        - material: MACE
          amount: 1
          name: "&6&l⚔ Legendary Mace ⚔"
          lore:
            - "&7Crushing force of legends"
            - ""
            - "&e▸ &7Density V"
            - "&e▸ &7Breach IV"
            - "&e▸ &7Unbreaking V"
            - "&e▸ &7Mending"
            - ""
            - "&6&l★ LEGENDARY ★"
          enchantments:
            - "DENSITY:5"
            - "BREACH:4"
            - "UNBREAKING:5"
            - "MENDING:1"
          tiers: [legendary]
          weight: 7
          min-difficulty: hard
        
        # ═══════════════════════════════════════════════════════
        # MYTHIC TIER REWARDS
        # ═══════════════════════════════════════════════════════
        
        - material: NETHERITE_SWORD
          amount: 1
          name: "&d&l&o⚔ MYTHIC DESTROYER ⚔"
          lore:
            - "&7A blade forged from myths"
            - "&7and legends alike."
            - ""
            - "&d▸ &7Sharpness X"
            - "&d▸ &7Looting V"
            - "&d▸ &7Fire Aspect IV"
            - "&d▸ &7Unbreaking VII"
            - "&d▸ &7Sweeping Edge V"
            - "&d▸ &7Mending"
            - ""
            - "&d&l✦ MYTHIC WEAPON ✦"
          enchantments:
            - "SHARPNESS:10"
            - "LOOTING:5"
            - "FIRE_ASPECT:4"
            - "UNBREAKING:7"
            - "SWEEPING_EDGE:5"
            - "MENDING:1"
          flags:
            - "HIDE_ENCHANTS"
          unbreakable: false
          tiers: [mythic]
          weight: 5
          min-difficulty: nightmare
        
        - material: NETHERITE_PICKAXE
          amount: 1
          name: "&d&l&o⛏ MYTHIC EXCAVATOR ⛏"
          lore:
            - "&7Mine through reality itself"
            - ""
            - "&d▸ &7Efficiency X"
            - "&d▸ &7Fortune V"
            - "&d▸ &7Unbreaking VII"
            - "&d▸ &7Mending"
            - ""
            - "&d&l✦ MYTHIC TOOL ✦"
          enchantments:
            - "EFFICIENCY:10"
            - "FORTUNE:5"
            - "UNBREAKING:7"
            - "MENDING:1"
          flags:
            - "HIDE_ENCHANTS"
          tiers: [mythic]
          weight: 5
          min-difficulty: nightmare
        
        - material: NETHERITE_HELMET
          amount: 1
          name: "&d&lMythic Crown"
          enchantments:
            - "PROTECTION:5"
            - "UNBREAKING:5"
            - "MENDING:1"
          tiers: [mythic]
          weight: 4
          min-difficulty: expert
        
        - material: ENCHANTED_GOLDEN_APPLE
          amount: [3, 8]
          name: "&dMythic Sustenance"
          tiers: [mythic]
          weight: 6
          min-difficulty: expert
        
        - material: TOTEM_OF_UNDYING
          amount: [1, 3]
          name: "&dMythic Totem"
          tiers: [mythic]
          weight: 5
          min-difficulty: nightmare

  # ════════════════════════════════════════════════════════════════════════════
  # TIMER — optional time limit on generated quests (Premium generation only)
  # chance: 0 = never timed. Manual quests.yml timer: still works on Free.
  # fail-reward-scale clones the generated reward: block with scaled amounts.
  # ════════════════════════════════════════════════════════════════════════════

  timer:
    chance: 0                   # 0 = never timed
    minutes: [10, 20]
    minutes-by-difficulty:      # Optional override of minutes:
      hard: [8, 12]
    start-on: activate          # receive | activate (right-click the active paper)
    on-expire: fail             # fail | consolation | overtime
    fail-reward-scale: 0.25     # consolation/overtime: clone full reward: into fail-reward:

  # ════════════════════════════════════════════════════════════════════════════
  # MYTHICMOBS — pool for kill_mythicmob objectives (requires MythicMobs plugin)
  # Mob IDs must match your MythicMobs config exactly.
  # ════════════════════════════════════════════════════════════════════════════

  mythicmobs:
    enabled: false
    pool: []
    # pool:
    #   - SkeletalKnight
    #   - SkeletonKing
    #   - FireDemon

contract-request.yml

# ##############################################################
# #                                                            #
# #                      SoapsQuest                            #
# #                                                            #
# #           Created by: AlternativeSoap                      #
# #           Website:    www.SoapsUniverse.com                #
# #           Support:    https://discord.gg/mawAzwFq          #
# #                                                            #
# ##############################################################

# SoapsQuest — Contract Request (Premium only)
#
# Players take a random quest paper from an NPC, /sq contract, or the quest browser.
# Free edition ignores this file.
#
# Admin:  /sq npc broker <npc-id|name>   |  /sq npc unbroker <npc-id|name>
# Player: /sq contract [difficulty]
#

contract-request:
  enabled: true
  # How many Citizens NPCs may hand out random contracts at once
  max-broker-npcs: 5
  # temporary = saved, then removed after the player claims the reward
  # session = same cleanup for this feature
  generated-quest-mode: temporary
  # How many of these contracts a player may hold at once
  active-contract-limit: 1
  permission: soapsquest.contract

  defaults:
    # Seconds before the same player can take another contract from this source
    cooldown-seconds: 300
    cost:
      money: 50
      sigils: 0
      # items:
      #   - material: EMERALD
      #     amount: 1
    # Fee for the selected difficulty (overrides cost above when present)
    cost-by-difficulty:
      easy:
        money: 25
        sigils: 0
      normal:
        money: 50
        sigils: 0
      hard:
        money: 100
        sigils: 5
      expert:
        money: 200
        sigils: 15
      nightmare:
        money: 350
        sigils: 25
    allowed-types: [single, multi, sequence]
    # Empty list = any difficulty from the generator pool
    allowed-difficulties: []

  channels:
    command:
      enabled: true
    gui:
      enabled: true

  # Added by /sq npc broker. Keep within max-broker-npcs.
  # List with /sq npc brokers. Remove with /sq npc unbroker <id>.
  brokers: {}
  # Town board example (after /sq npc broker 42 <green>Here is a job for you.):
  # "42":
  #   cooldown-seconds: 600
  #   cost:
  #     money: 100
  #     sigils: 5
  #   message: "<green>Here is a job for you."
  #   allowed-difficulties: [normal, hard]
  #   allowed-types: [single]

quest-loot.yml

# ##############################################################
# #                                                            #
# #                      SoapsQuest                            #
# #                                                            #
# #           Created by: AlternativeSoap                      #
# #           Website:    www.SoapsUniverse.com                #
# #           Support:    https://discord.gg/mawAzwFq          #
# #                                                            #
# ##############################################################

# ════════════════════════════════════════════════════════════════════════════
# SoapsQuest — Quest Loot System (Premium)
# ════════════════════════════════════════════════════════════════════════════
#
# Adds unbound quest papers to naturally generated chest loot and mob drops.
# Players are bound to the paper the first time they pick it up.
#
# ─── SOURCE MODES (pool.mode) ─────────────────────────────────────────────
#   manual  →  random quest from pool.quests
#   random  →  new quest from random-generator.yml (Premium)
#   mixed   →  pool.mixed-ratio chance of random; otherwise manual
#
# ─── WORLD FILTERS ──────────────────────────────────────────────────────────
#   Empty worlds: [] = allow all worlds.
#
# ─── MOB QUEST POOL ─────────────────────────────────────────────────────────
#   When mobs.pool.quests is empty, mob drops inherit chest.pool.quests
#   unless pool.inherit-chest-quests is set to false.
#
# ════════════════════════════════════════════════════════════════════════════

quest-loot:

  # ─── Master Control ───────────────────────────────────────────────────────
  enabled: false
  max-per-event: 4

  # Respect quest permissions and start conditions before dropping papers.
  # When false, any quest in the pool may drop regardless of player state.
  obey-plugin-restrictions: true

  # ─── Chest Loot ───────────────────────────────────────────────────────────
  chest:
    enabled: true
    chance: 10

    amount:
      min: 1
      max: 2

    worlds:
      - "world"
      - "world_nether"

    # Substring match against loot table keys (natural sources only).
    allowed-loot-tables:
      - "chests/simple_dungeon"
      - "chests/abandoned_mineshaft"
      - "chests/buried_treasure"
      - "archaeology"
      - "fishing"

    pool:
      mode: manual
      mixed-ratio: 0.5
      quests:
        - "lumberjack"
        - "zombie_slayer"
        - "gone_fishing"
        - "iron_miner"
        - "mob_hunter"

  # ─── Mob Drop Loot ────────────────────────────────────────────────────────
  mobs:
    enabled: true
    default-chance: 5

    amount:
      min: 1
      max: 1

    worlds:
      - "world"

    pool:
      # Omit mode to inherit chest.pool.mode.
      # mode: manual
      inherit-chest-quests: true
      # Optional separate mob pool (uncomment to override chest pool):
      # quests:
      #   - "zombie_slayer"
      #   - "mob_hunter"

    types:
      # Entity names = Bukkit EntityType (UPPER_CASE).
      # Per-type chance overrides default-chance; amount uses same min/max keys.

      ZOMBIE:
        chance: 12
        amount-min: 1
        amount-max: 2

      HUSK:
        chance: 12

      ZOMBIE_VILLAGER:
        chance: 10

      DROWNED:
        chance: 12

      SKELETON:
        chance: 8

      STRAY:
        chance: 8

      BOGGED:
        chance: 8

      CREEPER:
        chance: 10
        amount-max: 2

      SPIDER:
        chance: 7

      CAVE_SPIDER:
        chance: 8

      SLIME:
        chance: 6

      ENDERMITE:
        chance: 5

      SILVERFISH:
        chance: 4

      WITCH:
        chance: 15

      PHANTOM:
        chance: 12

      GUARDIAN:
        chance: 15

      ELDER_GUARDIAN:
        chance: 60
        amount-min: 2
        amount-max: 4

      GHAST:
        chance: 18
        amount-max: 2

      MAGMA_CUBE:
        chance: 8

      ZOMBIFIED_PIGLIN:
        chance: 8

      PIGLIN_BRUTE:
        chance: 20
        amount-max: 2

      HOGLIN:
        chance: 15

      ZOGLIN:
        chance: 12

      BLAZE:
        chance: 15
        amount-max: 2

      WITHER_SKELETON:
        chance: 25
        amount-max: 3

      ENDERMAN:
        chance: 20
        amount-max: 2

      SHULKER:
        chance: 20
        amount-max: 2

      PILLAGER:
        chance: 12
        amount-max: 2

      VINDICATOR:
        chance: 15
        amount-max: 2

      EVOKER:
        chance: 25
        amount-max: 2

      RAVAGER:
        chance: 30
        amount-max: 2

      VEX:
        chance: 5

      WARDEN:
        chance: 50
        amount-min: 2
        amount-max: 3

      BREEZE:
        chance: 20
        amount-max: 2

      WITHER:
        chance: 100
        amount-min: 3
        amount-max: 5

      ENDER_DRAGON:
        chance: 100
        amount-min: 3
        amount-max: 6

See also: Configuration.

Version 1.0.5