Il y a maintenant à peu près six ans que les blocs de commandes sont disponibles. Depuis cette version, la redstone n’a plus le rôle qu’elle avait autrefois (en tout cas moins qu’avant). En effet, la plupart des maps actuelles fonctionnent principalement avec la puissance des nouveaux command blocks. Même après la mise à jour des command blocks, ces derniers demeurent inébranlables et engendrent manifestement des bugs et des lags, chose souvent reprochée à Mojang.
Avec l’objectif d’aider les mapmakers, le fameux studio suédois s’est enfin décidé à réagir. Le 10 Mai 2017 naissent enfin les fonctions. Elles ont le même principe et la même utilisation que les command blocks : ces petits bijoux sont des fichiers texte créés afin d’y placer vos commandes. Ces commandes sont exécutées les unes après les autres (en l’espace d’un vingtième de seconde) et permettent une optimisation la plus convenable.
Créer une fonction
La création d’un fonction a lieu dans les dossiers propres de la map. Dans le dossier data puis functions. Vous devrez créer un dossier (appelé “racine”). C’est ici que vous placerez vos fonctions. Rien ne vous empêche d’ajouter d’autres dossiers dans la racine. Exemple : data/functions/racine/jesuisunautredossier/test.mcfunction (test étant le fichier texte).
La mise en forme des commandes dans le fichier .mcfunction est relativement simple. Toutes les commandes doivent être positionnées sur chaque ligne sans le ‘/’. Vous avez aussi la possibilité de mettre des commentaires dans votre fonction en y ajoutant un ‘#’ en début de ligne. Exemple :
Voici deux logiciels de traitement de texte qui seront l’idéal pour votre développement :
Une fois mis sur votre monde, le dossier des fonctions doit être chargé. Pour se faire, exécutez un /reload à chaque modification de votre/vos fonction(s) !
Exécuter une fonction
La /function : Elle est la commande principale. Voici sa syntaxe :
/function [function] <if | unless> <sélecteur>
L’argument “function” est le chemin que Minecraft aura à parcourir pour trouver le fichier .mcfunction.
Les arguments if et unless suivis d’un sélecteur : vous pouvez ajouter une condition d’exécution de votre commande. En écrivant if suivi d’un sélecteur, la fonction sera exécutée seulement si le sélecteur a détecté une entité ; à l’inverse du unless qui l’exécutera seulement si le sélecteur n’a rien détecté. Exemple :
/function main:sousdossier/test if @a[name=AsiliS]
La fonction test.mcfunction s’exécutera seulement si il y a présence d’un joueur nommé AsiliS sur le monde.
Tips : vous pouvez mettre une fonction dans un command block repeat afin qu’elle soit constamment exécutée (sauf en présence d’un if ou d’un unless).
La règle de jeu : /gamerule gameLoopFunction exécute la fonction à chaque tick. Ceci peut éviter la présence d’un command block sur votre monde en y ajoutant votre seule et unique fonction. Écrivez donc /gamerule gameLoopFunction [chemin de la fonction].
Les avantages des fonctions
Maintenant que vous savez comment fonctionnent les fonctions, il est temps à présent de vous faire découvrir à quoi elles servent :
- Un développement très sécurisé (grâce à la “confirmation” exigée lors du /reload). Les potentielles erreurs sont désormais mieux repérables.
- La possibilité de changer/modifier/ajouter/copier vos commandes beaucoup plus rapidement.
- L’usage du symbole ‘§’ désormais possible. (Ce symbole permet de mettre en forme vos textes et y d’ajouter de la couleur : plus d’information sur le Wiki)
- Vos systèmes engendreront moins de lags et vous gagnerez en performance. Vous pourrez tester en passant d’un ancien système command block en function.
- Réduire la taille de votre monde : en retirant les command blocks, vous réduirez considérablement la taille de votre monde.
Cependant, nous avons tout de même un léger inconvénient. En effet, le principe du command block conditionnel (c’est à dire l’exécution d’une commande que si une précédente est vraie) n’existe plus. Il n’y donc aucun moyen aisé de reproduire ce principe.
Voilà voilà, vous connaissez maintenant tout (ou presque) sur les Minecraft functions. Je compte maintenant sur vous pour créer vos plus beaux systèmes en espérant qu’ils soient plus optimisés et conséquemment plus réduits !
Merci Asilis de m’avoir appris a utiliser les MCfonctions !
Superbe o/
@Yanis : Merci pour ton commentaire. Je ferais évidemment une mise à jour pour la 1.13 !
Un très bon article, cependant je pense que parler des changements sur les fonctions en 1.13 serait assez utile à quelques semaines de sa sortie ^^
Pour info, les paramètres if et unless seront supprimés de la commande /function, car la commande /execute aura les mêmes paramètres.
Par exemple, /function dossier:nom if @a[m=0] deviendra /execute if @a[gamemode=survival] run function dossier:nom
AlChimiK Elles ont été ajoutées lors du Pre-release 1 de la 1.12, sorti le 10 mai 2017, donc.
Merci d’avoir éclairé ça, personnellement je le savais mais je pense qu’une grande partie de la communauté n’ont pas suivi ces informations ;-)
Et oui @153197 les fonctions ont été ajoutées dans la 1ère pre-release de la 1.12, soit le 10 mai 2017 ^^
« Le 10 Mai 2017 » ???