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.
- Code source — Voir les sources sur GitHub.
- Télécharger les releases — Obtenir les derniers JAR.
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 typeCUSTOM:SIZE_9àSIZE_54Disposition (choisissez-en une) : -simple— Coordonnées x,y explicites, aveccount/direction/gap/repeatYpour 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 avecitem,displayName,lore— utilisezx/y/count/directionpour le positionnement - AttachezinteractionListpar emplacement :LEFT,RIGHT,SHIFT_LEFT,SHIFT_RIGHT,DOUBLE_CLICK,DROP, etc. - Attacheztriggerspour déclencher des actions Typewriter au clic Stockage (facultatif) : - Ajoutezstorageà 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 : - QuestCodex —
quest_codex_settingsutilise 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
| Interaction | Déclencheur |
|---|---|
LEFT | Bouton gauche de la souris |
RIGHT | Bouton droit de la souris |
SHIFT_LEFT | Shift + clic gauche |
SHIFT_RIGHT | Shift + clic droit |
MIDDLE | Bouton central de la souris |
DOUBLE_CLICK | Double clic |
NUMBER_KEY_1..9 | Touches de barre d'action 1-9 |
DROP | Touche Q |
DROP_ALL | Ctrl+Q |
SWAP_OFFHAND | Touche 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
| Type | Description |
|---|---|
CUSTOM | Coffre configurable (1-6 lignes) |
CHEST | Coffre standard |
FURNACE | Fourneau |
BLAST_FURNACE | Haut fourneau |
SMOKER | Fumoir |
BEACON | Balise |
ENCHANTING_TABLE | Table d'enchantement |
GRINDSTONE | Réparation à la meule |
CARTOGRAPHY_TABLE | Modification de carte |
ANVIL | Réparation/renommage à l'enclume |
LOOM | Métier à tisser (motifs de bannière) |
SMITHING_TABLE | Table de forge |
STONECUTTER | Tailleur de pierre |
CRAFTING_TABLE | Établi |
BREWING_STAND | Alambic |
HOPPER | Entonnoir |
DROPPER | Dropper |
DISPENSER | Distributeur |
BARREL | Tonneau |
SHULKER_BOX | Boîte de Shulker |
ENDER_CHEST | Coffre de l'Ender |
MERCHANT | Commerce marchand |
BOOK | Livre é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 ledisplayNameet lelorede 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éclencheursonReachRequiredse 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 :
| Placeholder | Description |
|---|---|
{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
| Extension | Requis | Utilisation |
|---|---|---|
| (aucune) | - | Il s'agit d'une extension fondamentale. Plus de 20 autres extensions en dépendent. |
| PlaceholderAPI | Optionnel | Pour les champs @Placeholder dans les titres, noms et descriptions. |