Taper les mêmes dix commandes encore et encore devient vite pénible. Une fonction est un fichier texte rempli de commandes qui les lance toutes d'un coup avec un seul appel à /function. Les fonctions peuvent aussi se lancer toutes seules à chaque tick du jeu : c'est comme ça que beaucoup d'add-ons font des choses en continu.
Si les commandes sont nouvelles pour toi, lis d'abord Les bases des commandes.
La méthode rapide : GodCraft
GodCraft a un objet Fonction qui écrit les fichiers et la liste des ticks pour toi.
- Ouvre l'Atelier et ajoute une Fonction à ton add-on.
- Tape une commande par ligne. Des suggestions te proposent des commandes et des arguments au fur et à mesure.
- Choisis comment elle se lance : à chaque tick, une fois au chargement du monde, ou seulement avec
/function. - Exporte. Le fichier
.mcfunction,tick.json, les manifestes et les UUID sont tous écrits pour toi.
À la main
Étape 1 : créer un fichier de fonction
Les fonctions se trouvent dans le pack de comportements (BP), dans un dossier nommé functions. Le fichier se termine par .mcfunction et c'est du texte brut : tu peux l'écrire dans n'importe quel éditeur de texte.
# Gives whoever runs this function a starter kit
give @s minecraft:stone_sword
give @s minecraft:bread 8
give @s minecraft:torch 16
effect @s minecraft:speed 60 0
say Your starter kit is ready!Les règles sont simples :
- Une commande par ligne. Une commande ne peut pas être coupée sur deux lignes.
- Pas de barre oblique. Écris
give, pas/give. - Les lignes qui commencent par
#sont des commentaires. Le jeu les ignore. Sers-t'en pour expliquer ce que fait la fonction. - Les lignes vides sont autorisées et rendent les longs fichiers plus faciles à lire.
Utilise un dossier à ton nom
Ranger tes fichiers dans un dossier comme functions/myname/ évite les conflits avec d'autres add-ons qui auraient aussi une fonction starter_kit.
Étape 2 : la lancer
Charge un monde avec ton pack de comportements activé et les commandes de triche autorisées, puis tape :
/function myname/starter_kitLe nom est le chemin à l'intérieur du dossier functions, avec des / entre les dossiers et sans l'extension .mcfunction. Voir /function.
Dans une fonction, @s et ~ ~ ~ désignent celui qui a lancé /function et l'endroit où il se tient. Donc quand tu lances le kit de départ, c'est toi qui reçois les objets.
Des dossiers dans des dossiers
Tu peux ranger tes fonctions dans autant de dossiers que tu veux :
BP/functions/
tick.json
myname/
starter_kit.mcfunction
tick.mcfunction
arena/
start.mcfunction
reset.mcfunctionLance celle qui est imbriquée avec /function myname/arena/start.
Les fonctions peuvent aussi appeler d'autres fonctions. C'est parfait pour découper une grosse tâche en petits morceaux :
# Clean up, then teleport everyone in
function myname/arena/reset
tp @a 0 80 0
title @a title Fight!Ne t'appelle pas toi-même
Une fonction qui s'appelle elle-même, directement ou via une autre fonction, crée une boucle infinie. Le jeu l'arrête après trop de commandes, donc le résultat ne sera pas celui que tu attends.
Étape 3 : lancer à chaque tick avec tick.json
Minecraft met le monde à jour 20 fois par seconde. Chaque mise à jour est un tick. Pour lancer une fonction à chaque tick, ajoute-la dans tick.json, directement dans le dossier functions :
{
"values": [
"myname/tick"
]
}Chaque entrée de values est un chemin de fonction, écrit de la même façon qu'avec /function. Maintenant, écris la fonction de tick :
# Players standing on a gold block get Speed
execute as @a at @s if block ~ ~-1 ~ minecraft:gold_block run effect @s minecraft:speed 1 1 trueÇa vérifie chaque joueur 20 fois par seconde. Quiconque se tient sur un bloc d'or reçoit un court bonus de Vitesse, qui se renouvelle tant qu'il reste dessus. Le true à la fin cache les particules de l'effet.
Qui est @s dans une fonction de tick ?
Les fonctions de tick sont lancées par le jeu lui-même, pas par un joueur, donc @s ne désigne personne. Utilise /execute avec as @a ou as @e[...] pour lancer des commandes pour chaque joueur ou créature, comme dans l'exemple ci-dessus.
Garde tes fonctions de tick légères. Quelque chose qui tourne 20 fois par seconde sur chaque joueur, ça s'additionne vite. Restreins tes sélecteurs avec des arguments comme type, r ou tag.
Recharger les changements
Après avoir modifié un fichier de fonction, pas besoin de relancer le jeu. Lance /reload pour charger les nouvelles versions des fonctions et des scripts. Si une fonction contient une commande cassée, le fichier entier peut ne pas se charger : regarde donc le journal de contenu pour trouver les erreurs. Voir Dépannage.
Les blocs de commande
Les blocs de commande lancent une commande quand ils reçoivent du courant, directement dans ton monde. Ils sont parfaits pour les maps, les mini-jeux et les tests. Les fonctions sont mieux pour les add-ons, car elles voyagent avec ton pack au lieu de rester dans un seul monde.
En obtenir un
Tu ne trouveras pas de blocs de commande dans l'inventaire créatif. Utilise :
/give @s minecraft:command_blockPose-le, puis touche-le ou fais un clic droit dessus pour ouvrir ses réglages. Tape une commande dans la case, sans la barre oblique.
Les trois types
| Type | Couleur | Ce qu'il fait |
|---|---|---|
| Impulsion | Orange | Se lance une fois à chaque fois qu'il est alimenté |
| Chaîne | Vert | Se lance juste après le bloc qui pointe vers lui |
| Répétition | Violet | Se lance à chaque tick tant qu'il est alimenté |
Réglages principaux
- Type de bloc : Impulsion, Chaîne ou Répétition.
- Condition : Inconditionnel se lance toujours. Conditionnel ne se lance que si le bloc derrière lui a réussi.
- Redstone : Redstone nécessaire attend un signal d'un bouton, d'un levier ou de redstone. Toujours actif se lance sans signal.
- Délai en ticks : attend ce nombre de ticks avant de se lancer.
Exemple : un bouton de téléportation
- Pose un bloc de commande Impulsion réglé sur Redstone nécessaire, avec :
tp @p 0 100 0 - Mets un bouton en pierre dessus.
- Appuie sur le bouton : le joueur le plus proche s'envole vers
0 100 0.
Exemple : une chaîne
Les blocs de commande ont une flèche sur les côtés qui montre dans quelle direction ils pointent. Un bloc chaîne placé là où pointe la flèche se lancera ensuite.
- Répétition, Toujours actif :
testfor @a[r=5] - Un bloc Chaîne devant lui, Conditionnel, Toujours actif :
effect @a[r=5] minecraft:regeneration 2 0 true
Maintenant, tout joueur à moins de 5 blocs est soigné, mais seulement quand quelqu'un est à proximité. /testfor réussit s'il trouve quelqu'un, et le bloc chaîne conditionnel ne se lance qu'en cas de réussite.
Fonction ou bloc de commande ?
Un bloc de commande peut aussi lancer toute une fonction : mets function myname/arena/start dedans. Comme ça, la logique vit dans ton add-on et le bloc ne sert que de bouton.
Et ensuite
- Apprends les sélecteurs et les coordonnées dont tu as besoin pour toutes les commandes dans Les bases des commandes.
- Maîtrise /execute, la commande autour de laquelle la plupart des fonctions sont construites.
- Crée un bloc personnalisé sur lequel te tenir à la place de l'or dans Ton premier bloc personnalisé.