

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

- DonutScoreboard makes a Scoreboard exactly like the famous Server "DonutSMP"

- Pixel-Perfect 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. Change text, colors, hex codes, or swap any value with a placeholder.
- Zero Flicker: Lines only update when the content actually changes. Players never see a flash or refresh stutter.
- Built-in Tokens: Kill count, death count, ping, playtime, and keyall countdown all work out of the box with no extra plugins required.
- Keyall Countdown: A server-wide 60 minute countdown that resets automatically. Operators can set it to any time live with a command.
- Player Toggle: Players can show or hide their own scoreboard at any time with
/sb enableor/sb disable. The preference saves across restarts. - World Control: Disable the scoreboard in specific worlds from config or with a command. Players moving between worlds have it handled automatically.
- In-Game GUI: Operators can configure keyall time and manage disabled worlds directly from a chest GUI without touching config files.
- Red Numbers Hidden: The vanilla red score numbers on the sidebar are completely removed on Paper, Purpur, and Spigot 1.21+.
- Hex Color Support: Full
&#RRGGBBhex color support on every line and the title. Gradients, custom colors, anything works. - PlaceholderAPI Support: Any
%placeholder%from PlaceholderAPI works inside scoreboard lines when PAPI is installed. - Config Auto-Recovery: If config.yml gets corrupted or broken the plugin automatically regenerates a clean copy on the next startup.

| Command | Access | Description |
|---|---|---|
/donutscoreboard | Everyone | Shows plugin info and available commands |
/donutscoreboard reload | Operator | Reloads the configuration file |
/donutscoreboard reset | Operator | Resets config to defaults and rebuilds all scoreboards |
/donutscoreboard gui | Operator | Opens the in-game configuration GUI |
/donutscoreboard keyall time set <time> | Operator | Sets the keyall countdown to a specific time (e.g. 30m, 45m 30s) |
/donutscoreboard keyall time reset | Operator | Resets the keyall countdown back to 60 minutes |
/donutscoreboard world disable <world> | Operator | Disables the scoreboard in a specific world |
/donutscoreboard world enable <world> | Operator | Re-enables the scoreboard in a specific world |
/sb | Everyone | Toggles your scoreboard on or off |
/sb enable | Everyone | Shows your scoreboard |
/sb disable | Everyone | Hides your scoreboard |

- A folder named
DonutScoreboardis created in yourpluginsfolder automatically. Inside you will find a cleanconfig.ymlfile.
Config.yml
# ==========================================================
#
# DonutScoreboard — config.yml
# by SirSnaryo
#
# Works on: Paper · Spigot · Bukkit · Purpur · Folia
# Version: 1.21.x
#
# ==========================================================
#
#
# ┌─────────────────────────────────────────────────────────┐
# │ COLOR CODES │
# ├─────────────────────────────────────────────────────────┤
# │ &f = white &7 = gray &0 = black │
# │ &a = green &c = red &e = yellow │
# │ &b = aqua &9 = blue &d = purple │
# │ &l = bold &o = italic &r = reset all │
# │ &#RRGGBB = any hex color (e.g. &#FF5500 = orange) │
# └─────────────────────────────────────────────────────────┘
#
#
# ┌─────────────────────────────────────────────────────────┐
# │ BUILT-IN TOKENS │
# │ These work with no extra plugins installed │
# ├─────────────────────────────────────────────────────────┤
# │ %kills% → total player kills │
# │ %deaths% → total player deaths │
# │ %ping% → player ping in ms │
# │ %playtime% → time played (e.g. 2d 4h / 3h 20m)│
# │ %keyall% → keyall countdown (e.g. 47m 13s) │
# │ │
# │ %keyall% also works anywhere via PlaceholderAPI: │
# │ %donut_keyall_countdown% │
# └─────────────────────────────────────────────────────────┘
#
#
# ┌─────────────────────────────────────────────────────────┐
# │ HOW LINES WORK │
# ├─────────────────────────────────────────────────────────┤
# │ Every line is a plain string. What you type is │
# │ exactly what appears on the sidebar. │
# │ │
# │ A line with just a space ( " " ) is a blank gap. │
# │ │
# │ You can swap any token for hardcoded text. │
# │ For example: &#FF0000%kills% → &#FF00005 │
# └─────────────────────────────────────────────────────────┘
#
#
# ┌─────────────────────────────────────────────────────────┐
# │ COMMANDS │
# ├─────────────────────────────────────────────────────────┤
# │ /sb enable → show scoreboard │
# │ /sb disable → hide scoreboard │
# │ │
# │ /donutscoreboard → plugin info │
# │ /donutscoreboard reload → reload config │
# │ /donutscoreboard reset → reset config │
# │ /donutscoreboard gui → open GUI │
# │ /donutscoreboard keyall time set <time> │
# │ /donutscoreboard keyall time reset │
# │ /donutscoreboard world enable <world> │
# │ /donutscoreboard world disable <world> │
# └─────────────────────────────────────────────────────────┘
#
#
# ┌─────────────────────────────────────────────────────────┐
# │ BROKEN CONFIG │
# ├─────────────────────────────────────────────────────────┤
# │ If you break this file the plugin automatically │
# │ deletes it and regenerates a clean copy on startup. │
# └─────────────────────────────────────────────────────────┘
#
# ==========================================================
# ----------------------------------------------------------
# PLUGIN TOGGLE
# Set to false to completely disable DonutScoreboard.
# No scoreboards will be shown to anyone on the server.
# ----------------------------------------------------------
enabled: true
# ----------------------------------------------------------
# UPDATE INTERVAL
# How often the scoreboard refreshes, measured in ticks.
# 20 ticks = 1 second. Lower = smoother, more CPU.
# Recommended: 10
# ----------------------------------------------------------
update-interval: 10
# ----------------------------------------------------------
# DISABLED WORLDS
# Worlds listed here will never show the scoreboard.
# Players moving into a disabled world lose their board,
# and get it back automatically when they leave.
# Example:
# disabled-worlds:
# - world_nether
# - minigames
# ----------------------------------------------------------
disabled-worlds: []
# ----------------------------------------------------------
# TOGGLE MESSAGES
# The message and sound played when a player runs
# /sb enable or /sb disable.
#
# command → the alias players type (letters only, 1-10 chars)
# Default: sb → /sb enable / /sb disable
# Requires a server restart to take effect after changing.
# sound → any Bukkit Sound enum name
# full list: hub.spigotmc.org/javadocs/spigot/org/bukkit/Sound.html
# show-in-chat → send the message in chat
# show-in-actionbar → show the message above the hotbar
# ----------------------------------------------------------
toggle:
command: "sb"
# Set to false to disable the /sb command entirely.
# Players will not be able to show or hide their scoreboard.
command-enabled: true
default-on: true
enable:
message: "&aYou have enabled scoreboard."
sound: "ENTITY_EXPERIENCE_ORB_PICKUP"
show-in-chat: true
show-in-actionbar: true
disable:
message: "&cYou have disabled scoreboard."
sound: "ENTITY_EXPERIENCE_ORB_PICKUP"
show-in-chat: true
show-in-actionbar: true
scoreboard:
# ----------------------------------------------------------
# TITLE
# The text shown at the very top of the scoreboard sidebar.
# This uses a hex gradient — each letter is a slightly
# different shade of blue to create a smooth left-to-right
# color shift spelling out "DonutSMP".
# ----------------------------------------------------------
title: "DFC&lDXFC&lo\FC&ln	DFC&lu�A8FC<�B3FC&l S�BDFC&lM�C8FC&lP"
lines:
# ==========================================================
# SPACER — blank line at the top
# Just a space. Gives breathing room between the title
# and the first data line.
# ==========================================================
spacer-top: " "
# ==========================================================
# MONEY
# Shows: $ Money 0
#
# �FF00&l$ → green bold dollar sign icon
# &fMoney → white label
# �FF000 → green value (hardcoded 0)
#
# To connect a real economy plugin, replace the 0 at the
# end with a PlaceholderAPI placeholder such as:
# %vault_eco_balance_formatted%
# ==========================================================
money: "&f�FF00&l$ &fMoney �FF000"
# ==========================================================
# SHARDS
# Shows: ★ Shards 0
#
# &#A503FC★ → purple star icon
# &fShards → white label
# &#A503FC0 → purple value (hardcoded 0)
#
# Swap the 0 with a placeholder from your shards plugin.
# ==========================================================
shards: "&f&#A503FC★ &fShards &#A503FC0"
# ==========================================================
# KILLS
# Shows: 🗡 Kills 6
#
# &#FF0000🗡 → red sword icon
# &fKills → white label
# &#FF0000 → red — %kills% is the live kill count
#
# %kills% reads the vanilla Minecraft PLAYER_KILLS stat.
# No plugins needed.
# ==========================================================
kills: "&f&#FF0000\uD83D\uDDE1 &fKills &#FF0000%kills%"
# ==========================================================
# DEATHS
# Shows: ☠ Deaths 22
#
# &#FC7703☠ → orange skull icon
# &fDeaths → white label
# &#FC7703 → orange — %deaths% is the live death count
#
# %deaths% reads the vanilla Minecraft DEATHS stat.
# No plugins needed.
# ==========================================================
deaths: "&f&#FC7703\u2620 &fDeaths &#FC7703%deaths%"
# ==========================================================
# KEYALL COUNTDOWN
# Shows: ⌛ Keyall 47m 13s
#
# �A6FF⌛ → blue hourglass icon
# &fKeyall → white label
# �A6FF → blue — %keyall% is the live countdown
#
# The countdown starts at 60m when the server boots.
# It ticks down then resets back to 60m automatically.
# Format: 60m → 59m 59s → ... → 1s → 60m
#
# Ops can change it live with:
# /donutscoreboard keyall time set 30m
# /donutscoreboard keyall time reset
# ==========================================================
keyall: "&f�A6FF\u231B &fKeyall �A6FF%keyall%"
# ==========================================================
# PLAYTIME
# Shows: ⌚ Playtime 1d 6h
#
# &#FFE600⌚ → yellow watch icon
# &fPlaytime → white label
# &#FFE600 → yellow — %playtime% is the live time
#
# %playtime% reads the vanilla Minecraft PLAY_ONE_MINUTE
# stat and formats it as:
# days + hours when the player has played over 1 day
# hours + minutes when under 1 day
# minutes only when under 1 hour
# No plugins needed.
# ==========================================================
playtime: "&f&#FFE600\u231A &fPlaytime &#FFE600%playtime%"
# ==========================================================
# TEAM
# Shows: 🪓 Team none
#
# �A6FF🪓 → blue axe icon
# &#FFFFFFTeam → white label
# �A6FF → blue — hardcoded "none" right now
#
# Swap "none" with a placeholder from your teams or
# factions plugin to show a live team name.
# ==========================================================
team: "�A6FF\uD83E\uDE93 &#FFFFFFTeam �A6FFnone"
# ==========================================================
# SPACER — blank line between stats and footer
# ==========================================================
spacer-mid: " "
# ==========================================================
# FOOTER — region and ping
# Shows: NA East (215ms)
#
# &f&7NA East → gray region label
# &7( → gray opening bracket
# �A6FF → blue — %ping%ms is the live ping
# &7) → gray closing bracket
#
# Change "NA East" to whatever your server region is.
# %ping% gives the player's current ping in milliseconds.
# No plugins needed.
# ==========================================================
footer: "&f&7NA East &7(�A6FF%ping%ms&7)"

- Download the latest version of DonutScoreboard.
- Drop the
.jarfile into your server'spluginsfolder. - Restart your server.
- Done! No additional setup required.



© 2026 DonutScoreboard. All rights reserved to MIT.

