Content generated with AI — it may contain mistakes.

Modules

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.

typeFieldMeaning
moneyamountA balance, through the economy
playtimetimeTime played — 30m, 1h, 5h
placeholderconditionA PlaceholderAPI comparison
permissionnodeA 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.

`ranks.yml`'s own header lists two types that do not exist

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.

The shipped ladder charges twice on `/rankup claim`, and nothing on an automatic one

/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:

SettingDefaultWhat it does
enabledtrueWhether anyone can prestige
max-level0Highest prestige level. 0 means no limit
cost25000Money charged to prestige. 0 is free
cost-multiplier1.5Applied 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-commandslp user %player% parent set memberConsole 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-soundUI_TOAST_CHALLENGE_COMPLETE|1.0|1.0Played 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", … }
SettingDefaultWhat it does
notify-on-logintrueTell them on join what is claimable
notify-on-unlocktrueTell them the moment one unlocks
global-auto-claimfalseClaim everything automatically, overriding each reward's own flag
`/playtime <rewardId>` claims, and checks no permission

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
KeyWhat it does
typeBLOCK for breaking, ENTITY for killing
trackedThe materials or entity types that count
require-max-growthOnly fully grown crops count
count-aboveFor stacking plants — sugar cane, bamboo — count the blocks above too
reward-everyPay every N. 0 turns the per-N reward off
milestonesOne-off rewards at a total count
infinite-milestoneKeeps 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.

`/reclaim` checks no permission of its own

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.

Four modules used to lose a claim

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.

CounterWhat it counts
rankup.ranksRanks taken with /rankup claim or the menu. An automatic rank-up is not counted
playtime.rewardsPlaytime rewards claimed
farming.harvestedEvery block or mob a farming category counted
farming.<category>.harvestedThe same, for one category
reclaim.claimedReclaim sections run
reclaim.<section>.claimedThe same, for one section

Something missing on this page? Tell us on Discord