Progression
The rank ladder and its prestige, playtime rewards, farming milestones and the /reclaim sections.
Rankup
A ladder of ranks in modules/rankup/ranks.yml. Each one has requirements to meet and a reward for
meeting them.
ranks:
member:
display-name: "&7Member"
icon: COAL
order: 1
description: []
requirements: []
reward:
commands: []
broadcast: ""
sound: ""
auto-rankup: false/rankup opens the ladder, showing what is met and what is not; /rankup claim takes the next rank
when everything is satisfied. settings.auto-rankup promotes without asking, and a per-rank
auto-rankup does the same for one rung.
Requirements
A requirement is a type and one field. Any entry may also carry display, which is the line shown in
the menu instead of a generated one.
type | Field | Meaning |
|---|---|---|
money | amount | A balance, through the economy |
playtime | time | Time played — 30m, 1h, 5h |
placeholder | condition | A PlaceholderAPI comparison |
permission | node | A permission node they must hold |
A money amount grows with prestige: it is multiplied by prestige.cost-multiplier once per prestige
level the player holds, and the menu shows the amount they actually need.
The shipped comment mentions kills and level. Neither is real. A requirement whose type is not
one of the four above is dropped silently when the file is read — so a rank whose only requirement
was kills costs nothing at all.
/rankup claim takes every money requirement out of the balance itself, scaled for prestige, before
the reward runs. The shipped ranks also carry eco take %player% <amount> in their reward commands, so
a player climbing the default ladder by hand pays each rank twice.
An automatic rank-up — settings.auto-rankup or a rank's own auto-rankup — charges nothing and fires
no RankUpEvent: only the reward commands run. So on the default ladder an automatic promotion pays
once, through eco take, at the unscaled amount.
Keep the eco take lines on ranks that promote automatically, and remove them from ranks players claim.
Prestige
A player at the top of the ladder can prestige with /rankup prestige, or with the star in the corner
of the /rankup menu. It charges the prestige cost, takes their rank away, raises their prestige level
by one and runs the prestige rewards. They then climb the ladder again from the first rank, with every
money requirement scaled to the new level.
The prestige section of modules/rankup/config.yml:
| Setting | Default | What it does |
|---|---|---|
enabled | true | Whether anyone can prestige |
max-level | 0 | Highest prestige level. 0 means no limit |
cost | 25000 | Money charged to prestige. 0 is free |
cost-multiplier | 1.5 | Applied to every money requirement once per level: a $1,000 rank costs $1,500 on prestige 1 and $2,250 on prestige 2. 1.0 keeps the ladder the same |
reward-commands | lp user %player% parent set member | Console commands. %player% is the player, %level% the level just reached |
reward-broadcast | {highlight}✦ {letters}%player% {muted}reached prestige {highlight}%level%{muted}! | Sent to everyone with rank-up announcements on. Empty for none |
reward-sound | UI_TOAST_CHALLENGE_COMPLETE|1.0|1.0 | Played to the player. Empty for none |
A prestige is refused when it is disabled, when the player is not on the last rank, when they are
already at max-level, and when they cannot pay — including when cost is above 0 and no economy is
available. The menu's star shows the current and next level, the cost (Free at 0) and which of those
applies. %exyliasurvivalcore_rankup_can_prestige% answers yes or no.
/rankupadmin prestige <player> <level> sets a prestige level directly; /rankupadmin set and reset
move a player around the ladder, and /rankupadmin info reports where they are. A rank id that is not
in the file is refused.
settings.notify-on-login tells a player on join when they can rank up.
Playtime rewards
Rewards unlocked by time played, claimed from /playtime.
rewards:
newcomer: { display-name: "…", icon: …, required-playtime: "30m", commands: [], auto-claim: false }
first_hour: { required-playtime: "1h", … }
five_hours: { required-playtime: "5h", … }
veteran: { required-playtime: "25h", … }
legend: { required-playtime: "100h", … }| Setting | Default | What it does |
|---|---|---|
notify-on-login | true | Tell them on join what is claimable |
notify-on-unlock | true | Tell them the moment one unlocks |
global-auto-claim | false | Claim everything automatically, overriding each reward's own flag |
The bare /playtime opens the menu, but the command takes an optional reward id and claiming is what
it does with it. There is no node on the command — only the playtime itself stops a player.
Farming
Counts blocks broken or mobs killed, and pays per N and at milestones.
categories:
wheat_farming:
type: BLOCK
display-name: "&eWheat"
icon: WHEAT
tracked: [WHEAT]
require-max-growth: true
count-above: false
reward-every: 50
reward: { money: 2, commands: [], message: "", actionbar: "", sound: "" }
milestones:
novice: { display-name: "…", required-count: 100, money: 10, … }
infinite-milestone:
enabled: true
interval: 1000
money: 50| Key | What it does |
|---|---|
type | BLOCK for breaking, ENTITY for killing |
tracked | The materials or entity types that count |
require-max-growth | Only fully grown crops count |
count-above | For stacking plants — sugar cane, bamboo — count the blocks above too |
reward-every | Pay every N. 0 turns the per-N reward off |
milestones | One-off rewards at a total count |
infinite-milestone | Keeps paying every interval after the named milestones run out |
Every reward block — reward, each milestone and infinite-milestone — takes money, commands,
message, actionbar and sound. money is paid in the default currency and multiplied by money
boosters for farming (see Economy); %money% is what was paid,
after boosters. The shipped categories pay through money rather than eco give commands.
/farming shows progress. /farmingadmin set, reset, resetall and info need
survivalcore.farming.admin, and the three that write need survivalcore.farming.admin.set.
Reclaim
/reclaim runs a block of commands — a donor kit, a monthly crate, whatever you write. Sections are
defined in modules/reclaim/config.yml.
sections:
default:
permission: exyliasurvivalcore.reclaim.default
priority: 0
each: "-1"
broadcast: ""
commands: []
vip:
permission: exyliasurvivalcore.reclaim.vip
priority: 1
each: "7d"
commands: []Sections are sorted by priority, highest first, and the first one whose permission the player holds is the one that runs. So a VIP gets the VIP section and nothing else, not both.
each is how often it may be run: -1 means once ever, and anything else is a duration — 7d, 12h,
30m, 45s. %player% is substituted into every command.
/reclaimadmin reset <player> and resetsection <player> <section> clear the record.
Anyone can run it. What they get is decided entirely by which section permission they hold — a player
holding none is told there is nothing for them. Grant exyliasurvivalcore.reclaim.default to the
group that should have the default section, and nothing wider.
Farming, playtime rewards, rankup and reclaim each saved a stale copy of the player's row alongside the claim's own write, and when the stale save landed second the claim vanished and could be collected again on the next login. Fixed in 1.1.1; if you are on an older build, that is what you were seeing.
Counters
These four modules count into the stats counters, which leaderboards, missions and seasons read — see Statistics.
| Counter | What it counts |
|---|---|
rankup.ranks | Ranks taken with /rankup claim or the menu. An automatic rank-up is not counted |
playtime.rewards | Playtime rewards claimed |
farming.harvested | Every block or mob a farming category counted |
farming.<category>.harvested | The same, for one category |
reclaim.claimed | Reclaim sections run |
reclaim.<section>.claimed | The same, for one section |
Something missing on this page? Tell us on Discord