Vous vous êtes peut-être déjà demandé comment faire fonctionner ces mystérieux blocs faisant le bonheur des réalisateurs de map? Leur fonctionnement n’est pas si compliqué que cela à comprendre, si l’on prend le temps de se pencher dessus.

Qu’est-ce que ce bloc?

Le bloc de commandes, incorporé à Minecraft depuis la version 1.4, est sans nul doute le bloc le plus complexe et le plus puissant du jeu. Il est d’autant plus intéressant que presque chaque nouvelle mise à jour lui apporte de nouvelles fonctions. Ce bloc a pour seule (mais pas des moindres) utilité d’accomplir, sous réserve d’une activation redstone, des commandes telles que le « /give » ou « /tp ». Le bloc possède une physique « normale » et des caractéristiques redstone standard: il réagira normalement s’il est utilisé comme inverseur ou comme porte logique (ce détail est utile notamment pour la compression des circuits). Bien qu’utile principalement à la création de map, il peut être intéressant de savoir manipuler ces blocs. Il est aussi utile de savoir que si la redstone fut créée dans le but d’imiter des systèmes binaires tels que des circuits imprimés, les blocs de commandes sont eux plus proches de la programmation. A noter: tout ce qui est évoqué dans cet article est valable sur une version standard de minecraft mais il n’est pas garanti que tout fonctionne correctement sur un serveur bukkit ou sur un jeu moddé, avec des mods tels que « Single player commands ». 

Les bases

Par défaut, les blocs de commandes sont désactivés sur un serveur. Si vous souhaitez les manipuler en multijoueurs, vous devez rajouter dans le fichier « server.properties » ( situé dans le même répertoire que l’exécutable)  une ligne « enable-command-block=true ». En solo, les blocs de commandes sont déjà activés. Il n’est pas possible de fabriquer ce bloc et il n’est pas présent dans les inventaires créatifs. Ainsi, le seul moyen de l’obtenir est d’effectuer la commande « /give [joueur] 137 ». Son interface, affichable par le biais d’un clic droit sur le bloc, est composée d’un champ d’écriture pour rentrer la commande, une petite partie « rappel » qui vous sera expliquée plus tard, un bouton « terminé » (grisé sur l’image) qui permet de quitter en sauvegardant et un bouton « annuler » permettant de quitter sans sauvegarder.

Une interface plutôt sobre.

Les commandes exécutables par ce bloc sont les mêmes que celles disponibles pour les joueurs ayants les plus hauts droits, excepté quelques commandes d’administration (telles que le « /stop ») et le « /kill », une commandes est aussi présente uniquement pour les blocs: le « testfor » qui sera expliquée en détails plus loin. Le « / » devant les commandes est optionnel. De plus, il est possible via une enclume de renommer les blocs, afin des les faire « parler ».

Utile en narration non?

Lorsque vous entrez vos commandes (sur le chat uniquement), pensez à utiliser la touche « tab » pour compléter automatiquement la commande que vous aviez commencé à taper, cette fonction est très utile dans le cas où vous ne vous souviendriez que du début d’une commande. Les blocs de commande fonctionnent sur un système de ciblage, c’est ce qui est présent dans l’aide-mémoire présent sur l’interface des blocs. Il existe trois ciblages, ainsi que des paramètres disponibles afin d’affiner les recherches.

– Le « @p » visera le ou les joueurs les plus proches.

– Le « @r » visera un ou des joueurs sélectionnés de manière aléatoire.

– Le « @a » visera tous les joueurs.

Tout ces ciblages sont régis par des paramètres assez complexes mais très importants afin de sélectionner spécifiquement les joueurs voulus. Il faut inscrire ces paramètres entre crochets, juste après le ciblage, séparés entre eux par des virgules.

– « x= » | « y= » | « z= » servent à donner le centre de la recherche exemple:  @p[x=30,y=120,z=-500] sélectionnera le joueur le plus proche de cette position.

– « r= » | »rm= » donnent le rayon, soit la taille de la zone de recherche, « r= » indique le maximum, tandis que « rm= » indique le minimum exemple: @p[r=10,rm=3] recherchera le joueur le plus proche (par défaut depuis le bloc) situé à moins de 10 blocs de la commande et à plus de 3 blocs.

– « c= » indique le nombre de joueurs sélectionnés exemple: @p[c=2] recherchera les deux joueurs les plus proches du bloc.

– « l= » | « lm= » spécifie le niveau maximum et le niveau minimum (respectivement), les valeurs que vous entrerez sont en point d’expérience et non en niveaux exemple: @a[l=1000,lm=500] recherchera tout les joueurs ayant entre 500 et 1000 points d’expérience.

– « m »  donne le mode de jeu, survie vaut 0, créatif vaut 1 et aventure vaut 2 exemple: @p[m=2] recherchera le joueur en mode aventure le plus proche du bloc.

Avec l’arrivée des tableaux de scores, de nouveaux paramètres relatifs à ceux-ci sont apparus (ces paramètres nécessitent des manipulations en amont pour initialiser les objectifs):

– « score_nom= » et « score_nom_min »  (remplacez « nom » par le nom de l’objectif que vous souhaitez tester)  servent à indiquer le nombre de points maximum et minimum (respectivement) que les joueurs devront avoir dans l’objectif spécifié exemple: @a[score_meurtre=10, score_meurtre_min=5] recherchera tout les joueurs ayant entre cinq et dix points dans l’objectif « meurtre ».

– « team=nom » et « team=!nom » sélectionne les joueurs étant ou n’étant pas dans l’équipe dont le nom est inséré à la place de « nom » exemple: @a[team=france, team=!paris] recherchera les joueurs faisant parti de l’équipe « France » mais ne faisant pas parti de l’équipe « Paris ».

Les règles

Il existe 7 « règles de jeux » affectant le feux, les monstres ou autres :

« /gamerule doFireTick true/false » active ou désactive la propagation du feu,

« /gamerule doMobSpawning true/false » active ou désactive l’apparition des monstres,

« /gamerule doMobLoot true/false » active ou désactive les objets trouvés en tuant des monstres,

« /gamerule doTileDrops true/false » active ou désactive l’apparition des blocs que l’on peut ramasser une fois qu’un bloc explose,

« /gamerule commandBlockOutput true/false » active ou désactive les messages tels que [@: Given Stone (ID 1)*1 to LenainPACA],

« /gamerule keepInventory true/false » active ou désactive la conservation de l’inventaire après un mort (les niveaux restent aussi si cette règle est activée),

« /gamerule mobGriefing true/false » active ou désactive la destruction/ le vol de blocs par les monstres.

Liste des commandes

Cette liste n’est pas exhaustive, elle ne présente que les commandes jugées utiles, le jeux en possédant certaines dont l’utilité est difficile à cerner, cette liste ne présentera pas non plus les commandes semblant inutiles aux blocs de commandes.

  • « /tell <àqui> <message> » envoie un message privé à <àqui> s’il est connecté.
  • « /clear <qui> [objetid] » supprime l’inventaire de <qui>, uniquement [objetid] si la valeur d’identification (ID) est spécifiée.
  • « /difficulty 0/1/2/3 » règle la difficulté du serveur, 0 paisible, 1 facile, 2 normal, 3 difficile.
  • « /effect <qui> <effetid> <temps> <niveau> » Affecte le joueur <qui> de l’effet spécifié ( écrit sous la forme de son identifiant, par exemple 14 pour l’invisibilité), pour <temps> secondes, le niveau spécifie la puissance de l’effet ( l’effet 1 puissance 255 (le maximum) correspond à une sorte d’hyper vitesse) on peut obtenir une durée infinie en entrant 999 999 secondes.
  • « /gamemode 0/1/2 <qui> » Assigne le mode de jeu 0 (survie), 1 (créatif) ou 2 (aventure) à <qui>.
  • « /give <qui> <objet> <combien> »  donne <combien> <objet> (sous la forme de l’ID d’objet) à <qui>.
  • « /spawnpoint <qui> x y z » définie le point d’apparition de <qui> aux coordonnées x, y et z, s’ils ne sont pas spécifiés, au lieu de la commande.
  • « /time set <valeur/day/night> » définie <valeur/day/night> comme moment de la journée.
  • « /toggledownfall » active ou désactive la pluie.
  • « /tp <qui> <versqui/coords> » téléporte <qui> vers, un autre joueur (<versqui>) ou vers des coordonnées spécifiées (<coords>).
  • « /xp <combien>/<combien>L <qui> » donne <combien> d’expérience à <qui>, si l’on entre « L » après combien, la valeur devient des niveaux d’expérience et non plus des points.

Les tableaux de scores

Un exemple de tableau de score.

Bien que les blocs de commandes ne soient pas nécessaire à leur fonctionnement, il est toujours utile de savoir se servir de ces tableaux, ne serait-ce que pour afficher le nombre de morts ou de meurtres pour chaque joueur dans une partie sur une quelconque map. Les tableaux de scores étant quelque chose d’extrêmement théorique, il est conseillé de tester les commandes en jeu. Toutes les commandes relatives au tableau de score commence par « /scoreboard » s’ensuivent ensuite trois distinctions : – « /scoreboard objectives » avec, à placer après le « objectives » :

  •   « list » pour voir les objectifs existants,
  •   « remove <nom> » pour supprimer l’objectif « nom »,
  •   « add <nom> <type> » pour créer un objectif du nom et du type spécifié.

Il existe cinq types d’objectifs : « dummy » dont les valeurs sont gérées manuellement, par le biais de commandes exécutées par blocs de commandes ou par le joueur, « deathCount » qui est le nombre de morts des joueurs, « playerKillCount » compte le nombre de joueurs tués, « totalKillCount » recense le nombre de joueurs et de monstres tués, et « health » vaut les points de vie de chaque joueur, il n’est pas manipulable par des commandes (on ne peut pas changer sa valeur).

  • La commande « /scoreboard objectives setdisplay <emplacement> <nom> » permet d’afficher les scores des joueurs dans l’objectif sélectionné (<nom>) dans l’emplacement indiqué. Les emplacements sont: « list » à droite des pseudonymes lorsque l’on appuie sur la touche « tab », « belowname » sous le pseudonyme du joueur, « sidebar » dans un tableau, à droite de l’écran. Il n’est pas possible d’afficher deux objectifs au même emplacement.

– « /scoreboard player » qui gère les manipulation des scores relatifs au joueurs :

  • « set <joueur> <objectif> <combien> » assigne à la valeur dedans,
  • « remove/add <joueur> <objectif> <nombre> » supprimera ou ajoutera<nombre> points a <joueur> dans <objectif>,
  • « reset <joueur> » supprime toutes les valeurs de tout les objectifs de <joueur>, le retirant par la même occasion des emplacements d’affichage de score.

– « /scoreboard teams »  régissant les équipes :

  • « list » fait une liste des équipes et des joueurs en faisant parti,
  • « add/remove <nom> » ajoute ou supprime l’équipe <nom>,
  • « join <noméquipe>  <joueur> » ajoute <joueur> à l’équipe <noméquipe>
  • « leave <joueur> » supprime <joueur> de l’équipe dont il fait parti
  • « option <noméquipe> friendlyfire true/false » active ou désactive le tir ami dans une l’équipe <noméquipe>
  • « option <noméquipe> color <couleur> » permet de modifier la couleur de <noméquipe>, les couleurs sont à inscrire en anglais, il existe un grand nombre d’options d’écriture.
  • « option <noméquipe>  seeFriendlyInvisibles true/false » permet ou non au joueur d’une même équipe de se voir malgré l’invisibilité.
Liste des commandes pouvant vous être utile même si vous ne souhaitez pas maîtriser les tableaux de score:
  •   « /scoreboard objectives add <nom> playerKillCount » et « /scoreboard objectives setdisplay sidebar/list <nom> » permettent d’afficher le nombre de meurtres des joueurs dans un tableau à droite de l’écran (sidebar) ou sur la liste s’affichant avec la touche « tab ».
  •   « /scoreboard objectives add <nom> health » et « /scoreboard objectives setdisplay list/belowname <nom> »  permettent d’afficher les points de vie des joueurs, sous leur nom (belowname), ou par l’intermédiaire de la touche tab.
  • Voici aussi la manière de créer et utiliser les équipes:
Ces lignes sont personnalisables.

Techniques avancées

Ces techniques nécessitent une maîtrise des bases, elles ne sont bien sûr pas toutes recensées, de nouvelles se créant chaque jour, mais en voici quelques unes utiles et pas forcément évidentes. Le « /testfor » n’est pas une technique mais une commande du bloc complexe mais intéressante: elle permet,  si un comparateur est placé en sortie du bloc, de tester les paramètres, si un (ou plusieurs) joueur est trouvé en suivant les paramètres, un courant apparaîtra dans le comparateur, vous permettant de rajouter un autre bloc, qui ne fonctionnera que si le premier bloc a trouvé juste. En revanche, la commande testfor nécessite une activation redstone non continue : il vous faudra trouver un moyen de connecter le bloc, à une boucle, un bouton, ou quoi que ce soit d’autre.

Les tableaux de score possèdent une fonction extrêmement utile aux blocs de commandes, on peut grâce à ceux-ci créer des variables, et ainsi des conditions, voire des boucles… En effet, en déclarant un objectif de type « dummy », on peut lui donner manuellement des valeurs pour indiquer, par exemple, un peu de téléportation disponible uniquement si le joueur est passé par certains endroits. Ainsi, en testant ensuite l’objectif « dummy » créé, on peut par le biais des paramètres établir un système de conditions.

Un exemple de conditions, sous un éditeur de texte

Si un comparateur redstone est placé en sortie d’un bloc effectuant une commande incorporant des paramètres ( du type @p[x=120,y=60,z=60,r=3] par exemple), dans le cas où le bloc trouve un joueur et lui affecte la commande, un courant d’une puissance de un apparaîtra en sortie, ce courant ne s’éteindra que dans le cas où le bloc est réactivé, mais ne retrouve pas un joueur correspondant.

On peut se servir de blocs de commandes afin de réaliser les systèmes sans fils, par le biais d’objectifs, ou de niveaux d’expérience.

Il vous a été présenté comment utiliser les blocs de commandes, mais la maîtrise de ces blocs ne résulte que de l’entrainement. Ainsi dans peu de temps vous pourrez créer exactement ce dont vous aurez besoin. Il est aussi très conseillé de visiter des cartes connues pour s’inspirer des systèmes utilisés. Vous êtes maintenant parés pour créer ce que vous voulez.