S’il y a bien un commande qui peut sembler simple d’usage, c’est le /summon. Mais quand on cherche à faire des créatures un peu poussées, on se rend vite compte qu’il faut connaître énormément de choses. Heureusement, voici un tutoriel complet à ce sujet, qui vous aidera à mieux connaître le fonctionnement détaillé de cette commande, et notamment celui des NBT-tags, ces variables qui font peur.
Construction de la commande /summon :
/summon <entité> <x> <y> <z> <nbt-tags>
Simple à première vue, mais ce qui est complexe pour beaucoup, c’est la construction des nbt-tags. Notez que si vous ne précisez pas les coordonnées, ce sont les coordonnées de l’endroit où est exécutée la commande qui sont utilisées.
Exemple de /summon simple :
/summon minecraft:zombie ~ ~ ~2
Les NBT-tags :
Parfois appelés data-tags, les NBT-tags sont des variables qui vont définir les points de vie d’un mob, ses caractéristiques, son nom ou encore ses compétences. Le nombre de tags qu’il est possible de définir est énorme et les possibilités pour créer des créatures customisées, infinies. Bien entendu, il existe des générateurs en ligne (il en existe d’autres), mais il arrive qu’ils ne soient pas à jour ou tout simplement qu’ils ne permettent pas de faire exactement ce que vous souhaitez. Cependant, une page reste toujours à jour et regroupe tout ce qu’il est possible de faire. Je parle bien évidemment de la page Gamepedia.
http://minecraft.gamepedia.com/Chunk_format
(sa version française est un peu plus difficile à lire)
Cette page, vous pouvez l’imprimer, la mettre en fond d’écran, la tatouer ou même la graver dans votre bureau tellement elle est utile (ce tutoriel aussi, mais je ne présenterai que les tags les plus couramment utilisés). Encore faut-il pouvoir comprendre comment s’en servir. Vous pourrez remarquer que si j’introduis cette article avec le /summon, de nombreuses commandes utilisent les NBT-tags (/entitydata, /blockdata, /give, /replaceitem, /testfor, /setblock ou encore le /testforblock)
Le début de la page concerne la construction des chunks. Ce genre d’info est assez difficile à modifier manuellement et ce n’est pas spécialement intéressant (hormis la difficulté locale peut-être qui détermine les chances d’apparition des monstres avec de l’équipement ou d’araignée avec des effets de potion). Mais en descendant plus bas, il y a toute une section dédiée au format de entités (Entity Format). Devant chaque nom de variable vous pouvez voir un petit symbole. Voici leur signification.
Le compound. Quand vous voyez ceci, cela veut dire que votre commande va comporter des accolades « {} ». Tous les tags d’une entité sont mis dans un compound, c’est pour cela que les data-tags se mettent entre accolades. Il peut y avoir plusieurs informations de types différents dans un compound. Dans ce cas, elles sont séparées par des virgules.
Exemple : « /summon ender_crystal ~ ~ ~ {BeamTarget:{X:0,Y:0,Z:0}} »
BeamTarget est un compound, je lui met donc des accolades. Le contenu du compound est précisé sur la page.
Les listes. Celles-ci se mettent entre crochet (« [] ») et un second format est généralement précisé après (on peut faire des listes de nombres, des listes de chaînes de caractères ou encore des listes de compound). Il peut y a voir plusieurs éléments dans une liste, chaque élément est séparé par une virgule mais ils seront toujours du même type.
Exemple : « /summon boat ~ ~ ~ {Passengers:[{id: »villager »},{id: »pig »}]} »
Passengers est une liste de compound. La liste est donc délimitée par des crochets, chaque compound est entre accolades et ils sont séparés entre eux par des virgules.
Les chaînes de caractères (String). Il s’agit de texte et doivent être mises entre guillemets. Oublier les guillemets n’est pas grave dans le cas du /summon, le jeu va reconnaître que ce ne sont pas des chiffres qui sont entrés.
Exemple : « /summon zombie ~ ~ ~ {CustomName:« Hector Zam« } »
CustomName est une chaîne de caractère, le nom qui suit doit être mis entre guillemets.
Le Byte. Ce sont des petits nombres entiers compris entre -127 et 128. Minecraft n’utilise pas de booléen et ils sont remplacés par des bytes (valeur 0 et 1). Pour préciser que c’est un byte, on ajoute un ‘b’ après le nombre.
Exemple : « /summon zombie {Invulnerable:1b,Glowing:0b} »
Invulnerable et Glowing sont tout deux des variables de type « Byte ». Le 1b signifie « vrai » (mon zombie sera invincible) et le 0b, « faux » (mon zombie ne brillera pas).
Le Double. Ces variables supportent les nombres décimaux. Dans Minecraft, les Doubles n’ont généralement qu’un ou deux chiffres après la virgule. On ajoute un ‘d‘ après le nombre pour préciser le format. Il est assez peu utilisé.
Exemple : « /summon arrow ~ ~ ~ {damage:5.5d} »
Le tag damage est de type « double« , je peux donc indiquer un chiffre après la virgule.
Le Float. Ces variables supportent un grand nombre de chiffres après la virgule. Ils sont très utilisés pour tout ce qui demande un peu de précision ou des petits nombres (comme les probabilités de drop qui sont entre 0 et 1). On ajoute un ‘f‘ après le nombre.
Exemple : « /summon zombie ~ ~ ~ {Health:6.489f} »
Ce n’est généralement pas pour cette variable que l’on a besoin de la plus grande précision, mais il faut le savoir ; vos points de vies peuvent être des nombres avec des virgules même si c’est arrondi une fois affiché dans votre barre.
L’Integer. C’est un nombre entier mais contrairement au byte, il peut être beaucoup plus grand. Il est cependant toujours positif. Pour celui-ci, on ne précise jamais le format. On se contente d’écrire le chiffre simplement.
Exemple : « /summon armor_stand ~ ~ ~ {DisabledSlots:1087} »
Le cas du DisabledSlots des supportes pour armures est extrêmement complexe. Je vous invite à regarder ce générateur pour générer plus facilement les bonnes valeurs.
Les Longs. Pour les nombres très longs, c’est le format idéal. Pour préciser ce format, il faut ajouter un ‘L‘ à la fin du nombre (attention à bien le mettre en majuscule). Principalement utilisé pour les UUID (Universal Unique IDentifier) permettant d’éviter les doublons.
Exemple : « /summon skeleton ~ ~ ~ {UUIDMost:84618941894L} »
UUIDMost est un tag de type Long, on précise son format en ajoutant un L à la fin.
Les Shorts. Ce sont des nombres entiers, positifs ou négatifs qui ont l’avantage d’être plus grands que le Byte. Pour indiquer qu’il s’agit d’une variable de type short, on ajoute un ‘s‘ après le nombre.
NBT-tags fréquemment utilisés :
La page gamepedia est très bien faite, mais voici tout de même une explication pour les NBT-tags les plus utilisés avec quelques exemples aux applications très pratiques.
Modifier l'équipement d'une entité
Les deux tags sont des listes (à mettre entre crochet donc) de compound (entre accolades).
/summon zombie ~ ~ ~ {ArmorItems:[],HandItems:[]}
Dans ArmorItems, chaque compound va correspondre à une pièce d’équipement (les NBT-tags pour les objets sont sur une autre page mais fonctionnent de la même manière). Le premier de la liste est pour les pieds, le second pour le pantalon, le troisième pour le torse et le dernier pour le casque. Si vous souhaitez laisser un emplacement vide, vous pouvez mettre des accolades vides.
Exemple, un zombie avec seulement un casque :
/summon zombie ~ ~ ~ {ArmorItems:[{},{},{},{id:"minecraft:iron_helmet",Count:1b}]}
Le NBT-tags HandItems correspond aux objets tenus par l’entité. Depuis la 1.9, les deux mains pouvant être utilisées, il est possible de mettre deux objets dans cette liste. Ils ne peuvent cependant se serrvir que du premier objet.
Exemple d’un squelette qui aurait un arc et une épée :
/summon skeleton ~ ~ ~ {HandItems:[{id:"minecraft:bow",Count:1b},{id:"minecraft:iron_sword",Count:1b}]}
Autre exemple plus complet, un zombie avec une armure en fer sans pantalon et une carrote dans la main :
/summon zombie ~ ~ ~ {HandItems:[{id:"minecraft:carrot",Count:1b}],ArmorItems:[{id:"minecraft:iron_boots",Count:1b},{},{id:"minecraft:iron_chestplate",Count:1b},{id:"minecraft:iron_helmet",Count:1b}]}
Sachez qu’il est aussi possible de déterminer les chances de drop de l’équipement des mobs via les tags ArmorDropChances et HandDropChances qui sont deux listes de Float.
Ces NBT-tags fonctionnent de la même manière que ArmorItems et HandItems. Chaque valeur détermine le pourcentage de chance de faire tomber l’objet associé (ce sont des nombres compris entre 0 et 1, 1 voulant dire 100% de chance).
Par exemple, ce Zombie donnera toujours son épée, mais seulement 10% du temps sa carotte. Son armure, quant à elle, ne tombera jamais sauf le casque à 24% de chance.
/summon zombie ~ ~ ~ {HandItems:[{id:"minecraft:iron_sword",Count:1b},{id:"minecraft:carrot",Count:1b}],HandDropChances:[1.0f,0.10f],ArmorItems:[{id:"minecraft:iron_boots",Count:1b},{},{id:"minecraft:iron_chestplate",Count:1b},{id:"minecraft:iron_helmet",Count:1b}],ArmorDropChances:[0.0f,0.0f,0.0f,0.24f]}
Il est aussi possible de mettre des objets qui ne servent pas d’armure dans les emplacements pour l’armures, ils ne se verront alors pas, mais peuvent servir pour faire des loots customisés (sans passer par les tables de loot que nous présentions ici). Exemple avec un zombie qui a 10% de chance de faire tomber deux diamants.
/summon zombie ~ ~ ~ {ArmorItems:[{},{},{id:"minecraft:diamond",Count:2b},{id:"minecraft:diamond_ore",Count:1b}],ArmorDropChances:[0.00f,0.00f,0.10f,0.00f]}
Les attributs d'une entité
Chaque entité possède une liste de Compound « Attributes » qui se mettra donc entre crochets. Chaque attribut quant à lui sera mis entre accolades.
Les attributs disponibles pour toutes les entités sont les suivant:
- generic.maxHealth – Permet de modifier le nombre de point de vie maximal de l’entité (attention à bien définir le tag « Health » quand vous le changez)
- generic.followRange – Permet de déterminer la distance à laquelle l’entité peut voir le joueur (attention, une valeur trop grande cause des soucis)
- generic.knockbackResistance – Permet de changer la chance de ne pas se faire propulser par une explosion
- generic.movementSpeed – Permet de modifier la vitesse de déplacement
- generic.attackDamage – Permet de modifier les dégâts des attaques
- generic.armor – Permet de changer la valeur de l’armure
- generic.armorToughness – Permet de changer la robustesse de l’armure (résistance aux coups critiques)
Chaque attribut se compose de la manière suivante: le nom (Name) et la valeur de base (Base)
Exemple d’un zombie très lent mais qui ferait beaucoup de dégâts :
/summon zombie ~ ~ ~ {Attributes:[{Name:"generic.movementSpeed",Base:0.1d},{Name:"generic.attackDamage",Base:50.0d}]}
Quand vous modifiez le nombre de point de vie maximal d’une entité, elle garde son nombre de point de vie par défaut au moment où elle apparaît. Il faut donc définir son nombre de point de vie manuellement via le tag « Health« .
Exemple d’une araignée avec 150/200 points de vie (il sera donc possible, avec une potion de régénération, de lui redonner 50 points de vie) :
/summon Spider ~ ~ ~ {Attributes:[{Name:"generic.maxHealth",Base:200.0d}],Health:150.0f}
La commande pour le faire apparaître si ça vous intéresse :
/summon zombie ~ ~ ~ {CustomName:"Hector Zam",HandDropChances:[0.10f,0.20f],HandItems:[{id:"minecraft:feather",Count:1b,Damage:0s},{id:"minecraft:shears",Count:1b,Damage:0s}],ArmorDropChances:[0.00f,0.00f,0.00f,0.1f],CanBreakDoors:1b,ArmorItems:[{id:"minecraft:leather_boots",Count:1b,tag:{display:{color:9979333}},Damage:0s},{id:"minecraft:leather_leggings",Count:1b,tag:{display:{color:9979333}},Damage:0s},{id:"minecraft:leather_chestplate",Count:1b,tag:{display:{color:9979333}},Damage:0s},{id:"minecraft:end_rod",Count:1b,Damage:0s}]}
Faire apparaître des objets au sol
/summon item ~ ~ ~ {Item:{id:"minecraft:gold_ingot",Count:1b}}
Attention à toujours préciser le « Count » sinon vous ne pourrez pas récupérer l’objet… mais peut-être est-ce justement votre but ? Il existe un autre tag permettant de définir le temps nécessaire après apparition pour pouvoir récupérer l’objet, le tag « PickupDelay« .
/summon item ~ ~ ~ {Item:{id:"minecraft:apple",Count:3b},PickupDelay:600s}
Vous devez attendre 600 ticks (30 secondes) pour pouvoir récupérer les trois pommes. Si vous utilisez 32767 comme valeur, vous ne pourrez jamais prendre l’objet.
Un autre tag bien pratique permet de déterminer le temps avant que l’objet ne disparaisse, le tag « Age« . Par défaut, les objets disparaissent après 6000 ticks (5 minutes).
/summon item ~ ~ ~ {Item:{id:"minecraft:diamond",Count:20b},Age:5800s}
Il reste ici 200 ticks (10 secondes) avant que le tag Age n’atteigne 6000. Les diamants disparaîtrons donc 10 secondes après leur apparition. Si vous utilisez -32768 comme valeur, l’objet ne disparaîtra jamais.
Pour compléter le tout, un objet qui ne disparaît pas et que vous ne pouvez pas prendre.
/summon item ~ ~ ~ {Item:{id:"minecraft:book",Count:1s},Age:-32768s,PickupDelay:32767s}
Les objets au sol peuvent avoir d’autres tags comme des noms customisés ou être rendus invulnerables de la même manière que toutes les autres entités.
/summon item ~ ~ ~ {Item:{id:"minecraft:book",Count:1s},CustomName:"Prenez-moi !",CustomNameVisible:1b,Invulnerable:1b,Age:-32768s}
Faire apparaître des textes flottants
/summon armor_stand ~ ~ ~ {NoGravity:1b,Invulnerable:1b,CustomName:"Texte flottant",CustomNameVisible:1b,Invisible:1b,Marker:1b}
NoGravity permet de faire flotter l’entité.
Invulnerable permet d’être sûr qu’elle ne sera pas détruite par une explosion.
CustomName est le nom qui s’affichera.
CustomNameVisible permet de forcer le nom à s’afficher.
Invisible rend invisible le support pour armure.
Marker retire la hitbox du support pour armure ce qui empêche toute interaction avec lui.
Pour mettre ce genre de texte en couleur, il faut passer par un mod présenté sur le forum.
Pour retirer un texte comme ceci, le plus simple est de se mettre à côté et d’utiliser la commande suivante :
/kill @e[type=armor_stand,r=3,c=1]
Simple et efficace.
Les entités qui se chevauchent
/summon spider ~ ~ ~ {Passengers:[{id:"skeleton"}]}
Il est possible de mettre plusieurs passagers sur une seule entité, c’est comme cela que fonctionnent les bateaux.
/summon boat ~ ~ ~ {Passengers:[{id:"creeper"},{id:"creeper"}]}
Ou on peut aussi envisager des entités sur des entités sur des entités.
/summon spider ~ ~ ~ {Passengers:[{id:"zombie",Passengers:[{id:"chicken"}]}]}
Vos no-mods utilisent ce principe quand vous les installez !
Petits exemples divers
Un villageois invulnerable et silencieux :
/summon villager ~ ~ ~ {Silent:1b,Invulnerable:1b}
Un Creeper qui explose instantanément mais qui ne fait pas de dégât :
/summon creeper ~ ~ ~ {ExplosionRadius:0b,Fuse:1s}
Un Slime géant :
/summon slime ~ ~ ~ {Size:5}
Un bateau volant :
/summon boat ~ ~ ~ {NoGravity:1b}
Un bloc d’or qui tombe du ciel :
/summon falling_sand ~ ~10 ~ {Block:"minecraft:gold_block",Time:1}
Et on pourrait continuer la liste très longtemps…
Connaître les NBT-tags d’une entité déjà créée :
Ce qui peut être frustrant parfois, c’est de créer une entité parfaite… mais de ne plus avoir la commande pour la replacer. Il existe cependant une solution toute simple en jeu permettant de récupérer ses NBT-tags.
Par exemple, j’ai créé ce zombie en utilisant la commande /replaceitem pour lui donner de l’équipement et j’aimerais le faire apparaître tel quel avec la commande /summon. Je vais, dans le bloc situé juste en dessous, entrer la commande suivante :
/entitydata @e[type=zombie,c=1] {}
Cela va cibler le zombie le plus proche (avec le c=1) et envoyer un message d’erreur dans le champ « Previous Output » parce que je n’ai pas fait de modification sur l’entité.
Il ne me reste plus qu’à sélectionner tout ce qui se trouve dans ce champ (en utilisant shift+contrôle+flèche) et à copier (contrôle + c) puis à coller le tout dans un /summon.
/summon zombie ~ ~1 ~ {HurtByTimestamp:0,ZombieType:0,Attributes:[0:{Base:20.0d,Name:"generic.maxHealth"},1:{Base:0.0d,Name:"generic.knockbackResistance"},2:{Base:0.23000000417232513d,Name:"generic.movementSpeed"},3:{Base:2.0d,Name:"generic.armor"},4:{Base:0.0d,Name:"generic.armorToughness"},5:{Base:35.0d,Name:"generic.followRange"},6:{Base:3.0d,Name:"generic.attackDamage"},7:{Base:0.07481863599766836d,Name:"zombie.spawnReinforcements"}],Invulnerable:1b,FallFlying:0b,PortalCooldown:0,AbsorptionAmount:0.0f,FallDistance:0.0f,DeathTime:0s,HandDropChances:[0:0.085f,1:0.085f],PersistenceRequired:0b,ConversionTime:-1,Motion:[0:0.0d,1:-0.0784000015258789d,2:0.0d],Leashed:0b,UUIDLeast:-7454321581964268780L,Health:20.0f,Silent:1b,LeftHanded:0b,Air:300s,OnGround:1b,Dimension:0,NoAI:1b,Rotation:[0:0.0f,1:0.0f],HandItems:[0:{id:"minecraft:golden_carrot",Count:1b,Damage:0s},1:{}],ArmorDropChances:[0:0.085f,1:0.085f,2:0.085f,3:0.085f],UUIDMost:-4045650954812109390L,Pos:[0:-288.5d,1:66.0d,2:326.5d],CanBreakDoors:1b,Fire:-1s,ArmorItems:[0:{},1:{},2:{},3:{id:"minecraft:diamond_helmet",Count:1b,tag:{ench:[]},Damage:18s}],CanPickUpLoot:0b,HurtTime:0s,ActiveEffects:[0:{Ambient:0b,ShowParticles:0b,Duration:9732,Id:24b,Amplifier:0b}]}
La commande est très longue, mais elle permet de faire apparaître exactement le même zombie. Il sera tellement identique qu’il ne sera pas possible de le faire apparaître deux fois car il y aurait alors deux entités avec le même UUID (ils sont censés être uniques). Si vous souhaitez vous servir de cette commande plusieurs fois, il faut penser à retirer les tags UUIDMost et UUIDLeast (ils seront générés aléatoirement par le jeu). Notez que cette méthode peut aussi servir à récupérer seulement une partie des tags pour éviter d’avoir des commandes trop longues ou tout simplement pour voir certains tags particuliers (par exemple les dégâts que fait l’entité ou le nombre de dégât qu’elle subit à chaque coup).
À vous de jouer !
Image de Une réalisée par Biboush
Dernière mise à jour de l’article : 2/06/2017 (Pour Minecraft 1.12)
alert(‘ok’)
Bonjour, afin de régler votre soucis avec la commande, nous vous invitons à poser votre question sur le forum de Minecraft-France ou l’ensemble de la communauté pourra répondre à votre demande en cliquant sur le lien suivant : https://forum.minecraft-france.fr/forums/commands-blocks-redstone.118/
Bonjour,
je souhaite faire la commande suivante: /testforblock 203 6 -121 hopper 12 {Items:pumpkin,Count:1s,SLot:0b,tag:{display:#Name: »Ballon »}}}. Et malgré cela, il y a toujours marqué […] did not have the required NBT keys. je ne sais pas ce qui manque donc votre aide sera la bienvenue. Et j’aimerai aussi savoir à qui correspond le data value 12 ? j’ai cherché mais j’arrive pas à comprendre ce que c’est.
Merci d’avance
@Mr_Selmer : voici qui pourrait t’aider ;)
https://minecraft-fr.gamepedia.com/Effets_de_potions
Hey! Salut tout le monde! Très intéressant pour les no mods et tout ça… Mais est ce qu’il est possible de savoir comment faire spawner/summoner une entité en lui appliquant l’effet d’invisibilité à l’infini? Merci d’avance et bravo!
@simon Dans tous les cas, il faut faire une modification client ou serveur. Le mod ‘§’ est utilisé depuis très longtemps par les mapmakers puisqu’il fonctionne aussi sur serveur (dans les blocs de commandes, pas dans le chat). Le problème des plugins, c’est qu’ils ont tendance à ré-écrire certaines commandes de base et du coup, une commande fonctionnant sous bukkit/sponge/hmod* ne marchera pas forcément en vanilla.
* Rayez l’API obsolète
Pour cette partie:
Pour mettre ce genre de texte en couleur, il faut passer par un mod présenté sur le forum.
Officiellement et donc sans mode avec une simple commande on peut pas mettre de couleur. Je crée des plugins sous Sponge et on peut le faire simplement c’est top
Wow super ce genre de tutos!
Moi qui commençais à vraiment me mettre dans les CB et à faire des maps, ça me permet de mieux comprendre ce que je fais!
Merci Mlakuss! ;D
@kubbydev Je crois qu’il y a un tutoriel sur le /scoreboard la semaine prochaine.
SUPER cool et SUPER utile mais y a une faute a « …Le Float. Ces VARAIBLES supportent … «
Super article !
Je te propose quand même un petit ajout:
Dans la partie tag tu peux rajouter qu’on peut reconnaitre toutes les entitées avec un certain tag facilement en utilisant le:
/scoreboard players set @e[type=ArmorStand] IsInvisible 1 {Insivible:1}
super sympa ces tutos sur les CB, très bien expliqué !
merci ;-)
Joli tuto :)