DirtyLeaderboards
1.3The ultimate™ leaderboards plugin. Allows you to make modern leaderboards easily.

DirtyLeaderboards
The ultimate
leaderboards plugin. Allows you to make modern leaderboards easily.
📖 How It Works
Everything you see is just vanilla BlockDisplay/TextDisplay entities, positioned and animated
by the plugin every tick. Ten rows that slide in and out with
real player heads (<head:uuid>) and item/particle icons (<sprite:atlas:path>).
Displays cycle through however many leaderboards you configure, one at a time, with slide
animations between them. You can run as many separate displays as you want, each with its own
location and its own rotation.
⚠️ Important Notice
Compatibility: Requires Paper 1.21.9 or newer. The row
icons rely on the vanillasprite/headtext components added in 1.21.9, so this won't work
on Spigot or older versions (They will show asa space).
✨ Features
Fully entity-based displays
Multiple leaderboards per display, rotating on a timer you control
Three data sources - vanilla Bukkit statistics, a custom Skript syntax and PlaceholderAPI placeholder
Custom styling - colors, icons (including animated ones, like the playtime clock), rank colors, number/time formatting are customizable for each leaderboard
Skript integration - effects, expressions, a condition and a rotate event
PlaceholderAPI expansion
A Bukkit event (
LeaderboardRotateEvent) for plugin developersLive reload -
/dlb reloadreloads all three config files without a restartMultiple displays, each independently started, stopped, skipped or moved
🗃️ Leaderboard Sources
Each leaderboard in leaderboards.yml picks one source:
statistic- pulls straight from a vanilla Bukkit statistic (kills, deaths, playtime, you
name it). Can't be manipulated without another plugin.custom- Most commonly changed by our custom skript syntax.placeholder- modified by PlaceholderAPI placeholders. Offline players are resolved in
small batches per tick (placeholder-players-per-tickinconfig.yml) so it doesn't slow down the
main thread on servers with lots of players.
🛠️ Commands
Base command is /dirtyleaderboards.
Aliases: dlb, leaderboards, dirtyboards, boards, db, dirtyboard, leaderboard, lb, dlbs.
If you only have one display configured, you can leave <display> empty and it'll default to your only leaderboard.
| Command | Description |
|---|---|
/dlb help | Lists the commands below |
/dlb list | Lists every display and whether it's running |
/dlb reload | Reloads config.yml, leaderboards.yml and messages.yml |
/dlb start <display> | Starts a display |
/dlb stop <display> | Stops a display |
/dlb skip <display> | Skips to the next leaderboard in the rotation |
/dlb move <display> | Moves a display to where you're standing and facing |
🔐 Permission
| Permission | Description | Default |
|---|---|---|
dirtyleaderboards.admin | Access to every /dlb subcommand | OP |
🧩 Skript
The Skript addon registers itself automatically if Skript is present.
# control a display
start the leaderboard display "main"
stop the leaderboard display "main"
skip the leaderboard display "main"
# check state
current leaderboard of display "main"
leaderboard display "main" is running
# read/write a single player's score on a "custom" source board
set leaderboard data of player in "points" to 100
add 5 to leaderboard data of player in "points"
remove 2 from leaderboard data of player in "points"
reset leaderboard data of player in "points"
# wipe an entire board for every player (not just yours)
clear the leaderboard data for leaderboard "points"
# react whenever any display rotates to a new leaderboard
on leaderboard rotate:
broadcast "%rotated display id% just switched to %rotated leaderboard id%"
🔗 PlaceholderAPI
Registers as %dirtyleaderboards_...% once PlaceholderAPI is installed:
| Placeholder | Returns |
|---|---|
%dirtyleaderboards_top_<board>_<rank>_name% | Name of the player at that rank |
%dirtyleaderboards_top_<board>_<rank>_value% | Their value, formatted (e.g. 15.2k) |
%dirtyleaderboards_top_<board>_<rank>_raw% | Their value, unformatted |
%dirtyleaderboards_value_<board>% | The viewing player's own value, formatted |
%dirtyleaderboards_raw_<board>% | The viewing player's own value, unformatted |
⚙️ Configuration
config.yml- global settings: caching, number/time formatting, and onedisplays:entry
per billboard (location, rotation order, colors, block types).leaderboards.yml- the leaderboards themselves: source, title, icon, formatting, and
stored values forcustomboards.messages.yml- every message the plugin sends. Uses MiniMessage.
A single leaderboard entry looks like this:
leaderboards:
kills:
enabled: true
source: statistic
statistic: player_kills
title: "TOP KILLS"
title-color: "#ee2a2a"
value-color: "#FFD263"
icon: "<sprite:items:item/diamond_sword>"
icon-width: 12
format: number
minimum-value: 1
duration-seconds: 15
Similar projects
Plugin →EssentialsX
The essential plugin suite for Paper and Spigot servers.
832.5KSueta
PacketEvents
PacketEvents is a protocol library tailored to Minecraft Java Edition, designed to facilitate the processing and transmission of packets.
829.2KSueta
Axiom Paper Plugin
The Paper Plugin of the server-side implementation for Axiom, the all in one tool for editing Minecraft worlds.
255.4KSueta
CrazyEnchantments
Adds over 80 unique enchantments to your server and more!
206.6KSueta
Vanish
Make yourself completely invisible with /vanish
186.4KSueta
Headpat a Friend!
Give headpats to other players!
167.8KSueta
