Aller au contenu principal

GUI

L'extension GUI est le système de menus central de Typewriter. Elle fournit 9 moteurs de disposition configurables (plus des composants réservés à l'API), 23 types d'inventaire, des interactions clavier/souris, un stockage d'items persistant et un formatage MiniMessage complet. Presque toutes les autres extensions en dépendent pour leurs menus.

Bientôt disponible : un éditeur web WYSIWYG avec glisser-déposer, aperçu en direct fidèle au rendu en jeu, disposition automatique en flexbox CSS, états de menu, tilemaps et prise en charge multi-fournisseurs de resource packs.

Fonctionnalités

  • 9 moteurs de disposition — Simple, Composite, Scrollable, Paginated, Frame, Flex, Storage, Book, Merchant — plus Iterator, Slider et ReactiveSlot via l'API Kotlin.
    • 23 types d'inventaire — Coffre, fourneau, enclume, table d'enchantement, forge, marchand, livre, et plus.
    • Défilement et navigation — Dispositions défilantes avec boutons haut/bas/gauche/droite configurables. Les boutons de défilement sont ancrés au viewport. Multi-frame avec zones indépendantes.
    • Stockage persistant — Stockage d'items soutenu par des artefacts — par joueur ou par groupe. Mode accumulation pour le suivi de progression. Actions de clic configurables.
    • Placeholders de stockage — Placeholders dynamiques {stored_name}, {stored_amount}, {stored_max} dans les noms et descriptions des emplacements.
    • MiniMessage — Prise en charge complète de MiniMessage pour les titres, noms d'items et descriptions. Couleurs, dégradés, événements hover/click.
    • Interactions de clic — LEFT, RIGHT, SHIFT, DOUBLE_CLICK, DROP, SWAP_OFFHAND, NUMBER_KEY, SCROLL — par emplacement ou global.
    • Animations — Transitions d'emplacement fluides avec accélération configurable (linéaire, ease-in, ease-out).
    • Dialogues de saisie — Invites de saisie de texte pendant l'interaction avec le menu, via l'API de dialogue de Paper.

Architecture

Bibliothèque d'entrées

Actions

  • Open GUI — Le point d'entrée principal. Définit une GUI d'inventaire avec titre, disposition, items, interactions et stockage.

Configuration

  • GUI Settings — Valeurs par défaut globales : configuration audio, mappage du comportement de clic sur le stockage, nœuds d'arbre de compétences.

Guides

  • Introduction — Comment le système fonctionne, le vocabulaire et votre premier menu pas à pas.
    • Types de disposition — Chaque moteur de disposition avec des exemples complets et quand l'utiliser.
    • Commandes et interactions — Types de clic, actions internes gui:, temps de recharge, dialogues de saisie.
    • Cookbook — Recettes prêtes à adapter : liste défilante, boutique, confirmation, dépôt par quota.

Artefacts

  • GUI Storage — Artefact de stockage persistant. Persistance d'items par joueur ou par groupe, avec prise en charge de l'accumulation.

Démarrage rapide

  • 1. Créer une entrée Open GUI — Créez une entrée d'action Open GUI. Cette seule entrée définit tout d'un menu : Configuration de base : - title — Titre d'inventaire (MiniMessage + PlaceholderAPI) - guiType — Type d'inventaire : CUSTOM, CHEST, MERCHANT, BOOK, ANVIL, etc. (23 types) - size — Pour le type CUSTOM : SIZE_9 à SIZE_54 Disposition (choisissez-en une) : - simple — Coordonnées x,y explicites, avec count/direction/gap/repeatY pour les motifs en grille - scrollable — Viewport avec boutons de défilement, la disposition interne défile - frame — Plusieurs zones indépendantes, chacune avec sa propre disposition enfant - paginated — Pages discrètes avec navigation suivant/précédent - composite — Enfants empilés dans l'ordre Z - book — Pages MiniMessage sous forme de livre écrit - merchant — Échanges de villageois avec items personnalisés Items et interactions : - Définissez les emplacements avec item, displayName, lore — utilisez x/y/count/direction pour le positionnement - Attachez interactionList par emplacement : LEFT, RIGHT, SHIFT_LEFT, SHIFT_RIGHT, DOUBLE_CLICK, DROP, etc. - Attachez triggers pour déclencher des actions Typewriter au clic Stockage (facultatif) : - Ajoutez storage à n'importe quel emplacement pour persister les items - Utilisez les placeholders {stored_name}, {stored_amount}, {stored_max} → Référence de l'entrée Open GUI

  • 2. Lier depuis d'autres extensions — Une fois votre entrée GUI créée, référencez-la depuis toute autre extension nécessitant un menu : - QuestCodexquest_codex_settings utilise la disposition GUI pour parcourir les quêtes - Shops — Les menus de boutique utilisent des dispositions GUI pour l'affichage des items - BattlePass, Crates, Pets, Party, Profiles, Cosmetics, Dungeon, BTCSky... — Toutes utilisent l'extension GUI pour leurs menus Il suffit de référencer l'ID de l'entrée d'action Open GUI dans la config de menu de l'autre extension. > L'extension GUI est une dépendance requise pour plus de 20 autres extensions.

Types de disposition

SimpleLayout

Items placés à des coordonnées (x, y) explicites sur une grille virtuelle. Idéal pour les menus statiques, les décorations et les arrière-plans. Prend en charge count, direction, gap et repeatY pour les motifs en grille.

ScrollableLayout

Enveloppe une disposition enfant avec prise en charge du défilement. Les boutons de défilement personnalisés (UP/DOWN/LEFT/RIGHT) sont ancrés au viewport — ils ne bougent pas lorsque le contenu défile. Idéal pour les longues listes d'items.

FrameLayout

Divise l'écran en zones indépendantes. Chaque frame a sa propre position, taille et disposition enfant (généralement défilante). Idéal pour les tableaux de bord, les barres latérales et les panneaux multi-volets. Chaque zone défilante doit avoir un ID unique pour une isolation correcte du défilement.

PaginatedLayout

Pages discrètes avec boutons de navigation suivant/précédent. Idéal pour les menus multi-pages et les grandes collections.

CompositeLayout

Superpose plusieurs dispositions enfants dans l'ordre Z. Idéal pour les superpositions et les interfaces complexes.

BookLayout

Restitue des pages MiniMessage sous forme de livre écrit. Idéal pour le lore, les guides et les dialogues.

MerchantLayout

Définit des échanges de villageois avec des items d'entrée et un résultat. Idéal pour les boutiques et le commerce.

Référence des interactions

Toutes les interactions prises en charge
InteractionDéclencheur
LEFTBouton gauche de la souris
RIGHTBouton droit de la souris
SHIFT_LEFTShift + clic gauche
SHIFT_RIGHTShift + clic droit
MIDDLEBouton central de la souris
DOUBLE_CLICKDouble clic
NUMBER_KEY_1..9Touches de barre d'action 1-9
DROPTouche Q
DROP_ALLCtrl+Q
SWAP_OFFHANDTouche F

Usage : interactionList par emplacement pour les actions de clic, globalInteractions pour les raccourcis à l'échelle du menu.

Référence des types de GUI

Les 23 types d'inventaire pris en charge
TypeDescription
CUSTOMCoffre configurable (1-6 lignes)
CHESTCoffre standard
FURNACEFourneau
BLAST_FURNACEHaut fourneau
SMOKERFumoir
BEACONBalise
ENCHANTING_TABLETable d'enchantement
GRINDSTONERéparation à la meule
CARTOGRAPHY_TABLEModification de carte
ANVILRéparation/renommage à l'enclume
LOOMMétier à tisser (motifs de bannière)
SMITHING_TABLETable de forge
STONECUTTERTailleur de pierre
CRAFTING_TABLEÉtabli
BREWING_STANDAlambic
HOPPEREntonnoir
DROPPERDropper
DISPENSERDistributeur
BARRELTonneau
SHULKER_BOXBoîte de Shulker
ENDER_CHESTCoffre de l'Ender
MERCHANTCommerce marchand
BOOKLivre écrit

Stockage et accumulation

  • Stockage standard : cliquez pour déposer/retirer des items. Tous les comportements de clic sont configurables globalement via GUI Settings.
  • Placeholders de stockage : {stored_name}, {stored_amount}, {stored_max} se résolvent dynamiquement dans le displayName et le lore de l'emplacement
  • forceStorage: true (par défaut) : les items non empilables (épées, outils, armures) peuvent être stockés
  • Mode accumulation : définissez requiredItem + requiredAmount — les items sont consommés, les déclencheurs onReachRequired se déclenchent au seuil
  • Stockage de groupe : partagez le stockage entre joueurs (par ex. équipe d'île) via l'entrée group
  • Emplacements temporaires : items retirés à la fermeture (temporary = true)
  • Déclencheurs onFill / onEmpty : déclenchent des actions Typewriter lors des changements d'état d'emplacement

Consultez GUI Storage Artifact pour tous les détails.

Placeholders

Placeholders de stockage

Résolus dans le displayName et le lore d'un emplacement de stockage :

PlaceholderDescription
{stored_name}Nom d'affichage de l'item stocké
{stored_amount}Nombre actuel d'items dans l'emplacement
{stored_max}Capacité maximale de l'emplacement

Placeholders du moteur

Les titres de GUI et les descriptions d'items prennent aussi en charge les placeholders du moteur Typewriter et PlaceholderAPI via les champs @Placeholder.

Commandes

Cette extension ne fournit pas de commandes autonomes. Toutes les interactions de menu passent par les entrées Typewriter.

Permissions

Aucune permission personnalisée. L'accès à la GUI est contrôlé par les entrées qui référencent les actions Open GUI.

Dépendances

ExtensionRequisUtilisation
(aucune)-Il s'agit d'une extension fondamentale. Plus de 20 autres extensions en dépendent.
PlaceholderAPIOptionnelPour les champs @Placeholder dans les titres, noms et descriptions.