Aller au contenu principal

Dispositions, cadres et emplacements

Une disposition (layout) est un bloc nommé du menu. Vous la créez dans le layoutPool d'une entrée Open GUI et lui donnez un id. Les autres dispositions y accèdent via cet id.

Choisir une disposition​

DispositionÀ utiliser pourChamps
simpleMenus statiques, bordures et boutons fixes.items
flexObjets placés automatiquement en lignes.items, justifyContent, alignItems, wrap, virtualHeight
paginatedUne liste découpée en pages.itemsPerPage, slots, items, navigationButtons
scrollableUn contenu plus grand que la fenêtre.innerId, virtualWidth, virtualHeight, buttons
frameRectangles indépendants.frames
compositeCalques dessinés les uns sur les autres.children
bookUn livre écrit.pages
merchantÉchanges de villageois.trades
storageEmplacements d'objets persistants.entry, groupKey, slots
leaderboardUn classement de faits.leaderboard, x, y, width, height, previousButton, nextButton

simple​

Chaque objet possède un x (colonne, de 0 à 8) et un y (ligne, 0 en haut). C'est la disposition par laquelle commencer.

dropOnClose rend ce qui reste dans les emplacements de la disposition à la fermeture du menu (y compris quand un autre menu le remplace) : le butin que le joueur n'a pas pris, ou un objet qu'il y a posé. Seuls les objets avec allowPickup sont rendus, une seule fois ; la décoration ne l'est jamais. closeDelivery choisit comment : GIVE_OR_DROP (défaut) met les objets dans l'inventaire et jette le surplus aux pieds du joueur, DROP jette tout. C'est désactivé par défaut, et l'éditeur avertit si c'est activé sans aucun objet récupérable.

flex​

flex ignore les x et y de ses objets et les répartit de gauche à droite, ligne après ligne, sur la largeur du menu. justifyContent décide de la répartition d'une ligne (START, CENTER, END, SPACE_BETWEEN), alignItems de la position verticale du bloc dans virtualHeight, et wrap si une ligne pleine continue sur la ligne suivante. Sans wrap, les objets au-delà de la dernière colonne sont supprimés et journalisés.

paginated​

Les objets sont découpés en pages de itemsPerPage et versés dans les slots physiques (l'index d'un emplacement vaut y * 9 + x). Quand slots est vide, ils remplissent l'inventaire à partir du coin supérieur gauche. Ajoutez des boutons dans navigationButtons, un par role :

  • NEXT et PREVIOUS n'apparaissent que s'il existe une page vers laquelle aller.
  • BACK est toujours affiché et revient au menu précédent.
  • INDICATOR n'est pas cliquable et n'apparaît qu'à partir de deux pages. Son nom et son lore acceptent {page}, {total_pages}, {next_page}, {prev_page} et {page_indicator}.

Réservez les cases des boutons : les pages remplissent les emplacements listés dans slots et n'évitent pas vos boutons.

scrollable​

Une disposition scrollable affiche une fenêtre sur la disposition nommée dans innerId. virtualWidth et virtualHeight donnent la taille de la zone complète. Ajoutez des buttons avec une direction (UP, DOWN, LEFT, RIGHT) et un step, en emplacements par clic. Chaque bouton n'est affiché que s'il y a quelque chose à faire défiler dans sa direction.

Avec showDefaultButtons activé (valeur par défaut), une flèche est ajoutée pour chaque direction sans entrée dans buttons. defaultStep (au moins 1) est le nombre d'emplacements que ces flèches font défiler par clic ; vos propres boutons gardent leur step. Désactivé, aucune flèche par défaut n'est ajoutée.

Les flèches par défaut suivent la même règle que les vôtres : elles ne s'affichent que si le contenu peut défiler dans leur direction. Sauf configuration, ce sont de simples objets flèche nommés ▲, ▼, ◀ ou ▶, dans la colonne de droite (colonne 8) pour haut et bas et sur la dernière ligne pour gauche et droite. Elles ne recouvrent jamais rien : si la case contient déjà un objet de contenu, un bouton ou une décoration, la flèche n'est tout simplement pas affichée, sans message dans la console. Changez l'objet, le nom ou la place d'une flèche dans la liste scrollArrows de GUI Settings.

Menus écrits avant les flèches par défaut

showDefaultButtons est activé par défaut : une disposition scrollable existante gagne donc des flèches. Désactivez-le, ou placez les flèches ailleurs, pour garder le menu exactement tel qu'il était.

La molette de la souris fait aussi défiler verticalement la disposition défilante ciblée tant qu'un menu est ouvert. Donnez un id unique à chaque disposition défilante et paginée, car la position est suivie par id.

frame​

Une disposition frame liste des rectangles : id, x, y, width, height et le layoutId de la disposition qui le remplit. Le contenu du cadre est positionné par rapport à son coin supérieur gauche. Un cadre sans layoutId résolvable est ignoré. Utilisez @view comme layoutId pour laisser la vue active le remplir.

Un tableau de bord typique : une colonne d'onglets fixe, un cadre de contenu défilant et un cadre de pied de page.

composite​

composite dessine ses children (identifiants de dispositions) dans l'ordre, les derniers par-dessus. Placez l'arrière-plan en premier, le contenu au milieu et les boutons en dernier. Un enfant inexistant est ignoré, et une boucle entre dispositions donne une disposition vide.

Relier les dispositions​

Une disposition est utilisée lorsqu'elle est référencée : par mainLayoutId, par un enfant de composite, par le innerId d'un scrollable ou par le layoutId d'un frame. Une disposition que personne ne référence n'est tout simplement pas dessinée.

Objets et emplacements​

Voir la section Menus de la page GUI pour les champs d'un objet.