menus.yml

(Questborn/top.yml)

# ==============================================================================
# Questborn — Menus Configuration
# ==============================================================================
#
# This file defines the layout and ALL item display strings for every GUI.
# Statuses, dynamic text and objective descriptions are in the language file.
#
# STRUCTURE:
#   title   — Inventory title. Placeholders: {quest}, {type}, {page}, {total}
#   rows    — Number of inventory rows (1-6)
#   mask    — Slots filled with the "filler" item (ranges: "0-9", lists: "1,2,3")
#   slots   — Named slot ranges for functional content (quests, players, input)
#   items   — All static items and button definitions
#
# ITEM FIELDS:
#   material          — Minecraft material or itemsadder:namespace:id
#   name              — Display name  (&a color codes, <#RRGGBB> hex)
#   lore              — List of lore lines (same formatting)
#   slot              — Inventory slot (0-53)
#   custom-model-data — Resource pack model integer (optional)
#
# ==============================================================================

menus:

  # ============================================================================
  #  MAIN MENU — quest type selection
  # ============================================================================
  main:
    title: "&0Quests - Main Menu"
    rows: 5
    mask:
      - "0-9"
      - "17, 18, 26, 27, 35, 36"
      - "36-44"
    items:
      filler:
        material: BROWN_STAINED_GLASS_PANE
        name: " "

      top:
        slot: 40
        material: JUNGLE_HANGING_SIGN
        name: "<#ffe380>🏆 Top Players"
        lore:
          - "<#cccccc>Top-100 players"
          - "<#cccccc>by quests completed"

      locked:
        material: RED_STAINED_GLASS_PANE
        name: "<#ff5555>Requirements apply"
        lore:
          - "{requirements}"
          - ""
          - "<#cccccc>You do not meet the"
          - "<#cccccc>requirements for this"
          - "<#cccccc>quest type."

  # ============================================================================
  #  QUEST LIST — paginated quests for a type
  # ============================================================================
  quest-list:
    title: "&0{type} - Page {page}/{total}"
    rows: 5
    slots:
      quests:
        - "10-16"
        - "19-25"
        - "28-34"
    mask:
      - "0-9"
      - "17, 18, 26, 27, 35, 36"
      - "36-44"
    items:
      filler:
        material: BROWN_STAINED_GLASS_PANE
        name: " "

      back:
        slot: 38
        material: ARROW
        name: "<#ffccaa>← Previous Page"

      next:
        slot: 42
        material: ARROW
        name: "<#aaffdd>Next Page →"

      main:
        slot: 40
        material: GUSTER_BANNER_PATTERN
        name: "<#ffeeaa>Main Menu"

  # ============================================================================
  #  QUEST DETAILS — objectives, rewards, actions
  # ============================================================================
  quest-details:
    title: "&0{type} - {quest}"
    rows: 5
    mask:
      - "0-9"
      - "17, 18, 26, 27, 35, 36"
      - "36-44"
    items:
      filler:
        material: BROWN_STAINED_GLASS_PANE
        name: " "

      # ---- quest icon (material comes from quest definition) ----
      icon:
        slot: 4

      # ---- objective info ----
      objective:
        slot: 20
        material: SPYGLASS
        name: "<#ffe999>Current Objective"
        lore:
          - "<#cccccc>Stage {stage}/{total_stages}"
          - ""
          - "{objective_details}"

      # ---- rewards ----
      rewards:
        slot: 22
        material: CHEST_MINECART
        name: "<#ffe999>Rewards"
        lore:
          - "{reward}"

      # ---- item transfer (shared slot, state-dependent name/lore) ----
      transfer:
        slot: 24
        material: MINECART

      transfer-required:
        name: "<#cccccc>Deliver items"

      transfer-none:
        material: FURNACE_MINECART
        name: "<#cccccc>Deliver items"
        lore:
          - "<#cccccc>This stage does not require"
          - "<#cccccc>any items"

      # ---- back button ----
      back:
        slot: 38
        material: ORANGE_DYE
        name: "<#ffcc55>← Back"
        lore:
          - "<#cccccc>Return to quest list"

      # ---- action button (shared slot, state-dependent name/lore) ----
      action:
        slot: 42

      action-activate:
        material: LIME_DYE
        name: "<#a7ff99>Activate Quest"
        lore:
          - "<#99ffd4>This quest will become your active quest."
          - "<#99ffd4>Progress will appear at the bottom of the screen."

      action-cancel:
        material: RED_DYE
        name: "<#ff6666>Cancel Quest"
        lore:
          - "<#ffaaaa>The quest will be canceled."
          - "<#ffaaaa>All progress will be lost."

      action-confirm-cancel:
        material: RED_DYE
        name: "<#ff6666>Really cancel?"
        lore:
          - "<#ffaaaa>Are you sure you want to"
          - "<#ffaaaa>cancel this quest?"
          - "<#ffaaaa>Click again to confirm."

      action-blocked:
        material: GRAY_DYE
        name: "<#aaaaaa>Unavailable"
        lore:
          - "<#aaaaaa>Complete your current"
          - "<#aaaaaa>active quest first."

      action-replace:
        material: YELLOW_DYE
        name: "<#a7ff99>Replace Active Quest"
        lore:
          - "<#99ffd4>Your current active quest will be canceled."
          - "<#99ffd4>This quest will take its place."

      action-change:
        material: YELLOW_DYE
        name: "<#fffb99>Quest already active"
        lore:
          - "<#ccc97a>You already have an active quest"
          - "<#ccc97a>Change active quest?"

      action-confirm-change:
        material: ORANGE_DYE
        name: "<#ffc499>Quest Change"
        lore:
          - "<#ffe1cc>When switching, progress of the"
          - "<#ffe1cc>inactive quest will be saved!"

      action-cooldown:
        material: GRAY_DYE
        name: "<#dcdcdc>Cooldown"
        lore:
          - "<#dcdcdc>This quest is temporarily unavailable."
          - "<#dcdcdc>Try again later."

      action-completed:
        material: GRAY_DYE
        name: "<#c8c8c8>Quest Completed"
        lore:
          - "<#bbbbbb>This quest is already completed."
          - "<#bbbbbb>It cannot be repeated."

      # ---- claim reward ----
      claim-reward:
        slot: 42
        material: EMERALD
        name: "<#a7ff99>Claim Reward"

  # ============================================================================
  #  QUEST TRANSFER — item delivery interface
  # ============================================================================
  quest-transfer:
    title: "&0Transfer - {quest}"
    rows: 5
    mask:
      - "0-3, 5-9"
      - "17, 18, 26, 27, 35, 36"
      - "37, 39, 40, 41, 43, 44"
    slots:
      input:
        - "10-16"
        - "19-25"
        - "28-34"
    items:
      filler:
        material: BROWN_STAINED_GLASS_PANE
        name: " "

      info:
        slot: 4

      cancel:
        slot: 38
        material: ORANGE_DYE
        name: "<#ff6666>Cancel Delivery"
        lore:
          - "<#ffaaaa>Cancel item delivery"
          - "<#ffaaaa>and return"

      confirm:
        slot: 42
        material: LIME_DYE
        name: "<#a7ff99>Deliver Items"
        lore:
          - "<#99ffd4>Deliver items to"
          - "<#99ffd4>continue the quest"

  # ============================================================================
  #  TOP PLAYERS — leaderboard
  # ============================================================================
  top:
    title: "&0Top Players - Page {page}/{total}"
    rows: 5
    enabled: true
    limit: 100

    rank-styles:
      1:
        prefix: "<#FFAA00>♛ "
        footer: "<#FFAA00>🏆 TOP 1 LEADER 🏆"
      2:
        prefix: "<#E0E0E0>🥈 "
        footer: "<#E0E0E0>🥈 RUNNER UP"
      3:
        prefix: "<#CD7F32>🥉 "
        footer: "<#CD7F32>🥉 THIRD PLACE"
      default:
        prefix: "<#AAAAAA>"
        footer: ""

    slots:
      players:
        - "10-16"
        - "19-25"
        - "28-34"
    mask:
      - "0-9"
      - "17, 18, 26, 27, 35, 36"
      - "36-44"
    items:
      filler:
        material: BROWN_STAINED_GLASS_PANE
        name: " "

      stats:
        slot: 4
        material: PLAYER_HEAD
        name: "<#6966ff>📊 Your Stats"
        lore:
          - "<#cccccc>Rank: <#ffe999>#{rank}"
          - ""
          - "<#cccccc>{type}: <#ffe999>{count}"
          - ""
          - "<#cccccc>Total: <#ffd37a>{total}"

      player:
        material: PLAYER_HEAD
        name: "<#ffe380>{position} <#ffffff>{player}"
        lore:
          - "<#cccccc>Completed: <#ffd37a>{count}"

      back:
        slot: 40
        material: GUSTER_BANNER_PATTERN
        name: "<#ffeeaa>Main Menu"

      prev:
        slot: 38
        material: ARROW
        name: "<#ffccaa>← Previous Page"

      next:
        slot: 42
        material: ARROW
        name: "<#aaffdd>Next Page →"

Last updated