Content generated with AI — it may contain mistakes.

Menus

HUD

hud.yml, scoreboards.yml and bossbars.yml: text, sidebars and boss bars kept on players' screens, drawn on the HUD or vanilla.

hud.yml keeps text on players' screens while they play, without ever taking their controls: a level and world corner, a "spawn · safe zone" banner, a low-health warning, and notices that slide in when something happens (a kill, a level-up, the first join).

  • It never shakes while players walk or jump, and keeps its place while they sprint.
  • It steps aside while a screen is open, while a cinematic plays, while dead and in spectator mode.
  • Each player can turn it off in /settings (Show HUD); the choice is kept across restarts.
  • One display per line of text and nothing layered: a corner of three lines costs the client three entities.
widgets:
  low_health:
    anchor: above-hotbar
    when: "health() < 7"
    every: 5
    text: "{error}❤ {letters}Low health {letters_black}· {error}find cover"
  level:
    anchor: top-left
    every: 20
    text:
      - "{primary}✦ {letters}Level{letters_black}: {info}%player_level%"
      - "{primary}♦ {letters}World{letters_black}: {info}%player_world%"
notices:
  kill:
    event: kill
    group: kill
    text: "{error}⚔ {letters}You defeated {highlight}%victim%"
  level_up:
    event: level-up
    moment: true
    text: "{highlight}&lLEVEL %level%"

The example file ships with every entry enabled: false: turn on the ones you want. Besides the vitals card it ships a small kit of designs (status bar, level bar, minimap, profile, side panel, low-health and spawn banners) in hud/: edit them freely.

Widgets

A widget stays on screen. Its text is read again every every ticks, so placeholders stay current.

KeyDoesDefault
anchorwhere it sits (see below)top-left
textone line or a list of lines; colours, {icon:...} and placeholders work
whenshown only while this holds, written as a menu's require: (health() < 7, world() == 'spawn', perm('vip'), balance() >= 100)always
orderits place in its anchor's stack, lowest nearest the edge0
everyhow often it is read again, in ticks (20 is a second)10
permissiononly players with it see iteverybody
worldsonly in these worldsevery world
scaleits size, 1 the default1
paneltrue draws a dark panel behind itfalse
designdraws hud/<name>.html (styled by hud/<name>.css) instead of text, so cards, bars and gradients are written as a screen is; text is then not needednone
enabledfalse keeps it written but shows it to nobodytrue

A widget whose condition stops holding slides out, and slides back in when it holds again.

Notices

A notice slides in when its event happens, stays a few seconds and slides away. Newer notices stand nearest the edge; past five at one anchor the oldest leaves early.

KeyDoesDefault
eventjoin, first-join, death, kill, world-change, level-up, advancement
textwhat it says; %killer% on death, %victim% on kill, %world%, %level%, %advancement%
grouprepeats of the same group merge into one line that counts them (×3)none
momenttrue draws it large over the crosshair, one at a timefalse
secondshow long it stays3 (2 for a moment)
anchor, permission, worlds, enabledas for widgetstop-right (center for a moment)

A death notice waits for the player to respawn.

Any menu or screen action can show one too:

actions:
  - "[HUD] {success}+50 {letters}coins;group:coins;seconds:4"
  - "[MOMENT] {highlight}&lJACKPOT"

scoreboards.yml and bossbars.yml write each sidebar and boss bar twice: a design drawn on the HUD, and the vanilla words. A player whose client draws the HUD (Java 1.20.2 or newer) and who keeps it on in /settings sees the design, and no vanilla bar takes the top of their screen. Everyone else (Bedrock through Geyser, older clients, a player who turned the HUD off) gets the vanilla sidebar or boss bar. Each player is checked twice a second, so turning the HUD off swaps the form at once.

scoreboards:
  main:
    priority: 0
    every: 20
    design: sidebar
    title: '{primary}&lPROFILE'
    lines:
      - '  {letters_black}· {info}{icon:book} {letters}Name{letters_black}: {info}%player_name%'
      - '{muted}{server-ip}'
bossbars:
  event:
    design: event_bar
    text: '{primary}✦ {letters}Double coins this weekend!'
    color: PURPLE
    overlay: PROGRESS
    progress: '%player_health% / 20'
KeyDoesDefault
designthe hud/<name>.html drawn on the HUD; leave it out to show the vanilla form to everybodynone
anchor, orderas for widgetsright for a sidebar, top and -100 for a boss bar
when, permission, worlds, everyas for widgetsalways, everybody, every world, 20
prioritysidebars only: one shows at a time, the highest whose conditions hold0
title, linesthe vanilla sidebar: at most 15 lines; colours, {icon:...}, {server-ip} and placeholders work. Leave them out to show it only on the HUD
text, color, overlay, progressthe vanilla boss bar. color is PINK, BLUE, RED, GREEN, YELLOW, PURPLE or WHITE; overlay is PROGRESS or NOTCHED_6, _10, _12, _20; progress is 0 to 1, a number or a formulaPURPLE, PROGRESS, 1
enabledfalse keeps it written but shows it to nobodytrue

Another plugin's sidebar (a duel, an event) still shows over this one while it lasts. Other plugins can make the same choice with %player_hud%, true when a HUD is drawn for the player. Both files are editable in the browser through the web editor.

Anchors

AnchorWhere
top-leftthe top left corner, free in vanilla
topthe top centre, under one boss bar
top-rightthe top right, under the potion icons
leftthe left edge, above the chat
centerjust above the crosshair
rightthe right edge, where the sidebar goes
above-hotbarover the hotbar, hearts and experience bar
bottom-rightthe bottom right corner
Atención
An item held in the main hand covers bottom-right: the game draws the hand over everything else. An empty hand does not.

Positions are measured on a 16:9 window at the default field of view of 70. A wider field of view draws everything a little nearer the centre, never off screen; a 4:3 window can cut the side anchors.

/screensadmin check lists anything in hud.yml, scoreboards.yml and bossbars.yml that does not read (an unknown event or anchor, a condition with a typo), and the file reloads by itself within two seconds of being saved. It is also editable in the browser through the web editor.

Something missing on this page? Tell us on Discord