Escribir menús
Primer menú #
Cada archivo .yml dentro de plugins/CrossMenu/menus/ es un menú. La ruta sin .yml se convierte en su identificador.
title: "&8Shop"
rows: 3
open-commands: [shop]
items:
diamonds:
slot: 13
material: DIAMOND
name: "&bDiamonds"
lore:
- "&7Click to buy"
left-actions:
- "[console] give {player} diamond 1"
- "[message] &aPurchased."Usa type: confirm o type: input para menús de confirmación y de entrada de texto. Los jugadores de Bedrock reciben formularios nativos cuando Geyser o Floodgate están disponibles. Los diálogos de Java se usan cuando el servidor los admite; en caso contrario, CrossMenu abre la versión de cofre.
Abrir un menú sin comando #
Además de open-commands, un menú puede abrirse cuando un jugador entra o hace clic con un objeto concreto:
open-triggers:
join: true # open shortly after joining
join-delay-ticks: 40 # default 20, allowed 1-1200
item:
material: COMPASS # the item in the main hand
name: "&aServer menu" # optional; colour codes are ignored when comparing
click: right # right (default), left or anyEl open-permission, el open-requirement y el límite de frecuencia de apertura del menú se aplican como siempre. Un clic que coincide se cancela, así que el objeto no hace nada más. Solo un menú puede reclamar un activador: si dos menús reclaman la misma entrada o el mismo objeto y clic, gana el que tiene el identificador que va primero y la consola lo indica. Para un NPC de Citizens, dale al NPC un comando de jugador crossmenu open <menu>.
Componentes #
Pon las definiciones compartidas en cualquier archivo .yml dentro de plugins/CrossMenu/components/. Cada clave de nivel superior es un componente.
# components/common.yml
close-button:
material: BARRIER
name: "&cClose"
actions: ["[close]"]
dark-pane:
material: BLACK_STAINED_GLASS_PANE
name: " "Usa un componente en un menú y sobrescribe solo lo que cambia:
items:
close:
component: close-button
slot: 22
back:
extends: [close-button, dark-pane]
slot: 18
name: "&eBack"Los componentes se combinan de izquierda a derecha. Las claves escritas en el menú siempre ganan. Las listas y los valores escalares se reemplazan por completo. Una clave local vacía elimina el valor heredado. Los nombres desconocidos, los bucles y los conflictos de tipo se notifican con su archivo de origen y su línea.
Diseños matrix #
Una matrix hace legibles los diseños de inventario. Cada fila debe contener exactamente nueve caracteres. . y los espacios son celdas vacías.
rows: 3
matrix:
- "OOOOOOOOO"
- "O..S.C..O"
- "OOOOOOOOO"
items:
shop:
symbol: S
material: EMERALD
name: "&aShop"
close:
symbol: C
component: close-button
fill-item:
material: GRAY_STAINED_GLASS_PANE
name: " "fill-item cubre las celdas que ningún objeto visible ocupa y siempre se dibuja detrás de los objetos normales. Los números de ranura y los símbolos pueden usarse en el mismo menú.
Acciones y requisitos #
Las acciones habituales incluyen comandos de jugador y de consola, mensajes, anuncios, sonidos, títulos, navegación entre menús, cerrar, actualizar, conectar, cambios de economía y cambios de objetos.
left-actions:
- "[takemoney] 250"
- "[console] give {player} diamond 1"
- "[sound] entity.player.levelup"
left-click-requirement:
requirements:
funds:
type: has money
amount: 250
deny-actions:
- "[message] &cYou need $250."Los requisitos abarcan permisos, dinero, experiencia, objetos, comparaciones, detección de Java/Bedrock, mundo, modo de juego, fecha/hora y grupos lógicos. Se aceptan alias de DeluxeMenus como perm, hasitem, equals, greater than, not equal to y !=.
[player] ejecuta el comando exactamente como está escrito. Si ningún plugin registra ese comando, no pasa nada y el jugador no ve ningún mensaje (DeluxeMenus muestra aquí el «Unknown command» del servidor). Escribe tú mismo un comando nuevo una vez para comprobar que existe.
Consulta los menús de ejemplo incluidos para ver tipos de clic, paginación, animaciones, cálculos, listas generadas, variantes de idioma, tiempos de espera y límites de uso.