Skip to content

milestones.yml

Jan Kluka edited this page Sep 7, 2026 · 4 revisions
# ----------------------------------------------------------------------------
#  Milestones
# ----------------------------------------------------------------------------
#  Turns the big moments in a player's progression into something they notice -
#  a title, a sound, a firework, a server-wide broadcast, or any commands you
#  like. Every entry below is optional; delete the ones you don't want.
#
#  type:      rank | prestige | rebirth | pickaxe-level | blocks | playtime
#             blocks and playtime are counters that climb in jumps, so they fire
#             once when the threshold is crossed and ignore 'exact'.
#             Another plugin can register a track of its own, and its key
#             works here exactly like the ones above.
#  at:        the value that triggers it (rank id, prestige number, and so on)
#  exact:     true  = fires only when the player lands exactly on 'at'
#             false = fires every time they are at or past 'at'
#  title / subtitle / message / broadcast : raw MiniMessage, all optional
#  sound:     any Bukkit sound name, optional
#  firework:  launch a firework at the player
#  commands:  run from console, optional
#
#  Placeholders in every text field and command: %player%, %value%
# ----------------------------------------------------------------------------
enabled: true

# ----------------------------------------------------------------------------
#  The /milestones menu
# ----------------------------------------------------------------------------
#  Every value here is optional - delete any of them and the menu falls back to
#  the default. Slots are inventory slots, 0-53.
#
#  A milestone item is ORANGE while claimed and RED while locked, so a player
#  scanning a page sees where they stand before reading a line.
# ----------------------------------------------------------------------------
#  The /milestones menu
# ----------------------------------------------------------------------------
#  Everything here is optional - delete any value and the menu falls back to the
#  default shown. Slots are inventory slots, 0-53.
#
#  Placeholders, in the track lines:
#    %track% %description% %value% %level% %total% %progress_bar% %percent% %status%
#  Placeholders, in the milestone lines:
#    %level% %track% %requirement% %value% %progress_bar% %percent%
#    %status% %status_suffix%    and %rewards%, which expands to one line per reward
#
#  Any icon takes a material, or a base64 head 'texture', plus optional
#  custom-model-data for a resource pack.
# ----------------------------------------------------------------------------
gui:
  title: '<blue><bold>MILESTONES</bold></blue>'
  rows: 6
  filler: BLACK_STAINED_GLASS_PANE
  # Cosmetic frame drawn under everything else. Each entry is a normal item at a
  # single 'slot' or a list of 'slots' - delete an entry to drop that piece.
  decorations:
    tab-row:
      material: BLUE_STAINED_GLASS_PANE
      name: ' '
      slots: [0, 4, 8]
    bottom-row:
      material: BLUE_STAINED_GLASS_PANE
      name: ' '
      slots: [46, 47, 48, 50, 51, 52]
  # Open on the page holding the milestone the player is working toward, rather
  # than always on page one - a long ladder is tedious to click through.
  open-on-next-unclaimed: true
  aliases:
    - milestones
    - milestone
    - ms
  first-item-slot: 9
  items-per-page: 36

  claimed:
    material: ORANGE_DYE
    texture: ''
    custom-model-data: 0
  locked:
    material: RED_DYE
    texture: ''
    custom-model-data: 0

  progress-bar:
    length: 20
    symbol: '|'
    format: '<gray>[%bar%<gray>] <green>(%percent%%)'
    percent-format: '0.0'

  format:
    number: '#,##0'
    # A zero leading unit is dropped, so 45 minutes reads as '45m'.
    duration: '%days%d %hours%h %minutes%m'

  buttons:
    previous-page:
      slot: 45
      material: ARROW
      name: '<yellow>Previous page'
      lore: []
    next-page:
      slot: 53
      material: ARROW
      name: '<yellow>Next page'
      lore: []
    close:
      enabled: true
      slot: 49
      material: BARRIER
      name: '<red>Close'
      lore: []

  status:
    viewing: '<green>(( Viewing this track ))'
    click-to-view: '<gray>(( Click to view! ))'
    claimed: '<green><bold>MILESTONE REDEEMED</bold></green>'
    locked: '<dark_gray>(( You have not unlocked this yet ))'
    claimed-suffix: '<green>(CLAIMED)'
    locked-suffix: '<red>(LOCKED)'

  track-name: '<blue><bold>Milestones</bold></blue> <dark_gray>|</dark_gray> <white>%track%'
  track-lore:
    - '<gray>Milestone Track'
    - ''
    - '<red><bold>Information:</bold></red>'
    - '<white>%description%'
    - ''
    - '<red><bold>Statistics:</bold></red>'
    - '<red>| <white>%track%: <aqua>%value%'
    - '<red>| <white>Milestone: <aqua>%level%'
    - '<red>| <white>Progress: %progress_bar%'
    - ''
    - '%status%'

  milestone-name: '<light_purple><bold>Level %level%</bold></light_purple> %status_suffix%'
  milestone-lore:
    - '<gray>Milestone'
    - ''
    - '<red><bold>Information:</bold></red>'
    - '<red>| <white>Milestone: <light_purple>%requirement%'
    - '<red>| <white>Progress: %progress_bar%'
    - ''
    - '<red><bold>Rewards:</bold></red>'
    - '%rewards%'
    - ''
    - '%status%'
  reward-line: '<red>| <yellow>%reward%'

  # One entry per track. 'permission' left empty means everyone sees the tab.
  tracks:
    prestige:
      name: 'Prestige'
      description: 'Prestige to unlock incredible rewards!'
      slot: 1
      permission: ''
      icon:
        material: PLAYER_HEAD
        texture: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjlmY2JlOTQ1NTRmYjc0NDQ2MzFmYjVjOTgzZDI1Njg4YmIyNjdhMzdlYWE5YjY5Y2JlNTU5MWE2ZTllZTVmYiJ9fX0='
        custom-model-data: 0
    rebirth:
      name: 'Rebirth'
      description: 'Rebirth to claim the biggest rewards on the server!'
      slot: 2
      permission: ''
      icon:
        material: PLAYER_HEAD
        texture: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTczM2ZkNDUxNmZlNGIyMjE5NDI0NzE1MGQ2YzA0YTE1MTk1OGQ3YzI2N2Q5OGQ5NDIzZDM0MmJlNmE0MDUwYiJ9fX0='
        custom-model-data: 0
    rank:
      name: 'Rank'
      description: 'Rank up to climb this track!'
      slot: 3
      permission: ''
      icon:
        material: NAME_TAG
        texture: ''
        custom-model-data: 0
    blocks:
      name: 'Blocks'
      description: 'Break blocks to earn your way up the ladder!'
      slot: 5
      permission: ''
      icon:
        material: PLAYER_HEAD
        texture: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzJlYzI2MmI1YzA4OTc0NjQwMGM1N2M2YjBiNGMzMzg1NTk5YjdiYjZkNGE5OGFiNGYwMWYyNmNiNmQ0Y2MzMyJ9fX0='
        custom-model-data: 0
    playtime:
      name: 'Playtime'
      description: 'Earn rewards by spending time on the server!'
      slot: 6
      permission: ''
      icon:
        material: PLAYER_HEAD
        texture: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjhlYmI3NGY2NjUzZGZmMTI1NDgxNTkzZjc5ZjU3MzJmMjU2NzI5Y2MxNjQyNmE3MzAwNGNmMzc2OTdhMGRmZCJ9fX0='
        custom-model-data: 0
    pickaxe-level:
      name: 'Pickaxe'
      description: 'Level your pickaxe to climb this track!'
      slot: 7
      permission: ''
      icon:
        material: PLAYER_HEAD
        texture: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjZlYTIxMzU4Mzg0NjE1MzQzNzJmMmRhNmM4NjJkMjFjZDVmM2QyYzcxMTlmMmJiNjc0YmJkNDI3OTEifX19'
        custom-model-data: 0
milestones:

  first-prestige:
    type: prestige
    at: 1
    exact: true
    title: '<gradient:#FFD700:#FFA500><bold>PRESTIGE</bold></gradient>'
    subtitle: '<white>You prestiged for the first time!'
    broadcast: '<gradient:#FFD700:#FFA500><bold>PRESTIGE</bold></gradient> <dark_gray>»</dark_gray> <yellow>%player%</yellow> <white>reached their first prestige!'
    sound: ENTITY_PLAYER_LEVELUP
    firework: true
    commands: []

  prestige-10:
    type: prestige
    at: 10
    exact: true
    title: '<gradient:#FFD700:#FFA500><bold>PRESTIGE 10</bold></gradient>'
    subtitle: '<white>Ten prestiges deep.'
    broadcast: '<gradient:#FFD700:#FFA500><bold>PRESTIGE</bold></gradient> <dark_gray>»</dark_gray> <yellow>%player%</yellow> <white>hit prestige <yellow>%value%</yellow>!'
    sound: ENTITY_PLAYER_LEVELUP
    firework: true
    commands: []

  first-rebirth:
    type: rebirth
    at: 1
    exact: true
    title: '<gradient:#FF7F50:#FF4500><bold>REBIRTH</bold></gradient>'
    subtitle: '<white>A fresh start, with a permanent edge.'
    broadcast: '<gradient:#FF7F50:#FF4500><bold>REBIRTH</bold></gradient> <dark_gray>»</dark_gray> <yellow>%player%</yellow> <white>was reborn for the first time!'
    sound: ENTITY_ENDER_DRAGON_GROWL
    firework: true
    commands: []

  pickaxe-level-100:
    type: pickaxe-level
    at: 100
    exact: true
    title: '<gradient:#FFD700:#FFA500><bold>LEVEL 100</bold></gradient>'
    subtitle: '<white>Your pickaxe is coming along.'
    message: '<gradient:#FFD700:#FFA500><bold>PICKAXE</bold></gradient> <dark_gray>»</dark_gray> <white>Your pickaxe reached <yellow>Level %value%</yellow>!'
    sound: BLOCK_ANVIL_USE
    firework: false
    commands: []

  pickaxe-level-300:
    type: pickaxe-level
    at: 300
    exact: true
    title: '<gradient:#FFD700:#FFA500><bold>LEVEL 300</bold></gradient>'
    subtitle: '<white>Four digits.'
    broadcast: '<gradient:#FFD700:#FFA500><bold>PICKAXE</bold></gradient> <dark_gray>»</dark_gray> <yellow>%player%</yellow><white>''s pickaxe reached <yellow>Level %value%</yellow>!'
    sound: ENTITY_PLAYER_LEVELUP
    firework: true
    commands: []

XPrison Logo

General

Modules

Default Configs

Enchant Configs — Passive

Enchant Configs — Currency Rewards

Enchant Configs — Key & Item Rewards

Enchant Configs — Area of Effect

Enchant Configs — Multipliers

Enchant Configs — Templates

Enchant Configs — Addons

Addons

Support

For Developers

Others

Clone this wiki locally