Views, abas e herança
Uma view é uma tela de um menu. Todas as views compartilham a mesma estrutura (a faixa de abas, o rodapé), e apenas o conteúdo muda.
Declare views
Em views, adicione uma entrada por tela:
| Campo | Função |
|---|---|
id | Usado por gui:view e pelas abas. |
name | Rótulo usado na trilha de navegação (breadcrumb). Se vazio, usa o id. |
title | Título desta view. Vazio mantém o título do menu. Aceita {breadcrumb}, {view} e {root}. |
parentId | View pai, para o breadcrumb e para manter a aba do pai acesa. |
frames | Mapeamento explícito de um id de frame para um id de layout. |
criteria, viewPermission | A view fica inacessível e sua aba oculta quando não são aprovados. |
activeStyle | Como a aba aparece enquanto ativa: glint, material, customModelData, nameFormat, loreSuffix. |
No Open GUI, defaultViewId é a view aberta primeiro (a primeira declarada quando vazio). breadcrumbSeparator é o texto MiniMessage entre os segmentos do breadcrumb, e pushHistoryOnViewSwitch faz o gui:back voltar à view anterior após uma troca de aba.
Preencha os frames
Em um layout frame, defina o layoutId de um frame como @view. Para a view ativa, a extensão procura o layout nesta ordem:
- o mapeamento
framesda view para esseidde frame; - um layout chamado
<view id>_<frame id>, por exemploisland_contentpara o framecontente a viewisland; - as mesmas duas buscas ao longo da cadeia de
parentId.
Um frame que não resolve para nada permanece vazio. Apenas o layout raiz do menu (mainLayoutId) resolve os frames @view.
Abas
Dê a um item de aba buttonPrefix view: e buttonType igual ao id da view. Clicar nele muda para a view, e ele assume o activeStyle da view enquanto essa view ou uma de suas filhas estiver ativa. As abas de views inacessíveis ficam ocultas.
A primeira view que o jogador pode acessar é usada quando a solicitada está oculta. Uma view solicitada que não existe é registrada como Unknown view.
Herde um menu
baseMenuId é o id de entry de um Open GUI modelo. O filho herda seu layoutPool, views, mainLayoutId, defaultViewId e size, e a cadeia é seguida até a raiz, de modo que um menu pode herdar um modelo de domínio que por sua vez herda uma estrutura global. Um layout do filho com o mesmo id substitui o herdado, e o mesmo vale para as views. O storagePool é herdado somente do pai direto. Um mainLayoutId em branco no filho usa o do pai.
Verifique se o pai existe, se todo layoutId existe no pool combinado e se dois menus não herdam um do outro.
Na prática
Crie um menu modelo com um frame de abas fixo e um frame de conteúdo @view, depois crie um filho por domínio que apenas sobrescreve os layouts de conteúdo. Os layouts de conteúdo podem ser simple, scrollable ou paginated sem mexer na faixa de abas.