First Tablist
First Tablist
Section titled “First Tablist”This page shows the honest current DaisyCore tablist path:
- per-player header and footer sessions
- MiniMessage-first strings by default
- shared config-backed text only when it is useful
Step 1: start with direct MiniMessage strings
Section titled “Step 1: start with direct MiniMessage strings”fun profileTablist(player: Player) = tablist { header("<gradient:#7dd3fc:#c4b5fd>Welcome back</gradient>\n<white>${player.name}</white>") footer("<gray>Coins: <white>1,250</white>") }That is the normal path.
Those strings are already DaisyCore-facing MiniMessage strings.
Step 2: show it to a player
Section titled “Step 2: show it to a player”val session = daisy.tablists?.show(player, profileTablist(player))Step 3: refresh or close it
Section titled “Step 3: refresh or close it”session?.refreshNow()session?.close()Step 4: use shared config-backed text when the plugin already stores header/footer there
Section titled “Step 4: use shared config-backed text when the plugin already stores header/footer there”fun profileTablist(player: Player) = tablist { headerLang("profile.tablist.header", viewer = player, "player" to player.name) footerLang("profile.tablist.footer", viewer = player, "coins" to "1,250") }Those keys are just your own plugin config paths.
They only become useful when you want:
- shared text across multiple systems
- translation/localization
- reloadable wording
- config-managed UI text
Components also work
Section titled “Components also work”If your plugin is already component-first, the tablist builder also accepts Component values directly.
The recommended order remains:
- direct MiniMessage strings
- components when you want explicit control
- key-backed text when the plugin already stores text that way
Current scope
Section titled “Current scope”The current public tablist API intentionally focuses on:
- header
- footer
- options
- session refresh and cleanup
It does not currently claim richer tab entry formatting or packet-heavy customization.
Current default
Use direct MiniMessage strings first. Shared config-backed text is the scaling path, not the starting requirement.
Next steps
Section titled “Next steps”- See all major systems together: Build a Plugin Flow
- Read the rendering model honestly: Tablist Rendering Model
- Jump to API details: Tablist DSL