Skip to content
◆ TTS-STUDIO docs Discord

Plugins / SkillsRPG

Milestones

Milestones are skill-specific challenge quests that unlock at skill level thresholds. Completing one grants the player a permanent MILESTONE ability — one that cannot be purchased with points and is never lost during a respec.

How milestones work

Each skill has 4 milestone tiers: levels 25, 50, 75, and 100.

When a player's skill level crosses one of these thresholds, the corresponding milestone quest auto-starts — no command needed. The challenge tab in the GUI hub shows active progress.

Once the player meets the condition, the MILESTONE ability for that tier is automatically granted at rank 1. The player receives a notification in chat and can immediately equip the ability from the hub.

There are 32 milestone abilities in total (4 per skill × 8 skills). Each grants a permanently accessible passive or active ability themed around what the player accomplished to earn it.

Milestone tiers

The four Mining quests that ship in milestones.yml:

Tier Skill level Quest Reward
I 25 Break 500 blocks of stone, cobblestone or deepslate Tunneler
II 50 Mine 200 ore blocks of any kind Veinminer Pro
III 75 Mine 100 diamond ores Diamond Sense
IV 100 Break 5000 blocks World Breaker

Every skill has four quests in the same spirit: combat skills count kills, damage and streaks with their own weapon; gathering skills count blocks, crops and catches.

The 8 condition types

Condition YAML key What counts
Kill count kill_count Each mob or player the player kills.
Block break count block_break_count Each block the player breaks.
No-miss arrows no_miss_arrows Arrow hits in a row. An arrow that hits nothing resets the streak.
Timed kill timed_kill Kills inside the time-limit-ms window.
Damage dealt damage_dealt Melee damage the player deals, in half-hearts.
Fish caught fish_caught Each catch with a fishing rod.
Crops harvested crops_harvested Fully grown crops the player breaks.
Damage blocked damage_blocked Damage stopped with a raised shield.

Blocks placed by players and blocks made by a lava/water generator never count, for quests or for XP.

Quest format

milestones:
  mining.lv75:
    skill: mining
    trigger-level: 75                   # the quest starts when the skill reaches this level
    condition: block_break_count
    params:
      material: [DIAMOND_ORE, DEEPSLATE_DIAMOND_ORE]
    goal: 100
    reward-ability: mining.diamond_sense   # MILESTONE ability granted on completion
    name: "<#FF8A5C><b>Gem Diviner"
    description: "<gray>Unearth 100 diamond ores from the deep."

params narrows down what counts. Leave a key out (or write params: {}) to count everything.

Param Works with Meaning
material: [..] block_break_count Only these block types.
biome_required: forest block_break_count Only in biomes whose name contains the word (forest also matches birch_forest, dark_forest...).
weapon: SWORD \| AXE \| BOW kill_count, timed_kill, damage_dealt Swords and axes are the item in the main hand; BOW means the kill came from an arrow.
pvp_only: true kill_count, timed_kill Only players.
target: HOSTILE kill_count, timed_kill Only hostile mobs.
low_hp_threshold: 0.2 kill_count, timed_kill The killer was at or below 20% of their max health.
min_distance: 40 no_miss_arrows Hits closer than 40 blocks don't count. A miss still resets the streak.
treasure_only: true fish_caught Only treasure: enchanted books and gear, name tags, saddles, nautilus shells.

time-limit-ms (e.g. 300000 for five minutes) turns a quest into a timed one: the goal has to be reached inside that window. When the window runs out, the count starts again from the next kill. A timed quest never locks.

Progress is saved to the database and survives restarts. A respec does not reset milestone progress or take back MILESTONE abilities.

Milestone abilities vs. base abilities

Property BASE MILESTONE
Earned by Spending points Completing a quest
Revoked by respec Yes (points refunded) No — permanent
Rankable Yes (up to max-rank) No — always rank 1
Equippable to bar Yes Yes
Points cost Yes None

Keep reading