Saltar al contenido principal

Layouts, marcos y ranuras

Un layout es un bloque con nombre del menú. Lo creas en el layoutPool de una entrada Open GUI y le das un id. Los demás layouts llegan a él a través de ese id.

Elegir un layout​

LayoutÚsalo paraCampos
simpleMenús estáticos, bordes y botones fijos.items
flexItems colocados automáticamente en filas.items, justifyContent, alignItems, wrap, virtualHeight
paginatedUna lista dividida en páginas.itemsPerPage, slots, items, navigationButtons
scrollableContenido más grande que la ventana.innerId, virtualWidth, virtualHeight, buttons
frameRectángulos independientes.frames
compositeCapas dibujadas una sobre otra.children
bookUn libro escrito.pages
merchantIntercambios de aldeanos.trades
storageRanuras de objetos persistentes.entry, groupKey, slots
leaderboardUna clasificación de facts.leaderboard, x, y, width, height, previousButton, nextButton

simple​

Cada item tiene una x (columna, de 0 a 8) y una y (fila, 0 arriba). Es el layout con el que conviene empezar.

dropOnClose devuelve lo que queda en los slots de la disposición al cerrarse el menú (también cuando otro menú lo reemplaza): el botín que el jugador no cogió o un objeto que dejó allí. Solo se devuelven los objetos con allowPickup, una sola vez; la decoración nunca. closeDelivery elige cómo: GIVE_OR_DROP (por defecto) los pone en el inventario y suelta el excedente a los pies del jugador, DROP lo suelta todo. Está desactivado por defecto y el editor avisa si se activa sin ningún objeto recogible.

flex​

flex ignora la x y la y de sus items y los distribuye de izquierda a derecha, fila tras fila, a lo ancho del menú. justifyContent decide cómo se reparte una fila (START, CENTER, END, SPACE_BETWEEN), alignItems dónde se sitúa el bloque verticalmente dentro de virtualHeight y wrap si una fila llena continúa en la línea siguiente. Sin wrap, los items que pasan de la última columna se descartan y se registran.

paginated​

Los items se dividen en páginas de itemsPerPage y se vuelcan en las slots físicas (el índice de ranura es y * 9 + x). Cuando slots está vacío, rellenan el inventario desde arriba a la izquierda. Añade botones en navigationButtons, uno por role:

  • NEXT y PREVIOUS aparecen solo cuando hay una página a la que ir.
  • BACK se muestra siempre y vuelve al menú anterior.
  • INDICATOR no se puede pulsar y aparece solo con dos páginas o más. Su nombre y su lore aceptan {page}, {total_pages}, {next_page}, {prev_page} y {page_indicator}.

Reserva las celdas de los botones: las páginas rellenan las ranuras indicadas en slots y no esquivan tus botones.

scrollable​

Un layout scrollable muestra una ventana sobre el layout indicado en innerId. virtualWidth y virtualHeight dan el tamaño del área completa. Añade buttons con una direction (UP, DOWN, LEFT, RIGHT) y un step, en ranuras por clic. Cada botón se muestra solo cuando hay algo a lo que desplazarse en su dirección.

Con showDefaultButtons activado (valor por defecto), se añade una flecha por cada dirección sin entrada en buttons. defaultStep (al menos 1) es el número de casillas que desplazan estas flechas por clic; tus propios botones conservan su step. Desactivado, no hay flechas por defecto.

Las flechas por defecto siguen la misma regla que las tuyas: solo se muestran mientras el contenido pueda desplazarse en su dirección. Si no las configuras, son objetos flecha simples llamados ▲, ▼, ◀ o ▶, en la columna derecha (columna 8) para arriba y abajo y en la fila inferior para izquierda y derecha. Nunca cubren nada: si la casilla ya contiene un objeto de contenido, un botón o una decoración, la flecha simplemente no se muestra, sin mensaje en la consola. Cambia el objeto, el nombre o la posición de una flecha en la lista scrollArrows de GUI Settings.

Menús escritos antes de las flechas por defecto

showDefaultButtons está activado por defecto, por lo que un layout scrollable existente recibe flechas. Desactívalo, o coloca las flechas en otro sitio, para dejar el menú exactamente como estaba.

La rueda del ratón también desplaza verticalmente el layout desplazable enfocado mientras hay un menú abierto. Dale a cada layout scrollable y paginated un id único, ya que la posición se registra por id.

frame​

Un layout frame lista rectángulos: id, x, y, width, height y el layoutId del layout que lo rellena. El contenido del marco se posiciona respecto a su esquina superior izquierda. Un marco sin un layoutId resoluble se omite. Usa @view como layoutId para que lo rellene la vista activa.

Un panel típico: una columna fija de pestañas, un marco de contenido desplazable y un marco de pie.

composite​

composite dibuja sus children (ids de layouts) en orden, con los últimos por encima. Pon el fondo primero, el contenido en medio y los botones al final. Un hijo que no existe se omite, y un bucle entre layouts da como resultado un layout vacío.

Conectar layouts​

Un layout se usa cuando se hace referencia a él: mediante mainLayoutId, un hijo de composite, el innerId de un scrollable o el layoutId de un frame. Un layout al que nadie hace referencia simplemente no se dibuja.

Items y ranuras​

Consulta la sección Menús de la página de GUI para ver los campos de un item.