Boards

boards.yml answers where. A board is a position in the world, a view binding, and the rules for who may see it.

boards:
  welcome:
    root-view: holopanels:welcome
    visibility-distance: 20.0
    click-distance: 6.0

  warp_directory:
    root-view: holopanels:warps
    visibility-distance: 18.0
    visible-if:
      permission: example.warps.view

The key is the board id, and it is what every command takes: /holopanels wall warp_directory. Bare board ids use HoloPanels' namespace internally. View references should be written as full namespaced ids so it is always clear which file or addon owns them.

Keys

root-viewview idrequired

The view this board starts on. Views are global by id, so any board can start on any view and navigate to any other. Several boards may share one view, and each gets its own per-viewer session, so walking between two copies does not carry your place.

anchorlocation

Where the board is. Filled in by /holopanels here and /holopanels wall, so it can be left out entirely and placed in game. Holds world, x, y, z and yaw.

visibility-distancenumberdefault from config.yml

How far away the board renders. Beyond it, nothing is sent to the client at all.

click-distancenumberdefault from config.yml

How close a player must be to click. Always at most visibility-distance in practice, since a panel you cannot see is not one you can aim at.

visible-ifcondition

Gate the whole board. A board that fails is not rendered and has no click region, so this is a real restriction rather than a filter. See conditions.

The full defaults, validation ranges and performance trade-offs are in Server configuration.

Verify a board definition

Run /holopanels validate before applying a hand edit. After reload, /holopanels info <board> confirms the root view, anchor and distances HoloPanels compiled, while /holopanels debug confirms whether the current viewer actually receives it.

The anchor and the board's axes

The anchor holds a yaw as well as a position, and that yaw defines the board's own axes. Panel offsets are right, up and forward relative to the board, not to the compass, so a view lays out the same way no matter which direction the board ended up facing.

welcome:
  root-view: holopanels:welcome
  anchor:
    world: world
    x: 128.5
    y: 71.0
    z: -204.5
    yaw: 180.0

Editing these by hand works, but /holopanels move and /holopanels nudge exist because tenths matter and the game is where you can see the result.

Restricting a board

visible-if takes the same condition shapes as panels and buttons, including the boolean combinators:

staff_stats:
  root-view: holopanels:stats
  visibility-distance: 12.0
  visible-if:
    all:
      - permission: example.staff
      - not:
          permission: example.staff.hide_boards

Gating at the board is cheaper than gating every panel inside its view, and it is the right level when the whole thing is staff-only. Gate at the panel or button when only part of a view should differ between viewers.

Defaults in config.yml

config.yml holds the server-wide defaults and the render loop's tuning:

default-visibility-distancenumber

Used by any board that does not set visibility-distance.

default-click-distancenumber

Used by any board that does not set click-distance.

visibility-check-ticksticks

How often a viewer's distance and conditions are re-evaluated.

movement-thresholdblocks

How far a player must move before their view is recalculated, so standing still costs nothing.

placeholder-refresh-ticksticks

How often lines containing PlaceholderAPI tokens are re-rendered. Only panels that actually contain a placeholder are refreshed.

click-offset-ynumber

Vertical correction applied to the click ray, for tuning how clicks line up with what is drawn.