3D menus
spatial/<id>.yml: panels standing in the world, with a menu block that holds what they contain.
spatial/<id>.yml is a menu drawn as panels standing in the world in front of the player. It needs a Java 1.21.4 or newer client. The layout (panels, grids, lists, carousels, theme)
is ExyliaLib's spatial format; a menu block holds what the menu contains. The first load writes every layout key the file left out, with comments.
title: "{primary}&lWARPS"
panels:
warps:
at: [0, 0, 0]
size: [3.6, 1.5]
title: "{secondary}&lWHERE TO?"
content: {type: GRID, source: warps, columns: 4, rows: 2}
footers:
- {label: "{success}Shop", action: shop}
- {label: "{error}Leave", action: leave} # leave closes it
preview: {visible: false}
carousel: {source: ""}
menu:
command: warps3d
fallback: warps_chest
lists:
warps: # what source reads
entries:
spawn:
priority: 1
if: "perm('warp.spawn')"
material: COMPASS
name: "{info}Spawn"
subtitle: "{letters_black}Safe zone"
require: "balance() >= 10"
deny: ["[MESSAGE] {error}You need 10 coins."]
click: ["[MONEY] take 10", "[CLOSE]", "[PLAYER] spawn"]
buttons:
shop: ["[SCREEN] shop"] # what action readsThe menu block
| Key | Does |
|---|---|
command, aliases, permission, require, deny, fallback, min-client, args, on-open | The opening keys, here under menu:. See Opening and fallbacks. |
lists.<name>.entries | The entries a panel's source: <name> reads. Each takes the keys of a chest slot (priority, if, material, name, require, deny, click) and a subtitle. |
buttons.<name> | The interaction lines a panel's action: <name> runs. |
A 3D entry has one click, so right: filters never run. Look at a piece and sneak to leave. /screensadmin check says when a panel reads a list the block does not have.
The example is spatial/warps_3d.yml, opened with /warps3d; a client that cannot draw it gets hub_chest. The panels, anchor, freeze and hide-others keys are ExyliaLib's spatial layout.
Something missing on this page? Tell us on Discord