Skip to main content

Categories

categories.yml defines every collection, resource, tier, and reward. Edit it freely.

This is the file you change most. After any edit, run /collection reload.

warning

Do not change the categories-version line at the top. It controls automatic updates.

The shape of the file

categories:
<collection-id>:
display-name, icon, slot, description
resources:
<resource-id>:
display-name, material, trigger
locked-icon, unlocked-lore
tiers:
- threshold, rewards

A collection holds resources. A resource holds tiers. A tier holds a threshold and a list of rewards.

A collection

mining:
display-name: '&#FFAA00Mining'
icon: IRON_PICKAXE
inline: false
description:
- '&7Discover and gather'
- '&7all mining resources.'
resources:
...
SettingWhat it does
display-nameThe name shown in menus, with color codes
iconThe item shown for this collection in the main menu
textureOptional base64 head value for a custom skull icon. Needs icon: PLAYER_HEAD
inlinefalse (default): the collection is one icon on the main menu; click it to open. true: each resource shows directly on the main menu instead of one icon
slotOptional. Pins this collection to that exact main-menu slot. Slots count from 0, so the top-left is slot 0, the first row is 0-8, the second row starts at 9, and so on. Leave it out to auto-fill
pageOptional. The main-menu page (1, 2, 3, ...) the pinned slot sits on. Defaults to 1
descriptionLore lines shown under the icon
resourcesThe resources inside this collection
info

Set slot to pin a collection to an exact main-menu slot, and page to choose which page it sits on. Collections with no slot auto-fill the leftover content-slots from menus.yml, overflowing onto extra pages as needed. A Next Page button appears only when more than one page is used. Use inline: true to break a small collection like Divers apart so its resources sit on the main menu directly.

When a collection is inline: true you can pin each resource the same way: give the resource its own slot (and optional page) to place it on an exact main-menu spot. Inline resources with no slot auto-fill the leftover slots. A resource slot only does something while its collection is inline; on a normal collection the resource lives in the collection's own sub-menu, so it is ignored.

A resource

stone:
display-name: '&7Stone'
material: STONE
trigger:
type: BLOCK_BREAK
targets: [STONE, COBBLESTONE]
ignore-player-placed: true
locked-icon:
material: GRAY_DYE
name: '&7??? &8(Locked)'
lore:
- '&7Break this resource'
- '&7to discover it.'
unlocked-lore:
- '&7Progress: &f{current}&8/&f{next}'
- '&#FFAA00Tier: &f{tier}&8/&f{max-tier}'
tiers:
- threshold: 300
rewards:
- 'money:500'
SettingWhat it does
display-nameThe resource name, with color codes
materialThe item shown once discovered
textureOptional base64 head value for a custom skull icon. Needs material: PLAYER_HEAD
slotOptional. When the collection is inline: true, pins this resource to that exact main-menu slot (counts from 0). Ignored unless inline
pageOptional. The main-menu page (1, 2, 3, ...) the pinned inline resource sits on. Defaults to the collection's page
triggerWhat counts toward this resource (see below)
locked-iconThe item, name, and hint shown while undiscovered
unlocked-loreThe lore shown once discovered, with placeholders
tiersThe list of thresholds and rewards

The trigger

trigger:
type: BLOCK_BREAK
targets: [STONE, COBBLESTONE]
ignore-player-placed: true
require-fully-grown: true
FieldWhat it does
typeBLOCK_BREAK, ENTITY_KILL, FISH_CATCH, EXP_GAIN, or STAT
targetsThe blocks, mobs, or fish that count, by Minecraft name
ignore-player-placedSkip blocks the player placed. BLOCK_BREAK only
require-fully-grownOnly count fully grown crops. BLOCK_BREAK only
count-stackedCount every block that falls when breaking a stacked plant (sugar cane, kelp, cactus, bamboo), not just the one broken. BLOCK_BREAK only

BLOCK_BREAK, ENTITY_KILL, and FISH_CATCH add one progress per player action.

See Collections for trigger types and Anti-exploit for the two checks.

Stat triggers (the Divers collection)

Some things aren't a single break, kill, or catch. The EXP_GAIN and STAT trigger types track running totals instead, and power the built-in Divers collection (playtime, votes, experience, island level).

divers:
display-name: '&dDivers'
icon: CLOCK
inline: false
resources:
playtime:
display-name: '&bPlaytime'
material: CLOCK
trigger:
type: STAT
stat: PLAYTIME # hours played, built-in
# locked-icon, unlocked-lore, tiers (thresholds in hours)...
xp:
display-name: '&aExperience'
material: EXPERIENCE_BOTTLE
trigger:
type: EXP_GAIN # lifetime experience earned, counts from install
FieldWhat it does
type: EXP_GAINAdds up experience points the player earns over time (lifetime total, not their current XP). No targets needed.
type: STATReads a whole number on a timer instead of per action. Needs stat.
stat: PLAYTIMEHours played. Built in, no other plugin needed.
stat: PLACEHOLDERReads any number from a PlaceholderAPI placeholder. Needs placeholder.
placeholderThe placeholder to read, like %VotingPlugin_Total% or %SuperiorSkyblock2_island_level%. Only for stat: PLACEHOLDER.
goal-placeholderOptional, STAT only. A placeholder giving the live completion target. The resource then has one tier, awarded when the tracked value reaches this goal, and the goal is re-read every poll so it adjusts itself. Used for the AdvancedHunt heads collection.
info

STAT resources refresh on a timer set by divers.poll-interval in config.yml (default 60 seconds).

Tracking another plugin's number (votes, island level, and so on) with stat: PLACEHOLDER has its own page with worked examples: Stat collections (PlaceholderAPI). For a live, self-adjusting goal, see AdvancedHunt heads.

Lore placeholders

Use these inside unlocked-lore. The plugin fills them in per player.

PlaceholderShows
{current}Current progress
{next}Progress needed for the next tier
{tier}Current tier number
{max-tier}Highest tier number
{next-reward-summary}A short summary of the next reward

Tiers and rewards

tiers:
- threshold: 300
rewards:
- 'money:500'
- 'command:broadcast {player} reached tier 1 in Stone!'
- threshold: 1000
rewards:
- 'money:1500'
- 'item:DIAMOND:3'

List tiers in order, lowest threshold first. Each tier has a threshold (progress needed) and a list of rewards. The five reward formats are covered in full on Tiers and Rewards:

TypeExample
Moneymoney:500
Itemitem:DIAMOND:3
Commandcommand:give {player} netherite_ingot 1
Permissionpermission:zcollections.title.stonemaster
Experienceexp:500

Adding your own

To add a resource, copy an existing one inside a collection, change the id, the display-name, the material, and the trigger targets, then set your tiers. To add a whole collection, copy an existing collection block, change its id, display-name, and icon, and give it resources. Run /collection reload when done.