{"id":140535,"date":"2026-06-08T11:12:56","date_gmt":"2026-06-08T08:12:56","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/simple-scoreboard\/"},"modified":"2026-06-08T11:12:56","modified_gmt":"2026-06-08T08:12:56","slug":"simple-scoreboard","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/simple-scoreboard\/","title":{"rendered":"Simple Scoreboard"},"content":{"rendered":"<p># SimpleScoreboard<\/p>\n<p>A configurable scoreboard plugin for Paper. Author your sidebar, tab-list, and below-name displays in YAML or edit them in-game from a chest GUI. Multi-board priority selection by world, permission, or gamemode. Frame rotation, horizontal scrolling, and full Adventure MiniMessage formatting.<\/p>\n<p>## Features<\/p>\n<p>&#8211; **All three scoreboard slots**: sidebar, tab-list (header + footer), below-name objective<br \/>\n&#8211; **Multi-board priority list** with conditions on world, permission, gamemode (combinable, AND-evaluated, first match wins)<br \/>\n&#8211; **Animations**: frame rotation and horizontal text scrolling, configurable per line and tick-precise<br \/>\n&#8211; **MiniMessage** for all text \u2014 colors, gradients, rainbows, click and hover events<br \/>\n&#8211; **Built-in placeholders** for player, world, ping, coords, gamemode, health, online count, max players, TPS<br \/>\n&#8211; **PlaceholderAPI** integration when present \u2014 every `%papi_*%` token just works<br \/>\n&#8211; **In-game GUI editor** (`\/sb gui`) for the impatient: edit boards, conditions, lines, and animations from a chest menu with live preview<br \/>\n&#8211; **Tab-completion** on every `\/sb` subcommand including dynamic board names<br \/>\n&#8211; **Per-player toggle** with persistence (`\/sb toggle`)<br \/>\n&#8211; **Hot reload** without server restart (`\/sb reload`)<br \/>\n&#8211; **Diff-based render**: per-player last-sent cache means packets only fire when output actually changes \u2014 static lines never re-send<\/p>\n<p>## Quick Example<\/p>\n<p>&#8220;`yaml<br \/>\ndefaults:<br \/>\n  tick-interval: 1<br \/>\n  scroll-width: 24<\/p>\n<p>boards:<br \/>\n  &#8211; name: pvp-arena<br \/>\n    conditions:<br \/>\n      worlds: [pvp_arena]<br \/>\n      permission: server.staff<br \/>\n    sidebar:<br \/>\n      title:<br \/>\n        type: rotate<br \/>\n        interval: 10<br \/>\n        frames:<br \/>\n          &#8211; &#8220;<gradient:gold:red>STAFF<\/gradient>&#8221;<br \/>\n          &#8211; &#8220;<gradient:red:gold>STAFF<\/gradient>&#8221;<br \/>\n      lines:<br \/>\n        &#8211; &#8220;<dark_gray>\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500&#8221;<br \/>\n        &#8211; &#8220;<gray>Player: <white>%player%&#8221;<br \/>\n        &#8211; &#8220;<gray>Kills: <red>%vault_kills%&#8221;<br \/>\n        &#8211; &#8220;&#8221;<br \/>\n        &#8211; type: scroll<br \/>\n          width: 24<br \/>\n          interval: 2<br \/>\n          text: &#8220;Welcome to the staff PvP arena&#8221;<br \/>\n        &#8211; &#8220;<dark_gray>\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500&#8221;<\/p>\n<p>  &#8211; name: default<br \/>\n    sidebar:<br \/>\n      title: &#8220;<aqua>My Server&#8221;<br \/>\n      lines:<br \/>\n        &#8211; &#8220;<gray>Online: <white>%online%\/%max-players%&#8221;<br \/>\n        &#8211; &#8220;<gray>TPS: <green>%tps%&#8221;<br \/>\n    tablist:<br \/>\n      header: &#8220;<gold>My Server&#8221;<br \/>\n      footer: &#8220;<gray>%online%\/%max-players% online&#8221;<br \/>\n&#8220;`<\/p>\n<p>## Commands<\/p>\n<p>| Command | Permission | Description |<br \/>\n|&#8212;|&#8212;|&#8212;|<br \/>\n| `\/sb gui [board]` | `simplescoreboard.admin` | Open the in-game editor (optionally jumping to a specific board) |<br \/>\n| `\/sb reload` | `simplescoreboard.admin` | Reload `scoreboard.yml`. On parse error the old config keeps running. |<br \/>\n| `\/sb list` | `simplescoreboard.admin` | List boards in priority order |<br \/>\n| `\/sb show <board>` | `simplescoreboard.admin` | Force-preview a specific board for yourself |<br \/>\n| `\/sb show none` | `simplescoreboard.admin` | Clear preview, return to normal selection |<br \/>\n| `\/sb toggle` | `simplescoreboard.toggle` | Hide\/show your own scoreboard. Preference persists across reconnects. |<\/p>\n<p>Aliases: `\/scoreboard`, `\/simplescoreboard`.<\/p>\n<p>## Requirements<\/p>\n<p>&#8211; **Paper** (built against API `26.1.2`)<br \/>\n&#8211; **Java 25**<br \/>\n&#8211; **PlaceholderAPI** \u2014 optional, only needed for `%papi_*%` tokens<\/p>\n<p>## Installation<\/p>\n<p>1. Drop `SimpleScoreboard.jar` into your `plugins\/` folder.<br \/>\n2. Start the server. A default `scoreboard.yml` is created in `plugins\/SimpleScoreboard\/`.<br \/>\n3. Edit the YAML or run `\/sb gui` to customize.<br \/>\n4. `\/sb reload` applies YAML changes without restart.<\/p>\n<p>## Configuration<\/p>\n<p>`plugins\/SimpleScoreboard\/scoreboard.yml`. Top-level structure:<\/p>\n<p>&#8220;`yaml<br \/>\ndefaults:<br \/>\n  tick-interval: 1     # ticks between renders. 1 = full animation resolution.<br \/>\n  scroll-width: 24     # default character window for scrolling lines<\/p>\n<p>boards:<br \/>\n  &#8211; name: <unique-name><br \/>\n    conditions:        # optional. omit = catch-all (matches everyone)<br \/>\n      worlds: [&#8230;]    # optional, any of these worlds<br \/>\n      permission: &#8230;  # optional, player must have this permission<br \/>\n      gamemodes: [&#8230;] # optional, any of these gamemodes<br \/>\n    sidebar:           # optional, omit to leave sidebar untouched<br \/>\n      title: <line>\n      lines:<br \/>\n        &#8211; <line>\n    tablist:           # optional<br \/>\n      header: <line>\n      footer: <line>\n    below-name:        # optional<br \/>\n      title: <line>\n      score: &#8220;%health%&#8221;  # any placeholder that resolves to an integer<br \/>\n&#8220;`<\/p>\n<p>### Line types<\/p>\n<p>A `<line>` is either a plain string (Static) or a typed object:<\/p>\n<p>&#8220;`yaml<br \/>\n# Static \u2014 plain MiniMessage string<br \/>\n&#8220;<gold>Hello %player%&#8221;<\/p>\n<p># Rotate \u2014 cycle through frames<br \/>\ntype: rotate<br \/>\ninterval: 10           # ticks per frame<br \/>\nframes: [&#8220;Frame A&#8221;, &#8220;Frame B&#8221;, &#8220;Frame C&#8221;]<\/p>\n<p># Scroll \u2014 horizontal scroll within a fixed width<br \/>\ntype: scroll<br \/>\ninterval: 2            # ticks per character shift<br \/>\nwidth: 24              # visible characters<br \/>\ntext: &#8220;Long welcome text that scrolls&#8221;<br \/>\n&#8220;`<\/p>\n<p>## In-Game Editor<\/p>\n<p>`\/sb gui` opens a chest-based editor. Navigation:<\/p>\n<p>&#8220;`<br \/>\nMainMenu (board list + add)<br \/>\n  \u2514\u2500\u2500 BoardMenu (rename, delete, conditions, slots)<br \/>\n        \u251c\u2500\u2500 ConditionsMenu (worlds, permission, gamemodes)<br \/>\n        \u251c\u2500\u2500 SidebarMenu (title + lines, reorder, add, remove)<br \/>\n        \u2502     \u2514\u2500\u2500 LineEditMenu (Static \/ Rotate \/ Scroll switcher)<br \/>\n        \u2502           \u2514\u2500\u2500 RotateFramesMenu (for Rotate type)<br \/>\n        \u251c\u2500\u2500 TablistMenu (header, footer, enable\/disable)<br \/>\n        \u2514\u2500\u2500 BelowNameMenu (title, score expression, enable\/disable)<br \/>\n&#8220;`<\/p>\n<p>Text content (titles, frame text, scroll text, score expressions) is entered through chat \u2014 when you click &#8220;Edit text&#8221; the menu closes, you type the new MiniMessage value, and the menu reopens. Type `!cancel` to abort. Inputs time out after 60 seconds.<\/p>\n<p>While editing, your own scoreboard updates **live** with the unsaved draft so you can see how it looks before committing.<\/p>\n<p>Saving regenerates `scoreboard.yml` (a one-time `.backup` is created first), atomically replaces the file, and re-renders for all players. Cancel discards the draft without touching the file.<\/p>\n<p>> **Note**: GUI saves rewrite the YAML through SnakeYAML&#8217;s standard dumper. Hand-written comments are not preserved. Keep that in mind if you maintain `scoreboard.yml` by hand and use the GUI on the same file.<\/p>\n<p>## Built-in Placeholders<\/p>\n<p>| Token | Resolves to |<br \/>\n|&#8212;|&#8212;|<br \/>\n| `%player%` | Player name |<br \/>\n| `%displayname%` | Adventure-Component display name (string form) |<br \/>\n| `%world%` | Current world name |<br \/>\n| `%gamemode%` | `SURVIVAL` \/ `CREATIVE` \/ `ADVENTURE` \/ `SPECTATOR` |<br \/>\n| `%ping%` | Player ping in ms |<br \/>\n| `%x%`, `%y%`, `%z%` | Integer block coordinates |<br \/>\n| `%health%` | Health rounded to integer |<br \/>\n| `%online%` | Online player count |<br \/>\n| `%max-players%` | Server slot count |<br \/>\n| `%tps%` | Server TPS (1 decimal) |<\/p>\n<p>Anything else is forwarded to PlaceholderAPI when installed. Unknown tokens (no built-in, no PAPI) stay as raw text \u2014 useful for spotting typos visually.<\/p>\n<p>## Permissions<\/p>\n<p>| Node | Default | Grants |<br \/>\n|&#8212;|&#8212;|&#8212;|<br \/>\n| `simplescoreboard.admin` | op | `\/sb reload`, `\/sb list`, `\/sb show`, `\/sb gui` |<br \/>\n| `simplescoreboard.toggle` | true | `\/sb toggle` |<\/p>\n<p>## Performance<\/p>\n<p>Each player has a per-tick render cycle. The renderer compares the freshly-built component list against a cached last-sent snapshot and only sends an update packet when a line actually differs. Static lines without dynamic placeholders never re-send. Frame-rotation and scrolling lines re-send only when the frame index or scroll offset changes.<\/p>\n<p>`scoreboard.yml` is parsed once at startup (and on `\/sb reload`). The `BoardRegistry` uses an atomic reference, so reloads are wait-free for the render loop.<\/p>\n<p>## Compatibility Notes<\/p>\n<p>&#8211; The Sidebar slot is rendered through the FastBoard library (shaded and relocated). Plays nicely alongside any other scoreboard plugin that touches Tab-list or Below-Name only.<br \/>\n&#8211; Two plugins both writing the Sidebar will conflict \u2014 disable one or coordinate via permissions.<br \/>\n&#8211; Tab-list is set per-player via Paper&#8217;s Adventure API. Tab-list-modifying plugins (e.g. some prefix systems that write the player-list display name) are independent and won&#8217;t conflict.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A Plugin wich adds a new Scoreboard desing, wich can also be configured ingame with a nice GUI.<\/p>\n","protected":false},"featured_media":140536,"template":"","meta":{"_minecraft_slug":"simple-scoreboard","_minecraft_project_id":"ZoVbnwrs","_minecraft_author":"klausiiiii","_minecraft_license":"LicenseRef-All-Rights-Reserved","_minecraft_downloads":20,"_minecraft_follows":0,"_minecraft_client_side":"unsupported","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"simple-scoreboard.zip","_minecraft_size_bytes":121576,"_minecraft_version_count":1,"_minecraft_updated_at":"2026-05-15T22:30:22.930902Z","_minecraft_date_created":"2026-05-07T21:58:46.653160Z","_minecraft_date_modified":"2026-05-01T00:20:09.556872Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/simple-scoreboard","_minecraft_icon_attachment_id":140536,"_minecraft_imported_at":"2026-06-08T08:12:57+00:00","_minecraft_import_hash":"bc9519dfe4b95ce968cefee63aab45f4","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[844,89,126,127],"mod_loader":[132],"minecraft_version":[163],"class_list":["post-140535","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-economy","mod_category-game-mechanics","mod_category-management","mod_category-paper","mod_loader-paper","minecraft_version-26-1-2"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Simple Scoreboard - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/simple-scoreboard\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Simple Scoreboard - Minecraft\" \/>\n<meta property=\"og:description\" content=\"A Plugin wich adds a new Scoreboard desing, wich can also be configured ingame with a nice GUI.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/simple-scoreboard\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/simple-scoreboard\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/simple-scoreboard\\\/\",\"name\":\"Simple Scoreboard - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/simple-scoreboard\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/simple-scoreboard\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/simple-scoreboard-icon-1fbd4d748c05ce97754046da4be7487ba20f6dff.webp\",\"datePublished\":\"2026-06-08T08:12:56+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/simple-scoreboard\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/simple-scoreboard\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/simple-scoreboard\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/simple-scoreboard-icon-1fbd4d748c05ce97754046da4be7487ba20f6dff.webp\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/simple-scoreboard-icon-1fbd4d748c05ce97754046da4be7487ba20f6dff.webp\",\"width\":260,\"height\":280},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/simple-scoreboard\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Simple Scoreboard\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Simple Scoreboard - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/simple-scoreboard\/","og_locale":"en_US","og_type":"article","og_title":"Simple Scoreboard - Minecraft","og_description":"A Plugin wich adds a new Scoreboard desing, wich can also be configured ingame with a nice GUI.","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/simple-scoreboard\/","og_site_name":"Minecraft","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/simple-scoreboard\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/simple-scoreboard\/","name":"Simple Scoreboard - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/simple-scoreboard\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/simple-scoreboard\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/simple-scoreboard-icon-1fbd4d748c05ce97754046da4be7487ba20f6dff.webp","datePublished":"2026-06-08T08:12:56+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/simple-scoreboard\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/simple-scoreboard\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/simple-scoreboard\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/simple-scoreboard-icon-1fbd4d748c05ce97754046da4be7487ba20f6dff.webp","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/simple-scoreboard-icon-1fbd4d748c05ce97754046da4be7487ba20f6dff.webp","width":260,"height":280},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/simple-scoreboard\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"Simple Scoreboard"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/140535","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/140536"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=140535"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=140535"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=140535"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=140535"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}