CommandBlock [Tutoriel Complet] La commande /execute (1.8 et +)

Ce tutoriel vous a-t-il été utile ?


  • Total voters
    5

Gleanight

Massacreur de zombies
23 Janvier 2016
168
39
139
La commande /execute (1.8 et +)
I) Qu'est-ce que le /execute ?
Le /execute est une commande permettant d'exécuter une commande directement aux coordonnées relatives d'un joueur ou d'une entité sans que celui-ci/celle-ci l'exécute elle-même.

II) Les bases du /execute
1 - "Forme constructive" de la commande
Le /execute est une commande dans laquelle vous devrez employer un /execute suivi d'une autre commande au choix (Que vous choisirez biensûr).

La "forme constructive" de la commande est simple :
/execute suivi d'un sélecteur (@p @a @r @e) suivi des coordonnés relatives que vous voulez attribuer au sélecteur ~ ~ ~ suivi d'une commande au choix (qui sera exécute aux coordonnées relatives que vous avez attribué au sélecteur).

- Par exemple, la commande :
/execute @a ~ ~ ~ summon ArmorStand ~ ~ ~
fera apparaître un ArmorStand SUR tous les joueurs connectés (@a).

- Par exemple, la commande :
/execute @r ~1 ~ ~ setblock ~ ~ ~ stone
fera apparaître un bloc de stone 1 bloc à l'Est d'un joueur aléatoire (@r).

Et cela marche avec toutes les autres commandes.

2 - Ciblage de joueurs/entités ayant des critères particuliers
Il est possible avec le /execute de ne cibler uniquement des joueurs/entités ayant des critères particuliers.
Comme par exemple un score de scoreboard.

Imaginons que nous voulons que nous voulons poser un bloc de redstone sur les joueurs ayant le score deathCount à 1 :
/execute @a[score_deathCount_min=1,score_deathCount=1] ~ ~ ~ setblock ~ ~ ~ redstone_block
Cette commande posera un bloc de redstone SUR tous les joueurs ayant le score deathCount à 1.

Jusqu'à là, rien de bien compliqué, on peut utiliser n'importe quel sélecteur avancé avec le /execute. En revanche ! Si l'on veut cibler les joueurs ayant le score deathCount à 1 ET le score dummy à 2, il y a un petit problème ! Dans ce cas, on peut tout simplement créer une chaîne de /execute afin que tous les sélecteurs se combinent.

- Par exemple, la commande :
/execute @a[score_deathCount_min=1,score_deathCount=1] ~ ~ ~ execute @a[score_dummy_min=2,score_dummy=2] ~ ~ ~ setblock ~ ~ ~ redstone_block

posera un bloc de redstone sur TOUS les joueurs ayant le score deathCount à 1 ET le score dummy à 2.
Comme vous pouvez le voir dans le dernier exemple de commande, on a combiné 2 /execute.
Il est possible d'en combiner à l'infini.

III) Coordonnées Numériques combinées aux Coordonnées Relatives
Une super fonctionnalité du /execute est qu'il est possible sur cette commande de combiner les Coordonnées Numériques (Exemple de coordonnées numériques : -45 62 536) avec des Cordonnées Relatives (Exemple de coordonnées relatives : ~1 ~ ~ ).

- Par exemple, la commande :
/execute @p ~ 56 ~ setblock ~ ~ ~ stone

Imaginons que le joueur (Le plus proche de l'endroit où la commande est exécutée) soit au coordonnées 45 62 35.
Alors la commande citée dans le dernier exemple fera apparaître un bloc de stone aux coordonnées 45 56 35.


- Par exemple, la commande :
/execute @p ~ 75 ~ setblock ~ ~ ~ stone
Imaginons que le joueur (Le plus proche de l'endroit où la commande est exécutée) soit au coordonnées 123 62 -754.
Alors la commande citée dans le dernier exemple fera apparaître un bloc de stone aux coordonnées 123 75 -754.

Et cela marche également pour les coordonnées X et Z. (12 53 65 -> X=12, Y=53, Z=65)

IV) Ciblage de joueurs/entités différents ayant des critères particuliers
1 - Ciblage de joueurs & entités différent(e)s
Il est possible avec le /execute de cibler des joueurs/entités ayant des critères particuliers comme vous avez pu le constater dans le II)-2).
Voici maintenant une partie "secondaire" de ce paragraphe, mais dans des conditions plus avancées.

Nous avons vu dans la première partie qu'il était possible de cibler des joueurs & entités ayant un voir plusieurs critère(s) particulier(s). Dans cette partie, nous allons apprendre à cibler des joueurs & entités ayant des critères particuliers différents.

Pour cela, nous allons devoir de nouveau passer par des combinaisons de /execute.

- Par exemple, la commande :

/execute @e[name=Exemple] ~ ~ ~ execute @e[name=Tutoriel] ~ ~ ~ setblock ~ ~ ~ stone
fera apparaître un bloc de stone sur tous les joueurs s'appelant "Exemple" ainsi que tous les joueurs s'appelant "Tutoriel".

Comme vous pouvez le voir, nous avons ciblé deux types d'entités différentes.
Dans la première partie, on ciblait les joueurs ayant deux scores à tel ou tel nombre précisément.
Dans cette partie là, on cible deux groupes d'entités différentes -> Dans le dernier exemple, on cible le groupe d'entités se nommant "Exemple" et un autre se nommant "Tutoriel" (Car il est impossible d'avoir deux noms à la fois dans le jeu. En revanche, il est possible d'avoir deux scores à la fois (même plus), comme on a pu le voir dans la première partie).


- Par exemple, la commande :

/execute @e[type=Zombie] ~ ~ ~ execute @e[type=Skeleton] ~ ~ ~ execute @e[type=Spider] ~ ~ ~ setblock ~ ~ ~ stone
fera apparaître un bloc de stone uniquement sur tous les zombies / squelettes / araignées de la map.

Encore une fois, on cible différents groupes d'entités. (Car il est impossible d'être à la fois un zombie, à la fois un squelette et à la fois une araignée dans le jeu... '-').

2 - "Raccourcissement" de commande
[En cours de rédaction]
 
Dernière édition:

4rno

Massacreur de zombies
9 Juillet 2015
33
8
73
/execute @e[name=Exemple] ~ ~ ~ execute @e[name=Tutoriel] ~ ~ ~ setblock ~ ~ ~ stone
Faux, le bloc de stone apparaitra sur l'entité nommée "Tutoriel" uniquement si "Exemple" et "Tutoriel" existent.
C'est semblable pour l'autre exemple.
L'enchainement de /execute sert uniquement quand on veux vérifier que plusieurs entités précises (habituellement avec des caratéristiques précises (scoreboard, ..)) existent au même moment.
De plus, ta partie 3 sur les coordonnées ABSOLUES (et pas numériques, il ne me semble pas que les coordonnées relative soient analogiques...) combinées au coordonnées relatives n'a pas vraiment de sens, écrire
Code:
 /execute @p ~ ~ ~ setblock ~ 56 ~ stone
revient au même que ta commande. Les coordonnées des /execute ne servent (à ma connaissance) à rien; puisque toutes les commandes qui ont besoin de coordonnées, on peut les inscrire directement dans la commande à exécuter (reprenez moi si je me trompe, mais je ne pense pas).
De plus tu n'as pas parlé des /execute ... detect qui sont comme même utile (normalement ça devrait rentrer dans ta catégorie "Ciblage de joueurs/entités ayant des critères particuliers" puisque ça permet de détecter la présence d'un bloc à un endroit (donc ça peux être aussi avec des coordonnées relatives (par exemple pour détecter un bloc à proximité de l'entité visée)).

Pour finir, petit avis personnel :
Les /execute ne servent qu'à 2 choses (en général):
  • Les commandes avec coordonnées relatives aux entités.
  • Vérifier que une ou plusieurs conditions (entité(s) avec arguments précis/bloc(s) existant à un endroit) soient (toutes) vraies pour exécuter une commande (en gros pareil que /testfor ou /testforblock mais instantané).
 

Oromis

Command-blocker slimesque
Staff
Modérateur
Support
11 Février 2014
3 380
2
1 063
297
22
Bretagne
Les coordonnées des /execute ne servent (à ma connaissance) à rien; puisque toutes les commandes qui ont besoin de coordonnées, on peut les inscrire directement dans la commande à exécuter (reprenez moi si je me trompe, mais je ne pense pas).
Je ne suis pas tout à fais d'accord ! :p
Les coordonnées du execute permette d'exécuter la commande à des coordonnées relatif à l'entité, là où est la nuance, c'est que, pour un setblock (en tant qu'exemple), si tu mets :
Code:
/execute @a ~ ~ ~ setblock ~ ~-1 ~ stone
La commande sera exécuter à partir de tout les joueurs, et mettra un bloc en dessous d'eux.
Par contre,
Code:
/execute ~ ~-1 ~ setblock ~ ~ ~ stone
Executera la commande un bloc en dessous des joueurs !
Bon, en sois, le résultat est le même mais dans un cadre plus complexe (pourquoi pas un scoreboard, commande ne prenant pas de coordonnées en argument) il peut avoir son utilité ! :p
 
  • J'aime
Reactions: RebellCraft

4rno

Massacreur de zombies
9 Juillet 2015
33
8
73
Oui, mais le résultat est le même, par contre, c'est vrai que si la commande que l'on exécute n'admet pas de coordonnées mais utilise un sélecteur, alors ça permet d'avoir des coordonnées relatives (puisque les arguments n'admettent pas les coordonnées relatives)
Exemple:
/execute @a ~ ~5 ~ /entitydata @e[r=10] {Motion:[0.0,1.0,0.0]}
 

Oromis

Command-blocker slimesque
Staff
Modérateur
Support
11 Février 2014
3 380
2
1 063
297
22
Bretagne
Code:
Bon, en sois, le résultat est le même mais dans un cadre plus complexe (pourquoi pas un scoreboard, commande ne prenant pas de coordonnées en argument) il peut avoir son utilité ! :p
C'est ce que je dit ;)
 

4rno

Massacreur de zombies
9 Juillet 2015
33
8
73
Ok, ok...
Pour conclure, je pense que l'on peux dire que c'est pratiquement jamais utilisé...
Un /execute ... detect est, par exemple, vachement plus utilisé.
 

Patato-carafe

Patate à grandes oreilles
28 Novembre 2014
238
58
140
Ailleurs
Tuto très utile ! (Oromis, j'allais justement t'en demander un sur ce sujet dans ton topic dédié! ;) ). (Par contre, je pense que la bonne section serait plutôt la section "Tuto" de "Command blocks"!)
 
  • J'aime
Reactions: Oromis