1. Si vous venez d'arriver sur le forum et que vous êtes un peu perdus, cliquez ici !
    Rejeter la notice

Command Block La commande /tellraw: du texte à la programmation complexe

Discussion dans 'Tutoriels' créé par Mlakuss, 8 Juin 2014.

  1. Mlakuss

    Mlakuss Rédacteur

    Inscrit:
    7 Sept 2013
    Messages:
    1 695
    Points:
    140
    Sexe:
    Homme

    Si vous manipulez un peu les commandes dans Minecraft, vous connaissez sans doute la commande dont je vais vous parler: le /tellraw. Initialement implantée pour afficher du texte de manière totalement libre, cette commande est devenue de plus en plus riche pour permettre le plus de choses possibles.
    Le tutoriel qui suit est complet et peut être lu par un néophyte.

    I - Généralités
    Tout d'abord, sachez qu'il existe des logiciels permettant de générer des commandes tellraw pré-faites... C'est sympa, mais vous êtes limité par le logiciel et ça ne vous aide clairement pas à comprendre comment ça marche. On va donc commencer pas à pas avec tout d'abord comment faire un texte basique puis comment utiliser le format json pour exploiter au mieux cette commande. Peut-être que vous finirez pas comprendre pourquoi cette commande est aussi importante.

    A. Premiers textes
    Si votre objectif avec cette commande est juste d'afficher un texte blanc, sans mise en forme particulière, la commande peut être simplifiée à l'extrême de la manière suivante:
    Code (cpp):
    /tellraw @a {"text":"Le texte à afficher"}
    Notez que l'on peut choisir chez qui le texte doit s'afficher, chose qui n'est pas possible avec un /say et le tellraw à l'avantage de ne pas mettre de "[@]" avant votre texte.

    B. Format json
    Afficher un texte simple et en choisissant chez qui cela doit apparaître, c'est bien et même mieux que le /w et /say réunis. Mais il est possible d'aller beaucoup plus loin grâce au format json. Ce format à l'avantage d'être très simple à utiliser et une fois qu'on comprend son fonctionnement, on peut facilement faire ce qu'on veut.
    Dans la commande précédente, vous avez vu que l'on a mis "text" pour signaler que c'était du texte que l'on souhaitait afficher, mais il est possible de remplacer ce "text" par d'autres arguments pour afficher des scores ou les noms des joueurs. En plus de cela, on peut ajouter à ce texte des fonctions pour changer la mise en forme ou encore les actions quand on clique sur ce texte.

    II - Mise en forme
    Pas trop perdu ? Il est temps de voir comment changer la couleur et utiliser autre chose que du texte dans les commandes tellraw comme des objectifs ou des noms de joueur.

    A. Couleur et format
    Le texte que vous allez afficher peut être en italique, en gras, souligné, barré, brouillé ou en couleur. Pour cela, il suffit juste de préciser ce que vous voulez entre les accolades de la manière suivante:
    Code (cpp):
    /tellraw @a {"text":"Texte à afficher","color":"blue","underlined":true}
    Le texte sera donc affiché en bleu et sera souligné.
    Voici la liste des couleurs utilisable:
    Et la liste des formats:
    Pour les formats, vous devez à chaque fois mettre "nom du format":true. Par défaut, tout les formats sont sur false et vous n'avez pas besoin d'écrire "nom du format":false sauf dans quelques rares cas.

    Astuce: Vous pouvez faire un passage à la ligne dans du code json en ajoutant un \n.
    Code (cpp):
    /tellraw @a {"text":"Ceci est un texte\nsur deux lignes"}
    B. Insertion de variable (1.8)
    Maintenant, le format json permet aussi d'intégrer un score ou le nom d'un (voire plusieurs) joueur(s).
    Pour intégrer un score, la syntaxe est la suivante:
    Code (cpp):
    /tellraw @a {"score":{"objective":"<objectif>","name":"<joueur>"}}
    Et vous devez remplacer <objectif> par le nom de l'objectif et <joueur> par le nom du joueur dont on doit faire apparaître l'objectif.
    Exemple:
    Code (cpp):
    /tellraw @a {"score":{"objective":"kill","name":"Mlakuss"}}
    La commande affiche alors le nombre de kill du joueur Mlakuss.
    Vous pouvez mettre @p à la place du nom du joueur.
    Si vous voulez afficher l'objectif de chaque joueur, vous devez mettre un joker '*' à la place du nom du joueur.
    Exemple:
    Code (cpp):
    /tellraw @a {"score":{"objective":"kill","name":"*"}}
    Cette commande affiche à chaque joueur le nombre de monstres qu'il a tué.
    Pour intégrer un nom ou plusieurs nom de joueur, l'argument s'appelle selector et fonctionne comme ceci:
    Code (cpp):
    /tellraw @a {"selector":"@p"}
    La commande affiche alors le nom du joueur le plus proche.
    Vous pouvez aussi écrire @a[score_kill_min=5] pour lister les joueurs ayant plus de 5 à l'objectif "kill". Quand plusieurs joueurs sont "touchés", ils sont affiché comme ceci: "joueur 1, joueur 2 et joueur 3"

    C. Une phrase, différents formats
    Stop ! S'il faut remplacer le "text" pour afficher le nom d'un joueur ou un score, on fait comment pour afficher un texte et un score ?
    Tout simplement, il suffit de faire ce qu'on appelle une concaténation. Ce mot barbare désigne simplement le fait de mettre plusieurs chaînes de caractères dans une seule. Et au lieu de faire trois commandes pour afficher un texte, un nom et un objectif, on met tout dans une seule commande.
    La solution la plus simple pour faire cette opération consiste à écrire les différentes accolades et à les mettre dans une liste. Si vous ne comprenez pas, voici un exemple:
    Je veux afficher "M. Bidule, le joueur le plus proche de l'arrivée à un score de X" en supposant que l'objectif soit appelé "score"
    Pour "M. Bidule", la commande donnerait ceci: {"selector":"@p"}
    Pour le texte, on aurait ceci: {"text":" a un score de "}
    Et pour le score: {"score":{"name":"@p","obective":"score"}}
    Et pour tout mettre dans une seule commande, on a alors ceci:
    Code (cpp):
    /tellraw @a [{"selector":"@p"},{"text":" a un score de "},{"score":{"name":"@p","obective":"score"}}]
    Les différents textes sont mis les uns après les autres, séparés par des virgule et le tout est entre crochet pour dire "le tout forme une seule chaîne".
    Si jamais vous voulez appliquer une couleur ou une mise en forme dans la première accolade, les accolades suivantes hériteront de la même mise en forme sauf si vous préciser une nouvelle mise en forme / couleur. Si vous voulez que seule la première partie soit soulignée par exemple, vous devrez mettre "underlined:false" dans toutes les accolades sauf la première où vous devrez mettre "underlined:true"

    III - Arguments complexes
    Un texte qu'on peut afficher avec plusieurs couleurs, dans différents format et en intégrant des noms ou des variables... c'est super chouette, non ? La partie suivante l'est encore plus... mais elle est aussi plus complexe. On va voir comment faire pour rendre un texte vivant, ajouter le possibilité de cliquer dessus ou encore de le traduire. Une toute petite partie sera consacrée au jeu vanilla avec des astuces fonctionnant sur les serveurs, même si vous n'avez pas accès aux commandes.

    A. Les événements
    Il existe trois types d'événement que l'on peut associer à un texte: clickEvent et hoverEvent et insertion (je ne parle pas du dernier, c'est volontaire, les joueurs ont déjà assez de mal à comprendre qu'ils peuvent cliquer sur certains textes alors dire qu'ils peuvent faire shift+clic pour autre chose...). Le premier réalise une action que vous cliquez sur le texte et le second juste lorsque vous passez votre souris sur le texte. Vous ne pouvez mettre qu'un seul clickEvent et qu'un seul hoverEvent par texte.
    Les deux événements s'écrivent de la même manière:
    Code (cpp):
    /tellraw @a {"text":"votre texte","hoverEvent":{"action":"<action>","value":"valeur"},"clickEvent":{"action":"<action>","value":"valeur"}}
    Il vous suffit de remplacer <action> par l'une des actions suivantes et de mettre ce qu'il faut à la palce de valeur.

    1) clickEvent​
    Le clickEvent permet de faire au choix:
    Insérer du texte dans le chat (suggest_command) - Quand vous cliquez sur le texte tout ce qui se trouve dans "valeur" apparaît dans le chat.
    Exécuter une commande (run_command) - Exécute la commande située dans "valeur", ne pas oublier le '/'
    Ouvrir un lien (open_url) - Ouvre le lien situé dans "valeur" dans votre navigateur. Par défaut, un popup vous demande si vous voulez vraiment ouvrir le lien

    2) hoverEvent​
    Le hoverEvent permet de faire au choix:
    Montrer du texte (show_text) - Montre le texte situé dans "valeur"
    Montrer un objet (show_item) - Montre l'objet situé dans "valeur" (ex {"id":"minecraft:stone"})
    Montrer un succès (show_achievement) - Montre le succès situé dans "valeur"
    Montrer une entité (show_entity) - Montre l'entité situé dans "valeur"
    Au final, ça revient plus ou moins au même et je vous conseille de toujours utiliser le "show_text", il est beaucoup plus maniable.
    Si vous souhaitez mettre un retour à la ligne dans votre show_text, il faut mettre \n. Si vous souhaitez mettre de la couleur, il faut écrire \u00A7 suivi du chiffre ou de la lettre correspondant à la couleur souhaitée. Le \u00A7 correspond au code unicode du caractère paragraphe (§).
    Exemple:
    Code (cpp):
    /tellraw @a {"text":"Passe ta souris ici","hoverEvent":{"action":"show_text","value":"Je suis un texte\nsur plusieurs lignes\n\u00A76et en couleur!"}}


    3) Exemples​
    Le plus simple avec ces exemples, c'est de les recopier et de voir ce qu'ils font en jeu.​
    Code (cpp):
    /tellraw @a {"text":"Téléchargez la dernière version de la map","hoverEvent":{"action":"show_text","value":"Cliquez pour être redirigé sur mon site web"},clickEvent:{"action":"open_url","value":"http://www.google.com"}}
    Un exemple de lien pour aller sur un site web.
    Code (cpp):
    tellraw @a [{"text":"Que voulez vous faire ? "},{"color":"blue","text":" [Arrêter la pluie] ","clickEvent":{"action":"run_command","value":"/weather clear 1000000"}},{"color":"gold","text":" [Aller au spawn] ","clickEvent":{"action":"run_command","value":"/tp @p 0 64 0"}}]
    Le genre de commande qui peut être pratique pour réaliser des actions régulières.

    Dès que vous commencez à avoir des commandes longues, pensez à bien séparer/espacer les différents blocs d'accolades voire à écrire les commandes dans un logiciel comme NotePad++ qui vous permettra de voir directement si vous n'avez pas oublié une accolade ou un crochet.

    B. La traduction
    À la base, je faisais ce tutoriel pour cette partie spécifique. Elle s'adresse aux personnes ayant des gros serveurs ou voulant exporter des maps aventure à travers le monde.
    Vous avez sans doute déjà remarqué qu'on pouvait choisir une langue dans les options, non ? Et qu'en fonction de la langue, les textes changeaient. Et bien vous pouvez exploiter ceci avec la commande /tellraw
    Code (cpp):
    /tellraw @a {"translate":"achievement.snipeSkeleton"}
    Là on affiche "Duel de snipers" chez ceux qui ont le jeu en français et "Snipers duel" chez ceux qui ont le jeu en anglais.
    Si vous voulez utilisez les traductions "vanilla", elles sont toutes ici.
    Mais il est aussi possible de créer un pack de ressource avec un fichier .lang pour ajouter vos propres traductions.
    Pour une map "français/anglais", vous allez créer deux fichiers .lang: en_US.lang et fr_FR.lang à mettre au bon endroit dans votre pack de ressource.
    Dans en_US.lang vous mettrez ceci:
    Et dans le fr_FR.lang:
    Une fois dans votre map, vous pourrez alors faire:
    Code (cpp):
    /tellraw @a {"translate":"Pomme"}
    Et les français verront "Pomme" tandis que les anglais verront "Apple"
    Si vous faites
    Code (cpp):
    /tellraw @a {"translate":"Moi pas changer assiette pour fromage"}
    Les anglais verront "My tailor is rich" et les français: "Les français sont les meilleurs". Et pour les autres langues, ils verront "Moi pas changer assiette pour fromage" - C'est pour cela que je recommande de mettre les textes en anglais par défaut.


    C. L'échappement
    Dans le cas où vous vous retrouvez avec une commande complexe qui doit contenir un texte en json dans un texte en json (on rencontre souvent ceci pour les pancartes) ou tout simplement lorsque vous souhaitez utiliser le caractère guillemet dans votre texte, il faut rajouter une barre oblique inversée.
    Exemples:
    Code (cpp):
    /tellraw @a {"text":"Ceci est un mot \"entre guillemets\""}

    /tellraw @a {"text":"Cliquez moi","clickEvent":{"action":"run_command","value":"/setblock ~ ~-1 ~ command_block 0 replace {Command:\"Je suis sous tes pieds\"}"}}
    Pour les échappements multiples, vous devez augmenter le nombre de barre oblique inversée à chaque fois. (\", \\\", \\\\\", \\\\\\\\\")

    D. Astuces
    Tout les textes dans le chat sont en fait des commandes tellraw complexes fonctionnant à partir du "translate" et certaines contiennent même des événements dont on se sert trop peu souvent.
    - Envoyer un message privé
    Pour envoyer un message privé, la commande est /w nomDuJoueur, mais vous pouvez aller encore plus vite en cliquant sur le nom du joueur dans le chat.
    - Insérer le nom d'un joueur (1.8)
    La touche tabulation permet d'auto-compléter le nom d'un joueur quand vous tapez dans le chat, mais il est aussi possible de faire shift+clic sur le nom d'un joueur pour l'insérer dans votre barre d'écriture. Utile pour bannir un joueur qui vient juste de se déconnecter et dont le nom est très long.
    - Informations sur les objets
    Si vous passez votre souris sur le nom d'un objet dans le chat, vous pourrez voir les enchantements de cet objet. La prochaine fois que votre voisin vous tuera avec son "Arc en mousse", vous pourrez vérifier sa puissance réelle plutôt que de faire confiance au nom affiché dans le chat.

    IV - Du json partout !

    Le /tellraw n'est pas la seule commande à utiliser le format json. Il est désormais possible d'utiliser ce merveilleux format pour les titres (/title), les pancartes (via un /blockdata ou un /give) ou encore les livres !
    Je laisse donc cette section avec seulements quelques exemples pour que vous puissiez comparer et voir comment cela marche.
    Code (cpp):
    /give @p sign 1 0 {BlockEntityTag:{Text1:"[{\"text\":\"Hey \",\"bold\":true},{\"selector\":\"@p\"},{\"text\":\" !\"}]",Text2:"{\"text\":\" \"}",Text3:"{\"text\":\" \"}",Text4:"{\"text\":\"Clique moi!\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"tellraw @p {\\\"text\\\":\\\"Essayes de cliquer là\\\",\\\"color\\\":\\\"gold\\\",\\\"hoverEvent\\\":{\\\"action\\\":\\\"show_text\\\",\\\"value\\\":\\\"\u00A75Oseras-tu cliquer ?\\\"},\\\"clickEvent\\\":{\\\"action\\\":\\\"open_url\\\",\\\"value\\\":\\\"http://forum.minecraft-france.fr/threads/le-mashup-de-tuto-by-mlakuss.22916/\\\"}}\"}}"}}
    Les pancartes
    Les pancartes peuvent utiliser le json mais faites très attention. Le bloc pancarte utilise 4 tags différents, un pour chaque ligne, appelés Text1, Text2, Text3 et Text4. Ces tags sont des chaînes de caractères et doivent donc être entre guillemet. Cela siginifie donc que vous devrez mettre un échappement supplémentaire dans tout votre texte (cf. la commande ci-dessus).

    Les livres
    Les livres possèdent une action supplémentaire dans les clickEvent, le "change_page". En valeur, il vous suffit de mettre le numéro d'une page et lorsque vous cliquez dessus, vous arrivez directement à la page indiquée. Pratique pour faire des menus.

    En conclusion
    Le /tellraw est fantastique et permet de presque tout faire (sauf le café) et c'est aussi cette commande qui a marquée l'arrivée du json dans Minecraft. Sachez que presque tout est au format json désormais dans le jeu et avoir un idée de la syntaxe est une excellente chose (la liste des joueurs bannis, le fichier contenant la version du jeu, certains fichiers pour les packs de ressources... tout ça, c'est en json maintenant !). La commande /title utilise aussi du texte au format json et ce que vous avez pu lire là est globalement valable pour le /title.
    Mojang envisage même de supprimer le caractère '§' pour du json mais là, ça risque de prendre du temps. Le '§' a un nombre assez incroyable d'avantages et ça serait se tirer une balle dans le pied que de le retirer maintenant.

    Utilisateurs de NotePad, jetez un oeil à ce plugin.

    Passage de Minecraft 1.8 à Minecraft 1.9: Pourquoi les commandes ne fonctionnent plus ?
    En 1.9, le json lenient n'est plus possible, il faut utiliser du json strict. Tous les textes, y compris les arguments doivent être entre guillemets. Les apostrophes ne fonctionnent plus pour faire de l'échappement. Skyliner a tenté de faire un outil pour convertir les commandes, disponible ici.
     
    • J'aime J'aime x 12
    • Utile Utile x 8
    • Informatif Informatif x 3
    • J'approuve J'approuve x 1
    #1 Mlakuss, 8 Juin 2014
    Dernière édition: 26 Fev 2016
  2. Mlakuss

    Mlakuss Rédacteur

    Inscrit:
    7 Sept 2013
    Messages:
    1 695
    Points:
    140
    Sexe:
    Homme
    • J'approuve J'approuve x 3
    • J'aime J'aime x 1
    #2 Mlakuss, 10 Juin 2014
    Dernière édition: 11 Juin 2014
  3. FoxGabou

    FoxGabou Nouveau

    Inscrit:
    31 Mar 2013
    Messages:
    6
    Points:
    62
    Sexe:
    Homme
    Il y a moyen de sauter des ligne avec les code Json?
     
  4. Mlakuss

    Mlakuss Rédacteur

    Inscrit:
    7 Sept 2013
    Messages:
    1 695
    Points:
    140
    Sexe:
    Homme
    Avec \n, oui. Ça ne marche pas dans le /title.
     
  5. FoxGabou

    FoxGabou Nouveau

    Inscrit:
    31 Mar 2013
    Messages:
    6
    Points:
    62
    Sexe:
    Homme
    Merci bien. Il est cacher cacher
    Très bon tuto ;)
     
    #5 FoxGabou, 26 Août 2014
    Dernière édition: 26 Août 2014
  6. FoxGabou

    FoxGabou Nouveau

    Inscrit:
    31 Mar 2013
    Messages:
    6
    Points:
    62
    Sexe:
    Homme
    Quand un joueur clique sur un: run_command pour ce tp ou autre action op mais qu'il ne l'ai pas cela ne marche pas.
    Mais est-il possible de contourné le problème?
     
  7. Mlakuss

    Mlakuss Rédacteur

    Inscrit:
    7 Sept 2013
    Messages:
    1 695
    Points:
    140
    Sexe:
    Homme
    La commande "/trigger" est accessible aux non-op. Dans le chat, c'est la seule commande que tu peux utiliser pour faire des choses.
     
    • Informatif Informatif x 1
  8. liliandu72

    liliandu72 Nouveau

    Inscrit:
    1 Déc 2012
    Messages:
    1
    Points:
    50
    Salut je j'essaie de faire en sorte que lorsqu'un joueur place un Guardian un loup lui appartenant lui soit summon voici ma commande :
    • /execute @e[type=Guardian] ~ ~ ~ /tellraw @p {"text":"","extra":[{"text":"Clique ici pour summon un loup dompté","italic":"true","clickEvent":{"action":"run_command","value":"/summon Wolf ~ ~ ~ {Owner:"ruzego"}"}}]}
    Puis avec un comparateur je kill le Guardian :
    • /execute @e[type=Wolf] ~ ~ ~ /kill @e[type=Guardian, r=10]
    Mais j'ai un problème avec mon execute au moment du summon et rien ne se passe sais-tu pourquoi et pourrais-tu me montrer s'il est possible d'utiliser le
    • {selector:"@p"}
    Pour définir le propriétaire du Wolf
    Sinon super tuto :)
     
    • Troll Troll x 1
  9. Mlakuss

    Mlakuss Rédacteur

    Inscrit:
    7 Sept 2013
    Messages:
    1 695
    Points:
    140
    Sexe:
    Homme
    La commande ne marche pas car le jeu pense que le guillemet situé juste après Owner: sert à fermer la commande.
    Il faut que tu fasses un échappement: soit tu mets un backslash avant les guillements (Owner:\"ruzego\") soit tu remplaces ces guillemets par des apostrophes.
    C'est un peu comme si tu inversais le sens de deux parenthèses dans une équation.
    Je ne crois pas que le sélecteur fonctionne dans ce cas.
    Ton tellraw est assez moche aussi: pourquoi utiliser un extra ? C'est utile seulement si t'en a deux qui s'imbriquent (pour l'hérédité de la mise en forme). Et tu ne te sers même pas de la racine.
     
    #9 Mlakuss, 1 Sept 2014
    Dernière édition: 2 Sept 2014
  10. Square_Town

    Square_Town Explorateur

    Inscrit:
    25 Sept 2013
    Messages:
    55
    Points:
    51
  11. Rexare

    Rexare Nouveau

    Inscrit:
    24 Nov 2014
    Messages:
    2
    Points:
    10
    Sexe:
    Homme
    Bonjour,

    Tout d'abord très bon tuto oui, même si je l'ai lu a la recherche d'une réponse que je n'ai pas trouvé :/

    Je recherché en venant ici, si cela été possible de rajouté une value tel que "maxUses ou "uses" a une commande "tellraw" ?
    Car, dans un contexte ou la commande "/tellraw" est, et reste dans le chat sa gâche pas mal de potentiel du fait qu'elle peut être "spam"?

    Je prend exemple d'une application possible:
    {action:run_command,value:"/tp @p 0 0 0"}

    Dans un contenue tout simplement multi ou map aventure (pourquoi pas..), le joueurs pourra utilisée ce qui apparaît dans son chat de façon indéfinie, ce qui gâche pas mal d'application.

    Si ont veux faire un "cadeau" avec la commande par exemple, c'est pour donner un nombre voulu d'utilisation et non indéterminé..

    Vous auriez une solution a cela ou une astuce pour corrigé ce problème?
    J'en est pas trouvé, surement car cela n'a pas été pensé comme sa et qu'il n'y a pas de solution..

    Cordialement.
     
  12. Mlakuss

    Mlakuss Rédacteur

    Inscrit:
    7 Sept 2013
    Messages:
    1 695
    Points:
    140
    Sexe:
    Homme
    Oui. Déjà, seules les commandes accessibles aux non-opérateur doivent être utilisées pour que tout le monde puisse y avoir accès.
    La seule commande que l'on contrôle à 100%, c'est le /trigger.
    Il suffit alors de faire un enable à chaque fois que tu veux autoriser quelqu'un à cliquer dans le chat.

    Edit:
    Avec des commandes, c'est toujours mieux.
    Code (cpp):
    /scoreboard objectives add question trigger
    /scoreboard players enable @a question
    /tellraw @a [{text:"Aimez-vous le chocolat ? "},{text:"oui",clickEvent:{action:"run_command",value:"/trigger question set 1"}},{text:" | "},{text:"non",clickEvent:{action:"run_command",value:"/trigger question set 2"}}]
    /tellraw @a [{selector:"@a[score_question_min=2]"},{text:" n'aime(nt) pas le chocolat."}]
    /scoreboard players reset * question
    Tip: Mettre "/execute @r[score_question_min=2] ~ ~ ~" avant le dernier tellraw permet d'être sûr que le tellraw ne va pas afficher un texte blanc avant "n'aime(nt) pas le chocolat".
     
    • J'aime J'aime x 1
    #12 Mlakuss, 25 Nov 2014
    Dernière édition: 25 Nov 2014
  13. Rexare

    Rexare Nouveau

    Inscrit:
    24 Nov 2014
    Messages:
    2
    Points:
    10
    Sexe:
    Homme
    Bonjour de nouveau,

    J'avais déjà pensé a cela mais l'utilisation des "scoreboard" me gênais ^^, mais merci de tout de même pour cette réponse, je me permet de vous mp pour une autre question que je ne souhaite pas demander sur ce topic.

    Cordialement.
     
  14. Oromis

    Oromis Enter the World

    Inscrit:
    8 Sept 2012
    Messages:
    25
    Points:
    95
    Sexe:
    Homme
    Salut, merci pour ce tutoriel qui ma bien aidé mais j'ai tout de même une question :
    je voudrais savoir si le joueur à en main un livre avec écrit à l'intérieur "Salut [Son pseudo]" écrit par ce dernier.
    Voici trois commandes que j'ai essayée :
    - /clear @a writable_book 0 0 {pages:["Salut"],{selector:\"@p\"}
    - /clear @a writable_book 0 0 {pages:[{text:"Salut"},{selector:\"@p\"]}
    - /clear @a writable_book 0 0 {pages:["{\"text\":\"\",\"extra\":[{\"text\":\"Salut \"},{\"selector\":\"@p\"}]}"}}

    Mais aucune d'elles ne fonctionnent !!! Si quelqu'un peut me corrigé. ^^
     
  15. Mlakuss

    Mlakuss Rédacteur

    Inscrit:
    7 Sept 2013
    Messages:
    1 695
    Points:
    140
    Sexe:
    Homme
    Ok.
    Dans "Pages", tu dois mettre une liste de chaîne de caractères. Ça doit don ressembler à quelque chose comme ceci:
    Pages:["Page 1","Page 2"]
    La première commande est donc archifausse.
    La deuxième commande marcherait si tu avais Salut sur la page 1 et le sélecteur sur la page 2.
    Mais les livres non-signés ne peuvent pas contenir de json et il est impossible de détecter le tag que tu veux dans un livre signé puisque, dès qu'il est ouvert pour la première fois, tout les sélecteurs/scores sont remplacés par leur valeurs (d'où le tag "resolved").
     

Partager cette page