Tuto : Comment créer un texte dans les airs avec des pages se changeant en un clic ?

Que pensez-vous de ce système et de mon tutoriel ?

  • Excellent !!!

  • Super ;).

  • Bien.

  • Pas mal...

  • Nul !


Les résultats ne sont visibles qu'après le vote.

Kococraft

Architecte en herbe
25 Août 2014
37
9
69
28
01440 Viriat
- == Créer un texte avec des pages dans les airs. == -

Introduction :


Bonjour à tous, je vais vous proposer un tutoriel sur un texte dans les airs sur lequel on pourra changer de page avec un clic droit, un clic gauche ou un clic sur un bouton. Et à l'aide d'un fichier mcfunction on pourra y mettre de la couleur, des symboles, en gras, souligné... Sur cette présentation je vais vous l'expliquer avec un clic gauche.

Observation :

Tout d'abord je vais vous laisser lire un exemple de mcfunction permettant de réaliser ce tutoriel :

Code:
scoreboard objectives add page dummy
scoreboard objectives add absent_page dummy
scoreboard players set @a absent_page 1

execute @e[type=villager,x=-126,y=33,z=-193,r=1,tag=text] ~ ~ ~ /scoreboard players set @a absent_page 0
scoreboard players operation @a page += @a[x=-126,y=33,z=-193,r=5,score_absent_page_min=1] absent_page
scoreboard players set @a[score_page_min=3] page 0

execute @a[score_absent_page_min=1] ~ ~ ~ summon villager -126 33 -193 {CustomName:" ",Attributes:[{Name:generic.maxHealth,Base:1}],Health:1.0f,ActiveEffects:[{Id:14,Amplifier:0,Duration:19999980,ShowParticles:0b}],NoAI:1,Silent:1,Tags:["text"]}


execute @a[score_page_min=0,score_page=0] ~ ~ ~ /entitydata @e[tag=holo1_page] {CustomNameVisible:1,CustomName:"§dPage §r: §b1§r/§e3§r"}
execute @a[score_page_min=1,score_page=1] ~ ~ ~ /entitydata @e[tag=holo1_page] {CustomNameVisible:1,CustomName:"§dPage §r: §b2§r/§e3§r"}
execute @a[score_page_min=2,score_page=2] ~ ~ ~ /entitydata @e[tag=holo1_page] {CustomNameVisible:1,CustomName:"§dPage §r: §b3§r/§e3§r"}
entitydata @e[tag=holo2_page] {CustomNameVisible:1,CustomName:"§e§l↓ Change de page avec clic gauche ↓§r"}

execute @a[score_page_min=0,score_page=0] ~ ~ ~ /entitydata @e[tag=holo2_page] {CustomNameVisible:1,CustomName:"se change par un §r§4§lclic§r gauche uniquement !"}
execute @a[score_page_min=1,score_page=1] ~ ~ ~ /entitydata @e[tag=holo2_page] {CustomNameVisible:1,CustomName:"votre map."}
execute @a[score_page_min=2,score_page=2] ~ ~ ~ /entitydata @e[tag=holo2_page] {CustomNameVisible:1,CustomName:"sur ce texte cliquable."}

execute @a[score_page_min=0,score_page=0] ~ ~ ~ /entitydata @e[tag=holo3_page] {CustomNameVisible:1,CustomName:"Aujourd'hui nous allons voir un texte qui"}
execute @a[score_page_min=1,score_page=1] ~ ~ ~ /entitydata @e[tag=holo3_page] {CustomNameVisible:1,CustomName:"plusieurs texte sans envahir"}
execute @a[score_page_min=2,score_page=2] ~ ~ ~ /entitydata @e[tag=holo3_page] {CustomNameVisible:1,CustomName:"metttre vos règles, vos histoires"}

execute @a[score_page_min=0,score_page=0] ~ ~ ~ /entitydata @e[tag=holo4_page] {CustomNameVisible:1,CustomName:"Bonjour à vous tous !"}
execute @a[score_page_min=1,score_page=1] ~ ~ ~ /entitydata @e[tag=holo4_page] {CustomNameVisible:1,CustomName:"Ceci vous permettra de mettre"}
execute @a[score_page_min=2,score_page=2] ~ ~ ~ /entitydata @e[tag=holo4_page] {CustomNameVisible:1,CustomName:"Vous pourrez du coup"}

Mécanisme :

Dans un premier temps, comment créer ce système ? Alors ?
Voici les commandes qui pourront nous aider :

  • scoreboard
  • summon
  • execute
  • entitydata
Tout d'abord, il faudra mettre des entités appropriés pour afficher le texte, soit : les armor_stand
Puis l'action du clic gauche est généralement une action pour attaquer, donc il faudra : une entité avec une seul vie, ne libérant aucun butin et assez gros pour pouvoir avoir de la zone a touché, soit le villageois, et un moyen de détecter se villageois par commande.
Et quand l'entité meurt, il faut pouvoir changer de page et du coup les noms des armor_stand.

Préparation du terrain :

Tout d'abord, choisissez un bloc et enregistrer les coordonnées au-dessus.
Puis vous allez invoquer le villageois et les armor_stand :
Code:
summon villager x y z {CustomName:" ",Attributes:[{Name:generic.maxHealth,Base:1}],Health:1.0f,ActiveEffects:[{Id:14,Amplifier:0,Duration:19999980,ShowParticles:0b}],NoAI:1,Silent:1,Tags:["text"]}
summon armor_stand x y+1 z {Invulnerable:1,Invisible:1,NoGravity:1,DisabledSlots:2039583,CustomName:"Dernière ligne",CustomNameVisible:1,Tags:["holo1"]}
summon armor_stand x y+1.25 z {Invulnerable:1,Invisible:1,NoGravity:1,DisabledSlots:2039583,CustomName:"Avant-dernière ligne",CustomNameVisible:1,Tags:["holo2"]}
summon armor_stand x y+1.5 z {Invulnerable:1,Invisible:1,NoGravity:1,DisabledSlots:2039583,CustomName:"Deuxième ligne",CustomNameVisible:1,Tags:["holo3"]}
summon armor_stand x y+1.75 z {Invulnerable:1,Invisible:1,NoGravity:1,DisabledSlots:2039583,CustomName:"Première ligne",CustomNameVisible:1,Tags:["holo4"]}

Nous en sommes à la :
2017-11-01_11.20.12.png


Les scoreboard :

Maintenant dans un fichier.mcfunction nous allons créer en premiers nos scoreboards :
  • Le premier pour le changement de page : scoreboard objectives add page dummy
  • Le deuxième pour la détection du villageois : scoreboard objectives add absent_page dummy
La détection :

Si l'entité est absente alors le score absent_page = 1 = oui, il est absent.
Et si au contraire il est là alors score absent_page = 0 = non, il n'est pas absent

- scoreboard players set @a absent_page 1
- execute @e[x=x,y=y,z=z,r=2,tag=text,type=villager] ~ ~ ~ /scoreboard players set @a absent_page 0

Les pages :

Maintenant qu'on peut savoir si l'entité est présents ou non alors, lorsqu'elle est absente il faudra, dans l'ordre :
  • Changer de page.
  • Remettre l'entité morte.
  • Remettre à la première page lorsque vous arriver à la dernière page.
Donc :

Code:
scoreboard players operation @a page += @a[score_absent_page_min=1] absent_page
execute @a[score_absent_page_min=1] ~ ~ ~ summon villager -126 33 -193 {CustomName:" ",Attributes:[{Name:generic.maxHealth,Base:1}],Health:1.0f,ActiveEffects:[{Id:14,Amplifier:0,Duration:19999980,ShowParticles:0b}],NoAI:1,Silent:1,Tags:["text"]}
scoreboard players set @a[score_page_min=3] page 0

Si nous sommes à page=0 et que l'entité est absente (absent_page=1) alors on effectue une opération :

[Joueurs Cibles] [Score Cible] <opération> [Joueur] [Score]
@a page += @a[scoreabsent_page_min=1] absent_page
donc : page = page + absent_page
page = 0 + 1
page = 1

Ici nous avons 3 pages au total (score_page_min=0 -> score_page_max=3) et lorsqu'on arrive à page = 3 on revient à 0, page = 3 (ou page n°4) est inexistant.

Les textes :

Au final, on va modifier les noms des armor_stand, représentant le texte, en fonction du score page, à l'aide de la commande entitydata :

Code:
execute @a[score_page_min=0,score_page=0] ~ ~ ~ entitydata @e[tag=holo4] {CustomName:"Bonjour et bienvenue"}
execute @a[score_page_min=0,score_page=0] ~ ~ ~ entitydata @e[tag=holo3] {CustomName:"sur ce tutoriel."}
execute @a[score_page_min=0,score_page=0] ~ ~ ~ entitydata @e[tag=holo2] {CustomName:"Page 1/3"}
entitydata @e[tag=holo1] {CustomName:"Faites clic gauche en-dessous pour passer de page."}

Et ainsi de suite pour chaque page.
holo1 n'a pas besoin d'être modifié en fonction du score page car c'est une indication qu'on va laisser présente quelque soit la page.

On obtiendra ceci :

Bonjour et bienvenue
sur ce tutoriel.
Page 1/3
Faites clic gauche en-dessous pour passer de page.

Je rappel que dans les fichiers mcfunction nous pouvons mettre le symbole "§" afin de changer l'apparence du texte :
exemple : §6§lBonjour = Bonjour

En résumé :

VALEUR :
page = 0
absent_page = 0 (entité présente)

TEXTE :
<holo4> : Name=Bonjour et bienvenue
<holo3> : Name=sur ce tutoriel
<holo2> : Name=Page 1/3
<holo1> : Name=Faites clic gauche en-dessous pour passer de page.

SI le joueur tue l'entité ALORS :
absent_page = 1 (entité absente)

SI absent_page = 1 ALORS :
page = page + absent_page
absent_page = 0 (invoquer la nouvelle entité).

SI page = 0 ALORS :
<holo4> : Name=Bonjour et bienvenue
<holo3> : Name=sur ce tutoriel
<holo2> : Name=Page 1/3
<holo1> : Name=Faites clic gauche en-dessous pour passer de page.

SI page = 1 ALORS :
<holo4> : Name=Ce tutoriel vous permettra de
<holo3> : Name=compresser plusieurs texte en un seul endroit
<holo2> : Name=Page 2/3
<holo1> : Name=Faites clic gauche en-dessous pour passer de page.

SI page = 2 ALORS :
...

SI page = 3 ALORS :
page = 0

NOUVELLE VALEUR (quand le joueur tue l'entité) :
page = 1
absent_page = 0

NOUVEAU TEXTE :
<holo4> : Name=Ce tutoriel vous permettra de
<holo3> : Name=compresser plusieurs texte en un seul endroit
<holo2> : Name=Page 2/3
<holo1> : Name=Faites clic gauche en-dessous pour passer de page.

On vient de le voir, en quelque sorte, sous la forme d'algorithme ^^.

Vous pouvez également visionner le tutoriel ici.

J'espère que le système et qu'ainsi que mon tutoriel vous aura plu. :)
 
Dernière édition:
  • J'aime
Reactions: simon511000