Compatibility
Minecraft: Java Edition
26.3
26.2
26.1.x
1.21.x
Platforms
Tags
Creators
Details
Licensed ARR
Published 8 months ago
Updated 2 weeks ago


Please contact me on Discord if you have any suggestions or edits.

- DonutScoreboard makes a Scoreboard exactly like the famous Server "DonutSMP"
- One jar for everything. The same file works on Bukkit, Spigot, Paper, Purpur, Folia, Leaf and Canvas, and on Velocity, Velocity-CTD, BungeeCord and Waterfall. No separate backend or proxy download.

- Same Design: The scoreboard matches the original DonutSMP layout exactly ā same icons, same colors, same gradient title.
- Full Customization: Every single line is editable in config.yml. Use MiniMessage tags, hex codes, gradients, or swap any value with a placeholder.
- Conditional Scoreboards: List as many scoreboards as you want under
scoreboards. They are checked top to bottom and the first matching condition wins ā perfect for per-rank or per-world boards. - Group Boards Without a Groups File: A group board is just a condition, like
permission:group.staff. Put it abovedefaultand you are done. - Animations: Define animated text in
animations.ymland drop%animation:name%into any line, with its own frame interval. - Zero Flicker: Lines only update when the content actually changes. Players never see a flash or refresh stutter.
- Folia Ready: Folia uses a native packet renderer, so the board works there without the Bukkit scoreboard API.
- Proxy Sync: A player's
/sbchoice follows them across your whole network ā the proxy and every backend stay in sync. - Keyall Countdown: A server-wide countdown that resets automatically, with optional commands and feedback when it hits zero.
- Player Toggle: Players show or hide their own board with
/sb enableor/sb disable, with configurable chat, actionbar, title and sound feedback. The choice saves across restarts. - World Control: Disable the scoreboard per world, or use wildcard patterns like
event_*. Moving between worlds is handled automatically. - Automatic Config Migration: Older configs are moved forward to
config-version: 2.0on startup, and the original is kept inbackups/. - PlaceholderAPI & Vault: Any
%placeholder%works inside lines, and Vault economy placeholders are supported when Vault is installed. - Safe Backups:
/dsb export createzips every data file with metadata, and/dsb importrestores it in one command.

Commands
| Command | Permission | Description |
|---|---|---|
/donutscoreboard |
Everyone | Shows plugin info and available commands |
/donutscoreboard reload |
donutscoreboard.admin |
Reloads the configuration file |
/donutscoreboard reset |
donutscoreboard.admin |
Resets config to defaults and rebuilds all scoreboards |
/donutscoreboard interval <seconds> |
donutscoreboard.admin |
Sets the scoreboard refresh rate (1-60 seconds) |
/donutscoreboard title edit [text] |
donutscoreboard.admin |
Changes the scoreboard title |
/donutscoreboard title reset |
donutscoreboard.admin |
Resets the title to default |
/donutscoreboard line add [text] |
donutscoreboard.admin |
Adds a new line to the scoreboard |
/donutscoreboard line edit <number> [text] |
donutscoreboard.admin |
Edits a specific line |
/donutscoreboard line delete <number> |
donutscoreboard.admin |
Removes a line from the scoreboard |
/donutscoreboard line empty <number> |
donutscoreboard.admin |
Clears a line (makes it blank) |
/donutscoreboard line reset [number] |
donutscoreboard.admin |
Resets a line (or all lines) to default |
/donutscoreboard line swap <n> with <n> |
donutscoreboard.admin |
Swaps two lines |
/donutscoreboard keyall time set <time> |
donutscoreboard.admin |
Sets the keyall countdown (example: 30m, 1h, 2d) |
/donutscoreboard keyall time reset |
donutscoreboard.admin |
Resets keyall countdown to max duration |
/donutscoreboard keyall duration <time> |
donutscoreboard.admin |
Sets the max keyall duration (example: 2h, 3d) |
/donutscoreboard keyall trigger |
donutscoreboard.admin |
Fires the keyall event immediately |
/donutscoreboard world list |
donutscoreboard.admin |
Lists all worlds and their status |
/donutscoreboard world disable <world> |
donutscoreboard.admin |
Disables the scoreboard in a world |
/donutscoreboard world enable <world> |
donutscoreboard.admin |
Enables the scoreboard in a world |
/donutscoreboard auto-world list |
donutscoreboard.admin |
Lists auto-disable patterns |
/donutscoreboard auto-world add <pattern> |
donutscoreboard.admin |
Adds an auto-disable pattern (supports * wildcard) |
/donutscoreboard auto-world remove <pattern> |
donutscoreboard.admin |
Removes an auto-disable pattern |
/donutscoreboard animation preview <name> |
donutscoreboard.admin |
Previews the current frame of an animation |
/donutscoreboard animation interval <name> <ticks> |
donutscoreboard.admin |
Changes an animation's frame interval |
/donutscoreboard animation delete <name> |
donutscoreboard.admin |
Deletes an animation |
/donutscoreboard style <new|old> |
donutscoreboard.admin |
Switches between preset scoreboard layouts |
/donutscoreboard scoreboard-numbers <enable|disable> |
donutscoreboard.admin |
Toggles the side numbers on the scoreboard (Paper 1.20.5+) |
/donutscoreboard board list |
donutscoreboard.admin |
Lists every configured scoreboard and its condition |
/donutscoreboard condition test <expression> |
donutscoreboard.admin |
Tests a condition against yourself before you use it |
/donutscoreboard debug |
donutscoreboard.admin |
Shows config version, renderer, active boards and hooks |
/donutscoreboard export create |
donutscoreboard.admin |
Creates a full config backup zip |
/donutscoreboard export list |
donutscoreboard.admin |
Lists all available backup exports |
/donutscoreboard import <filename> |
donutscoreboard.admin |
Imports a config backup zip |
/donutscoreboard toggle <player> |
donutscoreboard.admin |
Toggles another player's scoreboard visibility |
/sb |
donutscoreboard.toggle |
Toggles your scoreboard on or off |
/sb enable |
donutscoreboard.toggle |
Shows your scoreboard |
/sb disable |
donutscoreboard.toggle |
Hides your scoreboard |
Permissions
| Permission | Default | Description |
|---|---|---|
donutscoreboard.admin |
OP | Full access to all admin commands (grants every child permission below) |
donutscoreboard.view |
Everyone | Required to see the scoreboard at all |
donutscoreboard.toggle |
Everyone | Access to the /sb toggle command |
donutscoreboard.toggle.others |
OP | Access to /dsb toggle <player> to toggle other players |
donutscoreboard.reload |
OP | /dsb reload |
donutscoreboard.reset |
OP | /dsb reset |
donutscoreboard.interval |
OP | /dsb interval |
donutscoreboard.title |
OP | /dsb title |
donutscoreboard.line |
OP | /dsb line |
donutscoreboard.keyall |
OP | /dsb keyall |
donutscoreboard.world |
OP | /dsb world |
donutscoreboard.auto-world |
OP | /dsb auto-world |
donutscoreboard.animation |
OP | /dsb animation |
donutscoreboard.style |
OP | /dsb style |
donutscoreboard.board |
OP | /dsb board |
donutscoreboard.scoreboard-numbers |
OP | /dsb scoreboard-numbers |
donutscoreboard.export |
OP | /dsb export |
donutscoreboard.import |
OP | /dsb import |

- A folder named
DonutScoreboardis created in yourpluginsfolder automatically. Inside you will find a cleanconfig.ymlfile.
Config.yml
# DonutScoreboard configuration version. Do not edit: older files are migrated
# forward automatically on startup and /dsb reload, with a backup in backups/.
config-version: 2.0
# Print the DSB banner with version, author, platform and download link on startup.
startup-banner: true
# Check Modrinth for a newer release on startup. Silent when offline; never blocks startup.
update-checker: true
enabled: true
update-interval: 1
join-delay: 2
keyall-duration: 3600
date-format: "yyyy-MM-dd"
disabled-worlds: []
auto-disable-worlds: []
placeholders:
"1": "%player_name%"
"money": "%vault_eco_balance_formatted%"
# Scoreboards are checked from top to bottom. The first matching condition wins.
# There is no separate group-scoreboard system. Put group conditions here, for example:
# staff:
# condition: "permission:group.staff || %vault_group% == staff"
# title: "<gradient:#FFD700:#FFA500><bold>Staff</bold></gradient>"
# lines:
# - "<white>Rank <gold>%group%"
# Place a conditional board above `default`, because `default` has an empty condition and always matches.
scoreboards:
default:
condition: ""
title: "<gradient:#007DFC:#00E8FC><bold>DonutSMP</bold></gradient>"
numbers-visible: false
lines:
- " "
- "<#00FF00><bold>$</bold> <white>Money <#00FF00>%money%"
- "<#A503FC>ā
<white>Shards <#A503FC>0"
- "<#FF0000>š” <white>Kills <#FF0000>%kills%"
- "<#FC7703>ā <white>Deaths <#FC7703>%deaths%"
- "<#00A6FF>ā <white>Keyall <#00A6FF>%keyall%"
- "<#FFE600>ā <white>Playtime <#FFE600>%playtime%"
- "<#00A6FF>šŖ <white>Team <#00A6FF>%group%"
- " "
- "<gray>NA East <gray>(<#00A6FF>%ping%ms<gray>)"
toggle:
command: "sb"
command-enabled: true
permission: "donutscoreboard.toggle"
default-on: true
args:
enable: "enable"
disable: "disable"
enable:
chat-enabled: true
chat-message: "<green>You have enabled scoreboard."
actionbar-enabled: true
actionbar-message: "<green>You have enabled scoreboard."
title-enabled: false
title-message: "<green>Scoreboard"
subtitle-message: "<gray>has been enabled"
title-fade-in: 10
title-stay: 40
title-fade-out: 10
sound-enabled: true
sound: "ENTITY_EXPERIENCE_ORB_PICKUP"
disable:
chat-enabled: true
chat-message: "<red>You have disabled scoreboard."
actionbar-enabled: true
actionbar-message: "<red>You have disabled scoreboard."
title-enabled: false
title-message: "<red>Scoreboard"
subtitle-message: "<gray>has been disabled"
title-fade-in: 10
title-stay: 40
title-fade-out: 10
sound-enabled: true
sound: "ENTITY_EXPERIENCE_ORB_PICKUP"
toggle-placeholder:
format-on: "<green><bold>ON"
format-off: "<red><bold>OFF"
adaptive-refresh:
enabled: true
minimum-interval-ticks: 1
scoreboard-conflict-auto-reapply: true
placeholder-intervals:
"%animation:gradient_title%": 15
"%ping%": 20
keyall-execute:
enabled: false
commands:
- "crates key give @a example"
- "broadcast <gold><bold>Keyall keys have been distributed!"
notify:
actionbar-enabled: false
actionbar-message: "<#00A6FF><bold>Keyall</bold> <gray>keys have been given to everyone!"
title-enabled: false
title-message: "<#00A6FF><bold>KEYALL"
subtitle-message: "<gray>Keys have been distributed!"
title-fade-in: 10
title-stay: 60
title-fade-out: 10
sound-enabled: false
sound: "ENTITY_PLAYER_LEVELUP"

- Download the latest version of DonutScoreboard.
- Drop the
.jarfile into your server'spluginsfolder. - Restart your server.
- Done! No additional setup required.
Running a network? Put the same .jar in your proxy's plugins folder as well. The proxy keeps every player's toggle in sync with your backend servers ā nothing else to configure.

Ā© All Rights Reversed. Created by SirSnaryo.


