DonutScoreboard

This plugin creates a scoreboard easy adjustment and configuration exactly like the famous server "DonutSMP" that owned but "DrDonutt"

4,93k

Quick challenge

How far can you run before the mobs catch you?

DonutScoreboard

DonutScoreboard

Paper Purpur Spigot Bukkit Modrinth

---

Discord
<i>Please contact me on Discord if you have any suggestions or edits.</i>

---

What

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

---

Features

- Config Auto-Recovery: The scoreboard matches the original DonutSMP layout exactly — same icons, same colors, same gradient title. - Config Auto-Recovery: Every single line is editable in config.yml. Change text, colors, hex codes, or swap any value with a placeholder. - Config Auto-Recovery: Lines only update when the content actually changes. Players never see a flash or refresh stutter. - Config Auto-Recovery: Kill count, death count, ping, playtime, and keyall countdown all work out of the box with no extra plugins required. - Config Auto-Recovery: A server-wide 60 minute countdown that resets automatically. Operators can set it to any time live with a command. - Config Auto-Recovery: Players can show or hide their own scoreboard at any time with `/sb enable` or `/sb disable`. The preference saves across restarts. - Config Auto-Recovery: Disable the scoreboard in specific worlds from config or with a command. Players moving between worlds have it handled automatically. - Config Auto-Recovery: Operators can configure keyall time and manage disabled worlds directly from a chest GUI without touching config files. - Config Auto-Recovery: The vanilla red score numbers on the sidebar are completely removed on Paper, Purpur, and Spigot 1.21+. - Config Auto-Recovery: Full `&#RRGGBB` hex color support on every line and the title. Gradients, custom colors, anything works. - Config Auto-Recovery: 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.

---

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 gui` | `donutscoreboard.admin` | Opens the in-game configuration GUI | | `/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` | `donutscoreboard.admin` | Resets 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 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 | | `/sb` | `donutscoreboard.toggle` | Toggles your scoreboard on or off | | `/sb enable` | `donutscoreboard.toggle` | Shows your scoreboard | | `/sb disable` | `donutscoreboard.toggle` | Hides your scoreboard |

| Permission | Default | Description | | :--- | :--- | :--- | | `donutscoreboard.admin` | OP | Access to all admin commands | | `donutscoreboard.toggle` | Everyone | Access to `/sb` toggle command | ---

Configuration

- A folder named `DonutScoreboard` is created in your `plugins` folder automatically. Inside you will find a clean `config.yml` file.

Config.yml

```yml

==========================================================

#

DonutScoreboard — config.yml

by SirSnaryo

#

Works on: Paper · Spigot · Bukkit · Purpur

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 │

└─────────────────────────────────────────────────────────┘

# #

┌─────────────────────────────────────────────────────────┐

│ CONDITIONAL LINES │

├─────────────────────────────────────────────────────────┤

│ You can make any line appear only when a condition │

│ is true by adding a condition key with the same name │

│ plus "-condition" at the end. │

│ │

│ Syntax: │

│ line-name: "&fKills %kills%" │

│ line-name-condition: "%kills% > 0" │

│ │

│ Supported operators: > < >= <= == != │

│ │

│ Both sides can be numbers or placeholder values. │

│ If the condition is false, the line is completely │

│ hidden — other lines shift up to fill the gap. │

│ │

│ Examples: │

│ kills-condition: "%kills% > 0" │

│ vip-condition: "%vault_eco_balance% >= 1000" │

│ ping-condition: "%ping% < 200" │

└─────────────────────────────────────────────────────────┘

# #

┌─────────────────────────────────────────────────────────┐

│ 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 interval <secs> → set refresh rate │

│ /donutscoreboard title edit "txt" → change title │

│ /donutscoreboard title reset → reset title │

│ /donutscoreboard line add "text" → add a new line │

│ /donutscoreboard line edit <n> → edit a line │

│ /donutscoreboard line delete <n> → remove a line │

│ /donutscoreboard line empty <n> → blank a line │

│ /donutscoreboard line reset → reset all lines │

│ /donutscoreboard line swap <n> with <n> → swap lines │

│ /donutscoreboard keyall time set <time> │

│ /donutscoreboard keyall time reset │

│ /donutscoreboard keyall duration <time> │

│ /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 seconds.

Lower = smoother but more CPU usage.

Recommended: 1

----------------------------------------------------------

update-interval: 1

----------------------------------------------------------

KEYALL DURATION

The total countdown time for keyall in seconds.

Default: 3600 (60 minutes)

You can set this higher for longer countdowns.

Examples:

3600 = 1 hour

7200 = 2 hours

86400 = 1 day

259200 = 3 days

----------------------------------------------------------

keyall-duration: 3600

----------------------------------------------------------

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

#

For each message type you can independently enable or disable:

chat-enabled → true/false — show/hide the chat message

actionbar-enabled → true/false — show/hide the actionbar message

title-enabled → true/false — show/hide the title message

sound-enabled → true/false — play/mute the sound

----------------------------------------------------------

toggle:

The command players type to show or hide their scoreboard.

Letters only, 1-10 characters. Requires a server restart after changing.

command: "sb"

Set to false to disable the /sb command entirely.

Players will not be able to show or hide their scoreboard.

Default: false (disabled — enable it if you want players to use it)

command-enabled: false

Permission required to use the /sb command.

Default: donutscoreboard.toggle (given to all players by default in plugin.yml)

You can restrict it via LuckPerms by setting default: false in plugin.yml

and granting it only to specific groups.

permission: "donutscoreboard.toggle"

Whether new players see the scoreboard the first time they join.

default-on: true

The argument names players type after /sb.

Example with defaults: /sb enable /sb disable

Change these to anything you want.

args: enable: "enable" disable: "disable"

==========================================================

ENABLE — shown when a player enables their scoreboard

==========================================================

enable: chat-enabled: true chat-message: "&aYou have enabled scoreboard." actionbar-enabled: true actionbar-message: "&aYou have enabled scoreboard." title-enabled: false title-message: "&aScoreboard" subtitle-message: "&7has been enabled" title-fade-in: 10 title-stay: 40 title-fade-out: 10 sound-enabled: true sound: "ENTITY_EXPERIENCE_ORB_PICKUP"

==========================================================

DISABLE — shown when a player disables their scoreboard

==========================================================

disable: chat-enabled: true chat-message: "&cYou have disabled scoreboard." actionbar-enabled: true actionbar-message: "&cYou have disabled scoreboard." title-enabled: false title-message: "&cScoreboard" subtitle-message: "&7has been disabled" title-fade-in: 10 title-stay: 40 title-fade-out: 10 sound-enabled: true sound: "ENTITY_EXPERIENCE_ORB_PICKUP"

scoreboard:

----------------------------------------------------------

TITLE

----------------------------------------------------------

title: "&#007DFC&lD&#0088FC&lo&#0092FC&ln&#009DFC&lu&#00A8FC&lt&#00B3FC&l S&#00BDFC&lM&#00C8FC&lP"

lines:

spacer-top: " "

money: "&f&#00FF00&l$ &fMoney &#00FF000"

shards: "&f&#A503FC★ &fShards &#A503FC0"

kills: "&f&#FF0000uD83DuDDE1 &fKills &#FF0000%kills%"

deaths: "&f&#FC7703u2620 &fDeaths &#FC7703%deaths%"

keyall: "&f&#00A6FFu231B &fKeyall &#00A6FF%keyall%"

playtime: "&f&#FFE600u231A &fPlaytime &#FFE600%playtime%"

team: "&#00A6FFuD83EuDE93 &#FFFFFFTeam &#00A6FFnone"

spacer-mid: " "

footer: "&f&7NA East &7(&#00A6FF%ping%ms&7)"

----------------------------------------------------------

KEYALL AUTO-EXECUTE

When the keyall countdown reaches zero, the plugin can

automatically run a list of commands as the console and

optionally notify all online players.

#

enabled → set to true to activate this feature

commands → list of console commands to run

Do NOT include the leading slash.

Example: crates key give @a example

#

notify settings → independently toggle actionbar, title,

and sound sent to every online player

at the moment the commands fire.

----------------------------------------------------------

keyall-execute:

Master switch — false by default.

enabled: false

Commands executed as the console the instant the timer hits zero.

Do NOT include a leading slash.

commands: - "crates key give @a example" - "broadcast &6&lKeyall keys have been distributed!"

notify:

------ Actionbar ----------------------------------------

Shown above the hotbar of every online player.

actionbar-enabled: false actionbar-message: "&#00A6FF&lKeyall &7keys have been given to everyone!"

------ Title --------------------------------------------

Big text displayed in the center of the screen.

title-enabled: false title-message: "&#00A6FF&lKEYALL" subtitle-message: "&7Keys have been distributed!" title-fade-in: 10 title-stay: 60 title-fade-out: 10

------ Sound --------------------------------------------

Played for every online player when commands execute.

Full list: hub.spigotmc.org/javadocs/spigot/org/bukkit/Sound.html

sound-enabled: false sound: "ENTITY_PLAYER_LEVELUP" ```

---

Installation

- Done the latest version of Done. - Done the `.jar` file into your server's `plugins` folder. - Done your server. - Done! No additional setup required.

---

Modrinth Gallery

Example

--- © 2026 DonutScoreboard. All rights reserved to MIT.

Donate via PayPal

ADS