HudForge
Sidebar, TAB, name tags and boss bars from one file
HudForge writes the sidebar, the TAB list, the name above a player's head, the boss bar and the action bar from a single file, on Paper 1.21.x. It ships configured: drop it in and the scoreboard is already there.
Animated gradients from one tag, frame-by-frame animations, conditions that change a colour when a number crosses a line, and a scoreboard that does not flicker because it is never rebuilt.
Why HudForge
- No flicker, at any refresh rate. The scoreboard is built once and only the line text is rewritten afterwards. That is why it can repaint five times a second and still look still
- A moving gradient is one tag.
<shine:#C879FF:#FFFFFF:1600>TEXT</shine>and the light travels across the text. The usual way is writing twenty frames by hand with the gradient nudged along in each one - Everyone sees the same frame. Animation frames come from the clock, not from a per-player counter, so two players standing together see the same thing
- One file for five displays. Sidebar, TAB header and footer, name tags, boss bars and the action bar are all written in the same place, in the same syntax
- Profiles instead of an inheritance tree. The first profile that matches wins. Match by world, by permission, by a condition, or by nothing at all
What you get
- Sidebar — title and lines, any length, repainted without flicker
- TAB list — header and footer, plus the order players are listed in, set per profile by a weight
- Name tags — a prefix and suffix above the head, per profile
- Boss bars — as many as you like per profile, each with its own colour, style and fill. Reusing an id updates that bar instead of stacking another one, and bars from a profile you left are taken down
- Action bar — the short line above the hotbar
- Animated gradients —
<shine:#AAA:#BBB:1600>, the last number being the cycle in milliseconds - Frame animations —
<anim:name>, with the frames written out in the config. Two are included: a dot of light running along a separator, and a breathing diamond - Conditions —
%if:%hud_ping%>150?<red>high:<green>good%. Numbers compare as numbers, so 9 is not greater than 100, and a decimal comma works - Built-in values, no other plugin needed —
%hud_player%%hud_ping%%hud_tps%%hud_online%%hud_max%%hud_world%%hud_x%%hud_y%%hud_z%%hud_health% - PlaceholderAPI — when it is installed, anything any other plugin publishes can go on the board
- Gradients and legacy colours —
<gradient:#A:#B>and&b&lboth work, so an old config can be pasted in as it is - Long lines are handled — a line past the scoreboard's limit is split where it does not break a colour tag
- Adjustable refresh — four ticks by default, which is five repaints a second
How it plays
A player joins and the sidebar is already showing their name, world, coordinates, the player count, their ping in green or red, and the server's TPS. Press TAB and the header is the server's name with the light moving across it. Walk into another world and, if you wrote a second profile for it, the whole display changes on the next repaint — no command, no relog.
Writing a profile
This is a complete profile. Everything you leave out is simply not checked.
profiles:
vip:
worlds: [survival] # only in this world
permission: hudforge.vip # only for this permission
condition: "" # and nothing else to check
weight: 100 # higher up the TAB list
sidebar:
title: "<shine:#C879FF:#FFFFFF:1600><bold>MY SERVER</bold></shine>"
lines:
- "<anim:separator>"
- "<white>%hud_player%"
- "<gray>ping %if:%hud_ping%>150?<red>%hud_ping%ms:<green>%hud_ping%ms%"
tablist:
header: ["", "<white>MY SERVER", ""]
footer: ["<gray>tps %hud_tps%"]
nametag:
prefix: "<gold>VIP "
suffix: ""
bossbars:
event:
text: "<white>Double XP weekend"
color: PURPLE
style: PROGRESS
progress: "1.0"Configuration
config.yml— the refresh rate, the frame animations and every profile, with a comment next to each key- Profiles are read in the order you write them and the first match wins, so put the specific ones first
metrics-idturns anonymous usage statistics off when set to 0
Commands and permissions
/hud reload— re-read the config without restartinghudforge.admindefaults to operators- Any permission you name in a profile is yours to define in your permissions plugin
Requirements
- Paper 1.21.x running Java 21. Purpur works; Spigot and Bukkit are not supported
- Optional: PlaceholderAPI, only if you want values from other plugins on the board
Nothing is mandatory. Without PlaceholderAPI the built-in values still work and the plugin starts normally.