Dialog Menu
Présentation
Dialog Menu ouvre les écrans de dialogue natifs de Minecraft 1.21.6 et versions ultérieures, via l'API de dialogues de Paper. Un dialogue est une fenêtre au centre de l'écran avec un titre, un corps de texte, un objet facultatif, des boutons et des champs de saisie. Il ne nécessite ni resource pack ni inventaire personnalisé.
Vous construisez l'ensemble du dialogue dans une seule entrée d'action, Paper Dialog. Chaque bouton exécute soit une commande en tant que joueur, soit déclenche d'autres entrées TypeWriter. Les champs de saisie (texte, interrupteur, choix, curseur) sont lus lorsque le joueur valide, et leurs valeurs sont insérées dans la commande avec $(key).
Fonctionnalités
- Dialogues natifs — la fenêtre de dialogue vanilla, ouverte avec l'API de dialogues de Paper.
- Trois dispositions — une grille de boutons, une confirmation oui/non, ou un avis à un seul bouton.
- Boutons d'action — exécutent une commande en tant que joueur, éventuellement en tant qu'OP.
- Boutons de trigger — déclenchent directement des entrées TypeWriter, sans commande.
- Saisies — champ de texte (y compris multiligne), interrupteur, choix multiple et curseur numérique.
- Valeurs de saisie dans les commandes — utilisez
$(key)dans une commande pour insérer ce que le joueur a saisi ou choisi. - Texte dynamique — les titres, messages et libellés acceptent MiniMessage et les placeholders PlaceholderAPI.
- Objet dans le corps — affichez un objet dans le corps du dialogue.
- Comportement après action — fermer le dialogue, le garder ouvert, ou attendre une réponse du serveur.
- Placeholder — vérifiez si un joueur a actuellement un dialogue ouvert.
Installation
- Utilisez Paper (ou un fork comme Folia) en version 1.21.6 ou ultérieure : les versions plus anciennes n'ont pas l'API de dialogues.
- Vérifiez que l'extension Basic de TypeWriter est installée (voir la documentation de TypeWriter).
- Facultatif : installez PlaceholderAPI pour utiliser des placeholders dans les textes.
- Placez le JAR de Dialog Menu dans
plugins/Typewriter/extensions/et redémarrez le serveur.
Premiers pas
Affichez une fenêtre de confirmation avant de téléporter un joueur :
- Dans le panneau web de TypeWriter, ouvrez une page de séquence et ajoutez une entrée Paper Dialog.
- Définissez
displayNamesur<gold>Travel to the spawn?etmessagesur le texte du corps du dialogue. - Définissez
dialogTypesurCONFIRMATION. - Dans
buttons, ajoutez un bouton d'action. Définissez sonlabelsurYeset sacommandsurspawn. - Dans
exitButton, définissezlabelsurNo. Laissezcommandvide : le bouton ne fait alors que fermer le dialogue. - Reliez l'entrée à ce qui doit l'ouvrir : une interaction avec un PNJ, une commande ou une option de dialogue.
- Publiez et déclenchez l'entrée en jeu.
Pour recueillir une valeur, ajoutez une saisie de texte à buttons : définissez key sur name, buttonLabel sur Send et command sur rename $(name). Lorsque le joueur clique sur le bouton, le texte est inséré à la place de $(name).
asOp exécute la commande avec des droits d'opérateur temporaires. Ne l'utilisez que pour des commandes que vous maîtrisez entièrement, et n'insérez jamais de texte libre d'un joueur dans une telle commande.
Fonctionnement
Lorsque l'action s'exécute, le dialogue est construit à partir de l'entrée et affiché au joueur à l'origine du déclenchement. Un bouton est à usage unique : après un clic, son action s'exécute une seule fois pour ce dialogue. Le dialogue est fermé ou conservé ouvert selon afterAction.
Tous les champs de texte prennent en charge MiniMessage et les placeholders. displayName retombe sur le nom de l'entrée lorsqu'il est vide.
Menus
La disposition du dialogue dépend de dialogType :
| Type | Disposition |
|---|---|
MULTI_ACTION | Une grille de boutons sur columns colonnes, plus le bouton de sortie lorsque showExitButton est activé. |
CONFIRMATION | La fenêtre oui/non vanilla : le premier bouton confirme, le bouton de sortie refuse. Le bouton de sortie est toujours créé dans ce mode. |
NOTICE | Une fenêtre à un seul bouton utilisant le premier bouton, ou le bouton de sortie s'il n'y en a pas. |
Les types de boutons que vous pouvez ajouter à buttons :
| Type | Champs | Macro de commande |
|---|---|---|
| Bouton d'action | label, command, asOp | aucune |
| Bouton de trigger | label, triggers | aucune |
| Saisie de texte | label, key (par défaut input), buttonLabel, command, asOp, width, labelVisible, initial, maxLength, maxLines, height | $(input) |
| Interrupteur booléen | label, key (par défaut boolean), initial, onTrue, onFalse, buttonLabel, command, asOp | $(boolean), remplacé par onTrue ou onFalse |
| Choix multiple | label, key (par défaut choice), options, buttonLabel, command, asOp | $(choice) |
| Intervalle numérique | label, key (par défaut value), start, end, initial, step, buttonLabel, command, asOp | $(value), arrondi à un nombre entier |
Les champs de saisie sont affichés au-dessus des boutons. Chaque bouton de saisie ajoute aussi son propre bouton de validation, avec buttonLabel comme texte ; une commande peut utiliser le $(key) de n'importe quelle saisie du même dialogue. Le bouton de sortie se configure séparément dans exitButton.
Pour un choix multiple, écrivez options sous forme de liste séparée par des virgules, et ajoutez * après l'option qui doit être sélectionnée au départ, par exemple Easy,Normal*,Hard.
Placeholders
Placeholders PlaceholderAPI, fournis par l'expansion typewriter.
| Placeholder | Renvoie |
|---|---|
%typewriter_inmenudialog% | 1 si le joueur a un dialogue de cette extension ouvert, sinon 0. |
%typewriter_inmenudialog_<name>% | 1 si le dialogue ouvert est l'entrée Paper Dialog portant ce nom d'entrée. %typewriter_inmenudialog:<name>% fonctionne aussi. |
L'état est effacé lorsqu'un bouton est cliqué, lorsque le joueur quitte et lorsque TypeWriter est rechargé. Il n'est pas effacé lorsque le joueur ferme le dialogue avec la touche Échap.
Entrées
1 entrées, générées depuis la source de l'extension.
Actions1
- Paper DialogDisplay a customizable dialog
Dépannage
Rien ne s'affiche lorsque l'action s'exécute. Les dialogues nécessitent Paper 1.21.6 ou ultérieur. Sur un serveur plus ancien, l'API de dialogues n'existe pas et l'action échoue. Vérifiez aussi que les criteria de l'entrée sont satisfaits.
Un bouton ne fait rien. Les boutons de commande dont la command est vide ne font que fermer le dialogue. Sinon, la commande est exécutée en tant que joueur : si le joueur n'en a pas la permission, elle échoue silencieusement pour lui, et l'échec est consigné sous la forme Dialog command '…' failed. Testez d'abord la commande dans le chat.
$(key) apparaît dans la commande ou est remplacé par rien. La key de la saisie et la macro doivent correspondre exactement. Une macro qui ne correspond à aucune saisie est remplacée par un texte vide. Pour les interrupteurs, la macro donne la valeur onTrue ou onFalse, pas true ou false.
Les boutons cessent de fonctionner après le premier clic. Chaque bouton est à usage unique par dialogue ouvert. Avec afterAction défini sur NONE ou WAIT_FOR_RESPONSE, la fenêtre peut rester à l'écran, mais ses boutons ne réagissent plus. Redéclenchez l'action pour ouvrir un nouveau dialogue.
%typewriter_inmenudialog% reste à 1. Le joueur a fermé le dialogue avec Échap, ce qui ne réinitialise pas l'état. Il se réinitialise au prochain clic sur un bouton, lorsque le joueur quitte le serveur ou lors d'un rechargement.
Extensions associées
- Companion — ouvrez un dialogue lorsque le joueur clique sur son compagnon.