Escrever menus
Primeiro menu #
Cada arquivo .yml em plugins/CrossMenu/menus/ é um menu. O caminho sem .yml vira o ID dele.
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."Use type: confirm ou type: input para menus de confirmação e de entrada de texto. Jogadores do Bedrock recebem formulários nativos quando o Geyser ou o Floodgate está disponível. Os diálogos do Java são usados quando o servidor os suporta; caso contrário, o CrossMenu abre a versão em baú.
Abrir um menu sem comando #
Além de open-commands, um menu pode abrir quando um jogador entra ou clica com um determinado item:
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 anyO open-permission, o open-requirement e o limite de frequência de abertura do menu se aplicam como de costume. Um clique que corresponde é cancelado, então o item não faz mais nada. Apenas um menu pode reivindicar um gatilho: se dois menus reivindicarem a mesma entrada ou o mesmo item e clique, vence aquele cujo ID vem primeiro, e o console avisa. Para um NPC do Citizens, dê ao NPC o comando de jogador crossmenu open <menu>.
Componentes #
Coloque as definições compartilhadas em qualquer arquivo .yml em plugins/CrossMenu/components/. Cada chave de nível superior é um componente.
# components/common.yml
close-button:
material: BARRIER
name: "&cClose"
actions: ["[close]"]
dark-pane:
material: BLACK_STAINED_GLASS_PANE
name: " "Use um componente em um menu e sobrescreva apenas o que muda:
items:
close:
component: close-button
slot: 22
back:
extends: [close-button, dark-pane]
slot: 18
name: "&eBack"Os componentes são mesclados da esquerda para a direita. As chaves escritas no menu sempre vencem. Listas e valores escalares são substituídos por inteiro. Uma chave local vazia remove o valor herdado. Nomes desconhecidos, laços e conflitos de tipo são informados com o arquivo de origem e a linha.
Layouts matrix #
Uma matrix torna os layouts de inventário legíveis. Cada linha deve conter exatamente nove caracteres. . e espaços são células vazias.
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 cobre as células que nenhum item visível ocupa e sempre é desenhado atrás dos itens normais. Números de slot e símbolos podem ser usados no mesmo menu.
Ações e requisitos #
As ações comuns incluem comandos de jogador e de console, mensagens, anúncios, sons, títulos, navegação entre menus, fechar, atualizar, conectar, alterações de economia e alterações de itens.
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."Os requisitos abrangem permissões, dinheiro, experiência, itens, comparações, detecção de Java/Bedrock, mundo, modo de jogo, data/hora e grupos lógicos. Aliases do DeluxeMenus como perm, hasitem, equals, greater than, not equal to e != são aceitos.
[player] executa o comando exatamente como foi escrito. Se nenhum plugin registrar esse comando, nada acontece e o jogador não vê nenhuma mensagem (o DeluxeMenus mostra aqui o "Unknown command" do servidor). Digite você mesmo um comando novo uma vez para conferir se ele existe.
Veja os menus de exemplo incluídos para tipos de clique, paginação, animações, cálculos, listas geradas, variantes de idioma, tempos de espera e limites de uso.