Pular para o conteúdo principal

Layouts, frames e slots

Um layout é um bloco nomeado do menu. Você o cria no layoutPool de uma entry Open GUI e lhe dá um id. Os outros layouts o alcançam por esse id.

Escolha um layout​

LayoutUse paraCampos
simpleMenus estáticos, bordas e botões fixos.items
flexItens posicionados automaticamente em linhas.items, justifyContent, alignItems, wrap, virtualHeight
paginatedUma lista dividida em páginas.itemsPerPage, slots, items, navigationButtons
scrollableConteúdo maior que a janela.innerId, virtualWidth, virtualHeight, buttons
frameRetângulos independentes.frames
compositeCamadas desenhadas umas sobre as outras.children
bookUm livro escrito.pages
merchantTrocas de aldeões.trades
storageSlots de itens persistentes.entry, groupKey, slots
leaderboardUm ranking de fact.leaderboard, x, y, width, height, previousButton, nextButton

simple​

Cada item tem um x (coluna, de 0 a 8) e um y (linha, 0 no topo). É o layout para começar.

dropOnClose devolve o que sobrou nos slots do layout quando o menu fecha (inclusive quando outro menu o substitui): o saque que o jogador não pegou ou um item que ele colocou ali. Só itens com allowPickup são devolvidos, uma única vez; decoração nunca. closeDelivery escolhe como: GIVE_OR_DROP (padrão) coloca no inventário e solta o excedente aos pés do jogador, DROP solta tudo. Vem desativado por padrão, e o editor avisa quando está ativo sem nenhum item recolhível.

flex​

O flex ignora o x e o y de seus itens e os distribui da esquerda para a direita, linha após linha, ao longo da largura do menu. justifyContent define como uma linha é distribuída (START, CENTER, END, SPACE_BETWEEN), alignItems onde o bloco fica na vertical dentro de virtualHeight, e wrap se uma linha cheia continua na linha seguinte. Sem wrap, os itens além da última coluna são descartados e registrados no log.

paginated​

Os itens são divididos em páginas de itemsPerPage e distribuídos nos slots físicos (o índice do slot é y * 9 + x). Quando slots está vazio, eles preenchem o inventário a partir do canto superior esquerdo. Adicione botões em navigationButtons, um por role:

  • NEXT e PREVIOUS aparecem somente quando há uma página para ir.
  • BACK é sempre exibido e volta ao menu anterior.
  • INDICATOR não é clicável e aparece apenas com duas ou mais páginas. Seu nome e lore aceitam {page}, {total_pages}, {next_page}, {prev_page} e {page_indicator}.

Reserve as células dos botões: as páginas preenchem os slots listados em slots e não evitam os seus botões.

scrollable​

Um layout scrollable mostra uma janela sobre o layout indicado em innerId. virtualWidth e virtualHeight dão o tamanho da área completa. Adicione buttons com um direction (UP, DOWN, LEFT, RIGHT) e um step, em slots por clique. Cada botão só é exibido quando há algo para rolar na sua direção.

Com showDefaultButtons ativado (o padrão), uma seta é adicionada para cada direção sem entrada em buttons. defaultStep (no mínimo 1) é o número de slots que essas setas rolam por clique; seus próprios botões mantêm o seu step. Desativado, não há setas padrão.

As setas padrão seguem a mesma regra das suas: só aparecem enquanto o conteúdo puder rolar na sua direção. Sem configuração, são itens de seta simples chamados ▲, ▼, ◀ ou ▶, na coluna da direita (coluna 8) para cima e para baixo e na última linha para esquerda e direita. Elas nunca cobrem nada: se a célula já contém um item de conteúdo, um botão ou uma decoração, a seta simplesmente não é exibida, sem mensagem no console. Altere o item, o nome ou a posição de uma seta na lista scrollArrows de GUI Settings.

Menus escritos antes das setas padrão

showDefaultButtons vem ativado por padrão, então um layout scrollable existente ganha setas. Desative-o, ou posicione as setas em outro lugar, para manter o menu exatamente como estava.

A roda do mouse também rola verticalmente o layout rolável em foco enquanto um menu está aberto. Dê um id único a cada layout rolável e paginado, pois a posição é registrada por id.

frame​

Um layout frame lista retângulos: id, x, y, width, height e o layoutId do layout que o preenche. O conteúdo do frame é posicionado em relação ao seu canto superior esquerdo. Um frame sem um layoutId resolvível é ignorado. Use @view como layoutId para que a view ativa o preencha.

Um dashboard típico: uma coluna fixa de abas, um frame de conteúdo rolável e um frame de rodapé.

composite​

O composite desenha seus children (ids de layouts) em ordem, com os últimos por cima. Coloque o fundo primeiro, o conteúdo no meio e os botões por último. Um filho que não existe é ignorado, e um laço entre layouts resulta em um layout vazio.

Conecte layouts​

Um layout é usado quando é referenciado: por mainLayoutId, por um filho de composite, por um innerId de scrollable ou por um layoutId de frame. Um layout que ninguém referencia simplesmente não é desenhado.

Itens e slots​

Veja a seção Menus da página do GUI para os campos de um item.