Content generated with AI — it may contain mistakes.

Holograms

Leaderboards

Turning a hologram into a top list that keeps its own values: stats, periods, the board's lines, per-viewer places, placeholders and resets.

Any hologram can become a leaderboard: a top list of kills, play time, a balance, any statistic or any placeholder. The plugin keeps the values itself, so no stats plugin is needed behind it, and offline players are ranked too.

Turning one on

FromHow
The editorLEADERBOARD on the hologram's screen: left-click opens its window (stats, periods and rows), right-click turns it on or off.
A command/holo <name> leaderboard on (the first stat of leaderboards.yml if it names none) and off.
The fileA leaderboard section on the hologram, below.

While a hologram is a leaderboard its lines are written from the section; the lines it had are kept for when it is turned off. /holo <name> leaderboard flatten turns the board into plain lines you can edit one by one; the places still read the board.

plugins/ExyliaDisplays/holograms.yml
holograms:
  top:
    leaderboard:
      enabled: true
      stats: [kills, playtime]        # ids from leaderboards.yml
      spans: [weekly, all-time]       # all-time, daily, weekly, monthly, yearly
      rows: 10                        # 1 to 30
      header: ['<size:1.6><shine:highlight>{highlight}&lTOP %stat%', '%resets%']
      row: '{highlight}%rank%. {letters}%name% {letters_black}· {info}%value%'
      empty-row: '{muted}%rank%. ---'
      you: '{success}You {letters_black}· {highlight}#%rank% {letters_black}· {info}%value%'
      you-unranked: '{muted}You are not on this board yet'
      footer: ['<size:0.4> ']
      stat-button: '{info}◀ {letters}%stat% {info}▶'
      span-button: '{info}◀ {letters}%span% {info}▶'
KeyDoes
statsWhat it ranks by. With more than one, a button turns through them.
spansThe periods shown. With more than one, a button turns through them.
rowsHow many places, 1 to 30.
headerLines above the places. %stat% is the stat's name, %span% the period's, %resets% when it starts over.
rowA place somebody holds: %rank%, %name%, %value%. <head:%name%> draws their face (1.21.9+ servers and clients).
empty-rowA place nobody holds yet: %rank%.
youThe viewer's own place, under the others: %rank%, %value%, %name%. Empty leaves it out.
you-unrankedThe viewer when they hold no place in this period yet.
footerLines below the places, before the buttons.
stat-button · span-buttonThe buttons that turn the stat / the period (left-click next, right-click back). Empty for none.

Every stat and period is a page. The buttons turn the page for the player who clicked, and nobody else. Every viewer sees their own place under the others.

From commands:

CommandDoes
/holo <name> leaderboardThe leaderboard window (players).
/holo <name> leaderboard stats <ids>The stats, by id, separated by commas: kills,deaths.
/holo <name> leaderboard spans <periods>The periods: all-time,weekly.
/holo <name> leaderboard rows <n>Places shown, 1 to 30.
/holoadmin leaderboard reset <stat> [period]Starts a board over on every server: one period, or every value when none is named.

What can be ranked

leaderboards.yml defines the stats and when periods start over:

plugins/ExyliaDisplays/leaderboards.yml
time-zone: 'Europe/Madrid'   # empty for the server's own
day-starts-at: 0             # the hour a day starts, 0-23
week-starts-on: MONDAY
sample-every: 1m             # how often online players are read
sort-every: 30s              # how often the boards are sorted again
stats:
  kills: {name: Kills, source: 'statistic:PLAYER_KILLS'}
  playtime: {name: Play time, source: playtime, format: duration}
  money: {name: Balance, source: balance, format: money}
  level: {name: Level, source: 'placeholder:%player_level%'}

Shipped stats: kills, deaths, mobs, playtime, money, diamonds, jumps.

KeyDoes
time-zoneThe zone days, weeks, months and years are counted in. Give every server of a network the same one.
day-starts-atAt 5, 03:00 still counts as yesterday.
week-starts-onMONDAY, SUNDAY...
sample-every / sort-everyHow often online players are read / boards are sorted again, so new values show.
stats.<id>.nameWhat players read.
stats.<id>.sourcestatistic:PLAYER_KILLS, statistic:MINE_BLOCK:DIAMOND_ORE, statistic:KILL_ENTITY:ZOMBIE, playtime, balance, balance:<currency>, placeholder:%some_placeholder%.
stats.<id>.formatEmpty (12,345), compact (1.2K), money, duration (for play time) or a pattern such as #,##0.#.
stats.<id>.per-serverEach server keeps its own value and the board adds them up (statistics always do).

Statistics, play time and balances count players who are offline too: they are read once, in the background, the first time a stat is tracked. A placeholder only counts players as they join. A period counts what was gained since it began. time-zone, day-starts-at and week-starts-on are also editable in game, in Settings on the hologram list.

Placeholders

The same values work anywhere that reads placeholders (an NPC's skin included):

PlaceholderGives
%exyliadisplays_lb_<stat>:<period>:<place>:name%The name at that place. Also value and taken (1 when someone holds it).
%exyliadisplays_lb_<stat>:<period>:me:rank%The viewer's place; :me:value% their value.
%exyliadisplays_lb_<stat>:<period>:resets%When the period starts over.

The period is all-time, daily, weekly, monthly or yearly. An NPC whose skin is %exyliadisplays_lb_kills:weekly:1:name% wears this week's best killer; see Statues.

A switched-off module

With modules.leaderboards: false boards stop updating and show nothing, and the leaderboard commands answer that the module is off. The change needs a restart. The module's words are in lang/<code>/messages/leaderboards.yml.

Something missing on this page? Tell us on Discord