Repository navigation
Releases
Honeycomb 1.1.0
Proxy networks are native
Velocity and BungeeCord jars ship with this release; the backend asks over honeycomb:network.
Panel and command polish
(same 1.1.0 build)
- Create closed the screen. Opening a dialog from inside a button click was dropped by the client.
DialogKit.shownow schedules the screen two ticks later on the player's own thread (Scheduling.forPlayerLater), so create, save and every other button that opens a screen lands. - Create reopened the editor with the new layout loaded, refused names already in use (
panel.name-taken), and survives a reload failure (reloadQuietly). - Front page rewritten. Four explained groups instead of unexplained headings: Displays, Server, Setup, Maintenance. The Displays screen spells out what tablist, sidebar, action bar, nametags and bossbars are.
- Help grouped and aligned.
/hcand/hc helpprint DISPLAYS, SERVER, COMING FROM TAB and OTHER, with the usage column padded so descriptions line up. /hc panel debugstill builds every screen and reports failures, from the console or in game.
Verified
- BungeeCord 26.1:
Net 1 on lobby via BungeeCord, 1 - Velocity 3.5.1:
Net 1 on lobby via Velocity, 1 - 168 unit tests pass
/hc panel debugbuilds every screen
Honeycomb 1.0.0
Verification
Run against Folia 1.21.11 with a real 1.21.11 client on a clean config folder:
| Check | Result |
|---|---|
| Tablist header and footer | Rendered, placeholders resolved |
| Scoreboard title and rows | 9 rows, gradient title |
| Bossbar | Rendered, gradient title |
| Action bar | Rendered with ping, online, TPS |
| Below name | Objective created on join |
| Panel | Dialog opens, sections and counts |
| Reload | 14 ms, 0 warnings, 0 errors |
| Preset load | SMP applied, 4 tablist lines, 8 scoreboard rows |
| Unresolved placeholders | None |
| Console errors | None |
What changed from 0.12
Panel design
- Main menu split into DISPLAYS, SERVER and MAINTENANCE groups instead of one flat list.
- Every display button carries its layout count, for example
Scoreboard (2). - Section pages open with an uppercase title and a count line, so you know how many exist before scrolling.
- Layout names get a marker and open with one click, no summary clutter.
- Empty sections say so in amber instead of showing a blank page.
- Create button is
+ Create new <kind>in bold green, always directly under the last layout. - Layout pages are headed
SCOREBOARD · DEFAULT, kind and name together. - A
Who sees itline names the audience: greeneveryoneor gold rule count. - Conditions are the first fields on every page.
- Save reads
Create layoutfor a new entry andSave changesfor an existing one. - Saving confirms in chat through the shared prefix instead of a bare green line.
- Save failures and missing names report through the same message file.
- Back returns to the section list, Done always closes, Apply changes reloads.
Shipped design
- Tablist redesigned: brand line, separator rows,
Welcome back, players, ping and domain footer. - Scoreboard redesigned: aligned key and value rows, no score numbers, domain footer.
- Bossbar redesigned: brand gradient with the player name and progress overlay.
- Action bar redesigned: one glanceable line with ping, online and TPS.
- Message prefix unified to the three stop honey gradient with matching separator.
%player_prefix%and%player_suffix%collapse to empty when LuckPerms is absent instead of printing raw tokens.- Default scoreboard no longer shows a Rank row that needs an integration.
Behaviour
- Folia scoreboard engine sends objective, display slot and rows as packets; the Bukkit board path stays for Paper.
- A layout whose placeholder rule cannot be compared no longer matches, so demo layouts cannot hijack the screen.
plugin.reload()cannot throw, so a panel save always finishes and reopens.- Dialogs open on the owning thread.
/honeycomb debugand/honeycomb statusremoved, along with their permissions.
Honeycomb 0.17.0
What changed (Folia and everywhere else)
Rows are written the modern way first, one custom name per score. A server that refuses that
(older builds, some Folia setups) is switched once to team prefixes, the trick the long lived
scoreboard libraries use: the score entry stays invisible and the visible text lives in the
team. Every visible row is rewritten through the new path at the moment of the switch, so the
board never goes blank during it.
Three smaller causes of an invisible scoreboard are gone:
- creating the objective is idempotent, so a board that survived a reload no longer throws
"objective already exists" and stops drawing, - the slot is reclaimed on the first draw in case another plugin took the sidebar slot,
- the plain-entry fallback now also rewrites the teams, and a failure sends the player one chat
line naming the exception instead of only writing to the console.
Learnings came from FastBoard (teams and prefix split, plain invisible entries, custom names
only where the server has them) and from the Folia scheduling rules.
Panel wording
The scoreboard is called a scoreboard everywhere now, in the panel, the list, the migration
dialog and the handover. Conditions sit at the top of every entry page, above the text fields,
because they decide who sees the entry.
Name: default
Conditions: none
[ Enabled ]
[ Conditions: worlds ] [ Conditions: permissions ] [ Conditions: placeholder rules ]
[ Priority ]
[ Title ] [ Lines, one per row ] [ Update interval ] [ Hide numbers ]
[ Save ] [ Back ] [ Close ]
Text
No em dashes anywhere in plugin output, config comments or docs. Dashes are plain hyphens.
Closing tags are repaired: paired works, missing still colours, a stray closing tag is dropped,
mismatched nesting is closed in the right order, unknown tags are removed.
Defaults
Tablist, scoreboard, bossbar, action bar and below name are all on for a fresh install.
Build
./gradlew build # both jars plus 154 testsMIT, copyright (c) 2026 Blue Labs.
Honeycomb 0.16.0
What changed
/honeycomb panel -> Scoreboard (or Tablist, Action bar, Nametags, Bossbars) now opens a plain
list. One small button per entry, the name only; a fresh install has one called default.
Click default and the page shows:
Name: default
Conditions: none
Lines and text take MiniMessage, one row per line.
[ Enabled ] [ Title ] [ Lines, one per row ] [ Update interval ] [ Hide numbers ]
[ Priority ] [ Worlds ] [ Permissions ] [ Placeholder conditions, one per row ]
[ Save ] [ Back ] [ Close ]
Leave the fields alone and press Back to return to the list. Under default sits
Create new, which asks for a name, then opens the same page empty with a Create button.
Defaults
| Display | Default (0.16.0) |
|---|---|
| Tablist | on, header, footer, player list names |
| Sidebar | on, layout default, 10 rows, numbers hidden |
| Bossbar | on, welcome bar |
| Action bar | on, ping and online count |
| Below name | on, health mode |
| Nametags | on |
Bossbar and action bar used to ship disabled, which is why a fresh server showed neither.
Sidebar hardening
A sidebar can no longer go blank without saying why:
- the objective reclaims the
SIDEBARslot when it is first drawn, in case another plugin took it, - coloured score entries fall back to plain entries if the server refuses them,
- a row the server rejects falls back to a plain stripped-text row instead of losing the board,
- any remaining failure is logged once with the exception name and message.
Text
Closing tags are repaired: paired works, missing still colours, a stray </gray> is dropped,
mismatched nesting is closed in the right order, unknown tags are removed. Tablist header and
footer are parsed as one block, so a tag opened in the first row closes in the last.
Conditions
conditions:
worlds: [world_nether]
groups: [vip]
permissions: [my.permission]
placeholders:
- "%vault_eco_balance% >= 100000"Highest priority match wins; no conditions means everyone.
Build
./gradlew build # both jars plus 154 testsMIT, copyright (c) 2026 Blue Labs.
Honeycomb 0.15.0
What changed
Closing tags. The parser now repairs tag structure instead of handing raw markup to
MiniMessage. <gray>hello</gray> colours the text, <yellow>hello still colours it without a
closing tag, hello</gray> shows just hello because a closing tag with nothing open is
dropped, <red><gray>x</red> is closed in the right order, and an unknown tag such as
<yellow text> is removed rather than printed. This is the behaviour the 0.7 to 0.9 builds had
by parsing a whole block at once; the per line rewrite in 0.13 lost it.
Commands removed. /honeycomb debug and /honeycomb status are gone, along with their
classes. Relay and display state is in the panel and the console.
Tablist and sidebar. The tablist header and footer are parsed as one block again, so a tag
opened in the first row closes in the last. The sidebar keeps per row components but each row
is repaired by the same parser, so a stray closing tag in a row no longer blanks the board.
Full notes: HANDOVER.md inside Honeycomb-0.15.0-full.zip.
Honeycomb 0.14.0
What changed in 0.14.0
Panel lists. Clicking Tablist, Scoreboard, Action bar, Nametags or Bossbars on the main
screen now opens a list of names, one button per existing entry. A name button opens that
entry: its text, its conditions, its priority. The last button in the list is
Create new ... in bold green, which asks for a name first, then the same fields, and only
then writes it.
Staff layouts. Turning a staff layout off no longer leaves staff looking at nothing. The
sidebar and the tablist fall back to the first enabled non-staff layout for that player, so
staff keep a working screen. Staff layouts still only apply to honeycomb.staff when they are
on.
Sidebar. Selection now falls back when no layout matches, instead of drawing an empty
sidebar. A staff layout that is off is skipped rather than selected and blanked.
Messages. messages.yml ships with the honey gradient prefix:
prefix: "<shadow:#000000:1><bold><gradient:#FFE3A8:#FFB01F:#FF7A00>HONEYCOMB</gradient></bold></shadow> <shadow:#000000:1><dark_gray>»</dark_gray></shadow> "A message key that is missing from the file is now printed as words (Status line), never as
the dotted key and never as "Missing message:". Replace your old messages.yml with the one in
this build to get the new prefix.
MiniMessage. <yellow>hi</yellow> and <yellow>hi both work. Unclosed tags continue across
the whole layout, &e codes convert, unknown tags are dropped instead of printing the markup.
Nametags. Teams are drawn on the same per-player board as the sidebar, so a prefix reaches
the client even with the sidebar off. When nothing applies the console says why.
Action bar. Named texts with worlds, permissions and priority, chosen like the other
displays, with actionbar.template as the fallback.
Honeycomb 0.13.0
MiniMessage
<yellow>hi</yellow> and <yellow>hi both render yellow now. A missing closing tag no longer
ends the colour at the end of a row, a tag is carried across a whole layout, &e style codes
are converted, and a tag the server does not know is dropped instead of turning the line into
literal text.
Panel
The extra Layouts category is gone. Tablist, Scoreboard, Action bar, Nametags and Bossbars each
carry two new buttons: one lists what already exists with its conditions beside the name, and a
bold green button creates a new one by asking for a name first, then the text and conditions.
Panel headings use the honey gradient and every line carries a shadow.
Action bar
Named action bar texts with worlds, permissions and priority, picked the same way as the other
displays, with actionbar.template as the fallback.
Nametags
Teams are drawn on the same per player board the other displays use, so a prefix reaches the
client even when the sidebar is off. When nothing is applied the console now says why: no groups
in nametags.yml, or no group matched a player and what would make one match.
Honeycomb 0.9.1
Honeycomb 0.9.1 adds a one command TAB import.
- /honeycomb migrate reads plugins/TAB/config.yml and groups.yml and reports what it found. Nothing is written.
- /honeycomb migrate apply backs up the current files to migration-backup//, writes tablist, sidebar, nametag groups, bossbars and the below name display, then reloads.
- Legacy colour codes and hex become MiniMessage, formatting resets the way Minecraft does, and TAB placeholders are mapped to PlaceholderAPI names (%player% to %player_name%, %online% to %server_online%, %group% to %luckperms_primary_group_name%).
- New docs/MIGRATION.md explains the mapping and what is not copied.
- 126 tests green across both modules.
Honeycomb 0.9.0
Honeycomb 0.9.0
Folia, per world nametags and one support matrix for every popular server.
- Folia support: displays are scheduled on the thread that owns each player. Tested on Folia 1.21.11: plugin enables with 0 warnings, 0 errors.
- Nametags take conditions, so nametags and below name are per world like the rest.
- All five displays read world, group, permission and placeholder conditions.
- Only one jar per Java version, for Paper, Spigot, Bukkit, Folia, Purpur and Pufferfish from 1.21.9 to 26.3.
Honeycomb 0.8.0
Honeycomb 0.8.0
Conditions now compare placeholders, so a layout can follow the player the way TAB does.
- world, group, permission and placeholder conditions on tablist, sidebar, bossbar and below name
- operators: ==, !=, >=, <=, >, < and contains, numbers compared as numbers
- presets use arrows, YOURSERVER as heading, yourserver.net as footer
- bundled presets refresh on upgrade, edited copies kept in presets/backup-version
Pick the jar for your Java version: java21 for 1.21.9 to 1.21.11, java25 for 26.1 to 26.3.