Open-source project
MrMicky-FR/FastBoard avatar
MrMicky-FR/FastBoard

FastBoard: a scoreboard API that writes straight to the packet

Lightweight packet-based scoreboard API for Bukkit plugins, with 1.7.10 to 26.2 support.

582 stars56 forksJavaMIT

At a glance

What is it?
FastBoard is a small Java library for Bukkit plugins that renders the Minecraft scoreboard at the packet level instead of through the server API, which is what removes the flickering most scoreboard plugins cause, and it works on every client version from 1.7.10 onward.
Who is it for?
FastBoard fits a plugin author who has fought with the built-in scoreboard API and its flickering, and who wants one library that works on both a 1.7.10 server and a modern one, with RGB colours and Adventure components where the version supports them.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Java, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Why the packet level, and what that buys you

FastBoard is a lightweight packet-based scoreboard API for Bukkit plugins, described as compatible with all Minecraft versions starting with 1.7.10, and the design decision is stated as a feature. Everything is at the packet level, so it works with other plugins using the scoreboard and teams. The headline benefit is no flickering, and the project is explicit that it achieves that without using a buffer, which is the usual workaround plugins reach for. The other listed qualities are small and no dependencies, easy to use, and the ability to be used asynchronously. For a plugin author the practical appeal is that a scoreboard which flickers on every update is the kind of thing players notice, and this removes the need to think about it at all.

Dynamic size, and the character limits that move with the version

The scoreboard API in FastBoard is dynamic in size, meaning you do not need to add or remove lines, and you can directly give a string list or array to change all the lines. The character limits are where the version support shows through, and there are three of them. On 1.12.2 and below, lines support up to 30 characters each. On 1.13 and higher there is no character limit. RGB HEX colour support arrives on 1.16 and higher. The implementation also has to work with the older Adventure path, where the project warns that on servers below Minecraft 1.13, lines are truncated to a maximum of 16 characters, with the workaround being to upgrade the server or use the non-Adventure version. There is a separate note that to use FastBoard on a 1.8 server, the server must be on 1.8.8. A library that spans a decade of client versions has to carry these conditionals, and the project documents them rather than leaving you to find out.

Adding it to a Maven or Gradle build

The library is on Maven Central under the coordinates fr.mrmicky:fastboard, and the current version in the documentation is 2.2.2. With Gradle the build snippet is short, using the shadow plugin and a relocation so the library's package does not collide with your own.

groovy
plugins {
    id 'com.gradleup.shadow' version '8.3.0'
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'fr.mrmicky:fastboard:2.2.2'
}

shadowJar {
    // Replace 'com.yourpackage' with the package of your plugin 
    relocate 'fr.mrmicky.fastboard', 'com.yourpackage.fastboard'
}

The Maven route is longer because it needs the shade plugin configured by hand, with a relocation block mapping the fr.mrmicky.fastboard pattern onto a package of your choosing. Whichever build tool you use, the comment in the snippets is the same instruction: replace com.yourpackage with the package of your plugin, because the relocation is what stops the library's classes from clashing with another plugin's copy. The Maven instructions also warn that you should build directly with Maven rather than through the IDE's own configuration, and that the output jar lands in the target folder of the project.

Using it, and the example plugin that refreshes every second

Creating a scoreboard means constructing a FastBoard for a player and then setting its title and its lines.

java
FastBoard board = new FastBoard(player);

// Set the title
board.updateTitle(ChatColor.GOLD + "FastBoard");

// Change the lines
board.updateLines(
        "", // Empty line
        "One line",
        "",
        "Second line"
);

The example plugin in the overview keeps a map of boards keyed by player UUID, creates a board when a player joins, deletes it when they quit, and schedules a repeating task that runs every 20 ticks to update the lines with the online player count and the player's kill statistic. The scheduled update calls updateLines with the same list every time, which is only cheap because the library compares what changed rather than redrawing blindly, and that is where the no-flicker design pays off. Deleting the board on quit is the other half of the contract, since a scoreboard that outlives its player is a leak.

The Adventure path and custom number formatting

For servers on modern PaperMC versions, FastBoard supports using Adventure components instead of strings, through the fr.mrmicky.fastboard.adventure.FastBoard class, which is a different class from the non-Adventure fr.mrmicky.fastboard.FastBoard. On the non-Adventure side, RGB colours can be added on 1.16 and higher with ChatColor.of and a hex string, using the net.md_5.bungee.api.ChatColor import. Custom number formatting for scores arrived on 1.20.3 and above. By default the library uses the blank format, so no score is visible, and custom scores can be set through three methods: updateLine with a line, text and score text, updateLines with lines and scores, and updateScore with a line and text. Passing a null value as a score resets to the default blank formatting. The default being invisible is the notable design choice here, since the score column is the part of the sidebar most servers hide anyway.

The ViaBackwards problem, and copying the sources instead

There is a compatibility problem that the project flags as important before anything else, and it involves ViaBackwards. On a server version above 1.13 with clients that are pre-1.13, older clients may receive incomplete lines, and the documented solution is to override the hasLinesMaxLength method and reimplement it. The reason this happens is a version negotiation artefact rather than a bug in the scoreboard code, since the modern server speaks a protocol the old client cannot fully render, and the library has to make a judgement about how much to send. There is also a manual installation route for people who do not want a build tool dependency: copy FastBoardBase.java, FastBoard.java and FastReflection.java into your plugin. Three files, no shading, no relocation to get wrong, at the cost of not picking up updates automatically. The project is MIT licensed, has a Java CI workflow, and its most recent release is v2.2.2 on 2026-09-21.

Editorial conclusion

FastBoard fits a plugin author who has fought with the built-in scoreboard API and its flickering, and who wants one library that works on both a 1.7.10 server and a modern one, with RGB colours and Adventure components where the version supports them. It does not fit a server that runs a Minecraft version below 1.7.10, and it does not fit a plugin that expects the standard scoreboard API to be used, because FastBoard deliberately works at the packet level so it coexists with other plugins that use the scoreboard and teams. Before you adopt it, read the ViaBackwards section if you run pre-1.13 clients against a newer server, and check whether your server needs the Adventure variant, since that path truncates lines to 16 characters below 1.13.

Frequently asked questions

What does FastBoard do for Bukkit plugins?

It is a lightweight packet-based scoreboard API that works at the packet level, so it does not flicker and does not use a buffer, and it works with other plugins that use the scoreboard and teams. It supports dynamic scoreboard size, so you pass a list of lines instead of adding and removing them.

Which Minecraft versions does FastBoard support?

All versions starting with 1.7.10, with a note that to use FastBoard on a 1.8 server the server must be on 1.8.8. Limits vary by version: 30 characters per line on 1.12.2 and below, no character limit on 1.13 and higher, and RGB HEX colours on 1.16 and higher.

How do I add FastBoard to a Maven or Gradle build?

The artifact is fr.mrmicky:fastboard on Maven Central. With Gradle use the com.gradleup.shadow plugin and relocate fr.mrmicky.fastboard to your own package. With Maven configure the maven-shade-plugin the same way, and build with Maven directly rather than through the IDE configuration, with the output jar in the target folder.

What is the ViaBackwards issue with FastBoard?

On a server above 1.13 with pre-1.13 clients, older clients may receive incomplete lines. The documented fix is to override the hasLinesMaxLength method and reimplement it, since the older client cannot fully render what the modern server sends.

Official sources

  1. Issues
  2. License: MIT
  3. MrMicky-FR/FastBoard on GitHub
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/mrmicky-fr-fastboard.svg)](https://hysenlabs.com/projects/mrmicky-fr-fastboard)

Was this useful?