L'avenir du command block

Oromis

Command-blocker slimesque
Staff
Modérateur
Support
11 Février 2014
3 345
2
1 053
297
24
Bretagne
Hey tout le monde !

Je créées aujourd'hui cette discussion pour parler voire débattre des nouveautés que la 1.12 apporte à Minecraft, et plus précisément au Map making et au Command Blocks.

Pour les quelques personnes qui ne sont pas trop au courant de ce qui se passe, voici un petit rappel :

- Déjà, l'un des ajouts les plus mineurs (et pourtant !), l'ajout du nouveau sélecteur @s (de "self", "sois" en anglais) qui permet de cibler la/les entité(s) exécutant la commande.

- Ensuite, la suppression des Achievements pour l'avènement des Advancements. En sois, pour des joueurs survie, il n'y a pas grande différence outre la réorganisation en diverses onglets (un par dimension) et l'ajout de nouveaux défis. Mais pour les Map Maker, c'est la possibilité de créer ces propres succès !

- Enfin, sans doute le plus gros ajout ou tout du moins celui qui aura le plus d'impact sur l'avenir du command block, la commande /function. Je vais m'attarder un peu vers cette dernière afin que ce soit claire pour tout le monde. Il s'agit, pour les Map Makers, de pouvoir créer ce que l'on appelle des "Fonctions" dans le répertoire
"nom de la map/data/function" sous forme de fichier .txt (et .mcfunction pour la version final). Les command blockers peuvent ainsi placer des commandes dans ce fichier et les exécuter en une commande !
Voici un petit exemple :
j'ai un fichier nommé "Zombie" dans le répertoire "ma map/data/functions/MaFonction" contenant ceci :
Code:
#Mes commandes:
summon Zombie ~ ~ ~ {CustomName:"1"}
summon Zombie ~ ~ ~ {CustomName:"2"}
summon Zombie ~ ~ ~ {CustomName:"3"}
summon Zombie ~ ~ ~ {CustomName:"4"}
summon Zombie ~ ~ ~ {CustomName:"5"}
summon Zombie ~ ~ ~ {CustomName:"6"}
summon Zombie ~ ~ ~ {CustomName:"7"}
summon Zombie ~ ~ ~ {CustomName:"8"}
summon Zombie ~ ~ ~ {CustomName:"9"}
summon Zombie ~ ~ ~ {CustomName:"10"}
Et que j'exécute la commande
Code:
/function maFonction:Zombie
Alors toutes les commandes du fichier seront exécuter sur moi.
(Je ferai sans doute un petit tutoriel écrit sur cette commande)


Maintenant que j'ai fais un petit debriefing, voici mon avis !

Le @s est un merveilleux ajout ! Il permet enfin de pouvoir cibler SEULEMENT le joueur qui exécute la commande (fonctionne donc avec un /execute aussi) sans à avoir faire du "r=0" par exemple, ou à remettre le même sélecteur des tas de fois. De plus, si l'on fait cette commande :
Code:
execute @a ~ ~ ~ say @s
Alors la commande sera exécuté individuellement chez chacun des joueurs ! Donc chacun d'entre-eux dira son nom

Pour les advancements, on peut apparenté un peu ça à de la programmation événementielle, c'est donc un moyen bien plus efficace et précis de réaliser une commande à la résolution d'un évènement (Je peux par exemple déclencher un système si le joueur possède dans son inventaire 3 pommes, deux fleurs, 32 slimeballs renommées "Blobs" et que le joueur se trouve dans une Mansion du biome Mushroom) donc je vous laisse imaginer les possibilités !

Derniers points, et sans doute celui qui va révolutionner le Map making tel qu'on le connais, le système de fonction.
Effectivement, cela permet de faire tout un système dans un seul fichier texte, donc sans command block ! Imaginez donc une map pvp sans un seul command block ! Cela ouvre donc de grandes possibilités d'optimisation et d'organisation (pas vraiment de créations car le fonctionnement reste le même), il nous est ainsi possible d'utiliser les Rechercher/Remplacer des logiciels d'édition pour changer un tout les "ArmorStand" par des "armor_stand" d'un fichier de 1500 lignes par exemple ! Donc vraiment utile pour les mise à jours des systèmes en peu de temps. De plus, nous pouvons faire des système de coloration syntaxique qui permette de mieux s'y retrouver, voici un petit exemple :
blob-1-1920x1040.png

Avec une coloration que j'ai créés. Si elle vous intéresse, vous pouvez la retrouver à ce lien (Oui, je fais du placement de produit pour moi-même).
Mais il y a tout de même quelques points négatifs ! Déjà, il n'est pas vraiment possible, outre par des tags, de faire du conditionnel, ensuite, nous ne pouvons pas faire de smart clock non plus (Un système permettant de mettre en conditionnal tout un système sans pour autant tous les mettre un par un résultant de la superposition de deux command block repeat, celui à la base de la chain comportant la condition, et le second étant en conditional), de plus, il n'est pas réellement possible de faire une commande du style du /stat qui requiert un bloc de command pour y récupérer l'output. Dernier aspect négatif, c'est pour le débogage qui n'est pas des plus pratiques. Si vous exécuter le /function dans votre chat, alors vous aurez l'output de chacune des commandes; mais pour un système de 150 commandes, bah le chat n'est pas assez grand pour déboguer...
De par ces quelques aspects négatifs, les command blocks gardent tout de même un certain avantage dans des situations particulières, mais il est de mon avis que le fichier texte va vite prendre le relais et, peut-être au fil du temps, remplacer le command block...

Qu'en pensez-vous ?
 
Dernière édition:

WegaCraft

Viel Archi'Red
2 Janvier 2014
284
32
135
Bonsoir Oromis !

Alors, pour commencer, je suis entièrement d'accord avec toi sur le plein potentiel de ce nouveau sélecteur @s qui je pense amènera des choses plutôt cool mais qui cependant restera assez bloqué à cause des restrictions empêchant l’exécution de certaines commandes en tant que joueurs non op (ils devrait améliorer ça au moins pour /execute).

Pour le reste, les Advancements ont un réel intérêts mais reste assez dérangeant dans le fait qu'à l'heure actuelle nous ne puissions pas en ajouter dans des ressources packs (et pourtant ils en font partis ; donc ça viendra surement à la sortie finale).

Et pour la commande /function ; en effet cela va changer beaucoup de choses mais à mon avis uniquement dans l'aspect compression des systèmes. En effet, tant que nous ne pouvons pas réellement programmer (boucles / variable ...etc) cela n'importe ; à mon avis, pas grand choses à part en compression.

En tout cas j'espère que mon avis sera suffisamment constructif.
 

Oromis

Command-blocker slimesque
Staff
Modérateur
Support
11 Février 2014
3 345
2
1 053
297
24
Bretagne
Bonsoir Oromis !

Alors, pour commencer, je suis entièrement d'accord avec toi sur le plein potentiel de ce nouveau sélecteur @s qui je pense amènera des choses plutôt cool mais qui cependant restera assez bloqué à cause des restrictions empêchant l’exécution de certaines commandes en tant que joueurs non op (ils devrait améliorer ça au moins pour /execute).

Pour le reste, les Advancements ont un réel intérêts mais reste assez dérangeant dans le fait qu'à l'heure actuelle nous ne puissions pas en ajouter dans des ressources packs (et pourtant ils en font partis ; donc ça viendra surement à la sortie finale).

Et pour la commande /function ; en effet cela va changer beaucoup de choses mais à mon avis uniquement dans l'aspect compression des systèmes. En effet, tant que nous ne pouvons pas réellement programmer (boucles / variable ...etc) cela n'importe ; à mon avis, pas grand choses à part en compression.

En tout cas j'espère que mon avis sera suffisamment constructif.
Merci de ta réponse ! ^^

Pour ton premier point, le /trigger fait le taf !

Pour le second, les advancements n'appartiennent non pas aux resources packs mais à la map elle-même, ce qui est tout de même bien plus logique ^^ (Sinon, ça ne fonctionnerait pas en multi)

Pour le dernier point, les boucles sont possibles grâce à la nouvelle gamerule :)
Mais il est vrai que je ne serais pas contre l'ajout d'un bloc conditionnel :p
 
  • J'aime
Reactions: Hellixius

BlueFuSion348

Architecte en herbe
9 Mars 2012
80
1
18
111
31
Bonsoir.
Oui c'est du lourd, le @s sera très pratique, est plus performant.
/function c'est révolutionnaire, moi qui fait directement du command_block dans notepad++ puis qui transpose une par une chaque commande dans les command_block, et bien là plus besoin, le système serait déjà opérationnel. Quoi que en effet, sans conditional ça marche pas vraiment... Pourquoi pas ajouter un > avant le / en début de commande pour signaler une commande conditional ?
Les Advancements aussi c'est top, même si ça m’intéresse moins vu que je n'ai pas à les utiliser pour l'instant.
 
Dernière édition:

WegaCraft

Viel Archi'Red
2 Janvier 2014
284
32
135
Oromis a dit:
Merci de ta réponse ! ^^

Pour ton premier point, le /trigger fait le taf !

Pour le second, les advancements n'appartiennent non pas aux resources packs mais à la map elle-même, ce qui est tout de même bien plus logique ^^ (Sinon, ça ne fonctionnerait pas en multi)

Pour le dernier point, les boucles sont possibles grâce à la nouvelle gamerule :)
Mais il est vrai que je ne serais pas contre l'ajout d'un bloc conditionnel :p

Il est vrai que le trigger se trouve une solution généralement efficace pour contourner le problème des autorisations mais néamoins cela ne convient pas dans tout les cas. Par exemple, pour illustrer mes propos, imagine que tu veuille remplacer un bloc dans une zone entourant un joueur. Et bien tu es obligé de faire spawn puis tp une entité à sa position pour effectuer la commande /fill.

Au niveau des boucles, je ne sais pas si j'ai été assez clair en fait ; car je parle ici de for while switch et if . Elle reste possible à faire mais néanmoins très limitée. (sinon je ne connais pas spécialement cette gamrule ; je suis revenu sur Minecraft que récemment donc il se peut que j'aille zappé certaines choses ^^).

BlueFuSion348 a dit:
Pourquoi pas ajouter un > avant le / en début de commande pour signaler une commande conditional ?

Il viennent d'ajouter avec la méthode de /function des arguments de conditions supplémentaire si tu veux voir : https://minecraft.net/en-us/article/minecraft-112-pre-release-3?ref=launcher
 

BlueFuSion348

Architecte en herbe
9 Mars 2012
80
1
18
111
31
Il viennent d'ajouter avec la méthode de /function des arguments de conditions supplémentaire si tu veux voir : https://minecraft.net/en-us/article/minecraft-112-pre-release-3?ref=launcher
Oui de ce que j'ai compris c'est juste une condition si un sélecteur est trouvé, ou pas trouvé :
/function: "si <sélecteur>" et "sauf <sélecteur>"
Mais ça ne m'arrange pas vraiment, moi ce que je voudrais c'est des ajouts directement dans le fichier .mcfunction.
Sinon, comme tu dis, ces functions ne serviraient juste qu'à compresser des parties d'un système dans des CB. Et c'est le contraire de ce que je pensais au départ : pouvoir mettre tout un système dans un CB via le .mcfunction. Mais vu que ça ne gère pas le conditional...

sinon je ne connais pas spécialement cette gamrule ; je suis revenu sur Minecraft que récemment donc il se peut que j'aille zappé certaines choses ^^
C'est la gamerule : gameLoopFunction
Mais je ne comprend pas vraiment comment ça fonctionne, si c'est soit pour tous les .mcfunction ou un ciblé qui tournera en boucle... Nan parce que moi je voyais plutôt un command_block en repeat avec dedans la commande /function, ça reviendrait à ce gameLoopFunction... Ou alors ça boucle et attend qu'une action se produise pour lancer une function... Je ne sais pas.
 
Dernière édition:
  • J'aime
Reactions: WegaCraft

WegaCraft

Viel Archi'Red
2 Janvier 2014
284
32
135
Je dois t'avouer que ça ne m’arrange pas non plus ^^ Ils aurait du carrément faire en sorte qu'il soit possible de programmer directement en orienté objet dans les commandes blocks ou dans les functions.
 
  • J'aime
Reactions: DiscowZombie

Oromis

Command-blocker slimesque
Staff
Modérateur
Support
11 Février 2014
3 345
2
1 053
297
24
Bretagne
Il est vrai que le trigger se trouve une solution généralement efficace pour contourner le problème des autorisations mais néamoins cela ne convient pas dans tout les cas. Par exemple, pour illustrer mes propos, imagine que tu veuille remplacer un bloc dans une zone entourant un joueur. Et bien tu es obligé de faire spawn puis tp une entité à sa position pour effectuer la commande /fill.
Alors le /execute fait le travail !
Je viens à l'instant de voir cette nouveauté, bon pas terrible mais qui peut s'avérer tout de même utile, surtout pour son "unless" quoi x')
 
  • J'aime
Reactions: WegaCraft

Oromis

Command-blocker slimesque
Staff
Modérateur
Support
11 Février 2014
3 345
2
1 053
297
24
Bretagne
Et oui, contre tout étonnement, je me prénomme Théo ! :o