=== Progression Plugin ===
Lightweight & fully‑customizable item unlock system for Spigot servers
Grant access to tools, weapons or any item based on:
* Killing mobs
* Breaking blocks
* Collecting materials
* PlaceholderAPI values
* Unlocking prerequisite items
=== Configuration (/plugins/Progression/config.yml) ===
Locked Items Format:
Code (Text):
locked-items:
<item_id>:
message: "<lock_message>"
condition:
type: <condition_type>
<condition_parameters>
* `<item_id>` = Bukkit Material or custom ID
* `<lock_message>` = shown when locked
* `<condition_type>` = kills / collect / break / placeholder / prerequisite / composite
Condition Types:
*
kills
Code (Text):
condition:
type: kills
entity: zombie
amount: 50
*
collect
Code (Text):
condition:
type: collect
material: APPLE
amount: 100
*
break
Code (Text):
condition:
type: break
material: STONE
amount: 200
*
placeholder (requires PlaceholderAPI)
Code (Text):
condition:
type: placeholder
placeholder: vault_balance
amount: 1000
*
prerequisite
Code (Text):
condition:
type: prerequisite
item: wooden_sword
*
composite (AND logic)
Code (Text):
condition:
type: composite
conditions:
- type: prerequisite
item: stone_sword
- type: kills
entity: zombie
amount: 30
=== Examples ===
Sword Progression
Code (Text):
locked-items:
wooden_sword:
message: "Kill %prog_wooden_sword_progress%/%prog_wooden_sword_amount% zombies!"
condition:
type: kills
entity: zombie
amount: 10
stone_sword:
message: "Unlock wooden sword first!"
condition:
type: prerequisite
item: wooden_sword
iron_sword:
message: "Unlock stone + kill %prog_iron_sword_progress%/%prog_iron_sword_amount% zombies."
condition:
type: composite
conditions:
- { type: prerequisite, item: stone_sword }
- { type: kills, entity: zombie, amount: 30 }
Sequential Collection
Code (Text):
locked-items:
apple:
message: "Collect %prog_apple_progress%/%prog_apple_amount% grass blocks"
condition: { type: collect, material: GRASS_BLOCK, amount: 1 }
golden_apple:
message: "Collect grass & apples (after apple)"
condition:
type: composite
conditions:
- { type: prerequisite, item: apple }
- { type: collect, material: GRASS_BLOCK, amount: 2 }
- { type: collect, material: APPLE, amount: 1 }
*(Grass before unlock doesn’t count.)*
Custom Items (1.21.5+)
Code (Text):
wooden_pickaxe:
message: "Need %prog_wooden_pickaxe_progress%/%prog_wooden_pickaxe_amount% repair tokens"
condition: { type: collect, material: repairtoken:repair_token, amount: 1 }
repairtoken:repair_token:
message: "Need %prog_repairtoken:repair_token_progress%/%prog_repairtoken:repair_token_amount% player level"
condition: { type: placeholder, placeholder: player_level, amount: 10 }
=== Placeholders ===
* `%prog_<item>_progress%` — current progress
* `%prog_<item>_amount%` — required amount
* `%prog_<item>_type%` — condition type
* `%prog_<item>_percentage%` — progress %
* `%prog_<item>_unlocked%` — “yes”/“no”
Composite example:
* `%prog_golden_apple_collect_apple_progress%`
* `%prog_golden_apple_collect_apple_amount%`
=== Commands & Permissions ===
/prog — help (
progression.use)
/prog status — held item status (
progression.view)
/prog reload — reload config (
progression.reload)
/prog unlock <player/all> <item> — unlock (
progression.admin)
/prog lock <player/all> <item> — lock/reset (
progression.admin)
/prog reset <player/all> — reset all (
progression.admin)
=== Permission Defaults ===
progression.use: true
progression.view: true
progression.reload: op
progression.admin: op
progression.bypass: op
=== Support & Resources ===
* Github:
https://github.com/ThijnBr/progression
* DiscordSupport:
https://discord.com/invite/pNps5D2N83