Cet article fait partie d’une série servant à enseigner l’art du développement sur Minecraft. Vous pourrez retrouver l’introduction et le sommaire en cliquant ici.
Suite aux 3 premiers cours, vous devriez déjà être capable de réaliser un bon nombre de systèmes. Pour bien assimiler les notions vu jusqu’ici, nous vous proposons un premier entraînement qui va faire appel à la plupart des connaissances apprises. A chaque entraînement, vous disposerez de 3 niveaux:
- Débutant: si vous … débutez, les exercices sont très simples et très guidés, n’admettent généralement qu’une seule solution qui est clairement explicité. Ils font d’avantage appel aux connaissances qu’a la réflexion.
- Intermédiaire: si vous trouvez le premier trop simple, vous pouvez vous attaquer à ce niveau, qui vous demander de raisonner un peu plus en utilisant ce que vous connaissez. Vous disposerez également d’une ou plusieurs aides, mais pas de correction car les problèmes de ce niveau commencent à avoir une multitude de solutions. Vous donner une correction impliquerait de vous conseiller une façon de penser, ce qui n’est pas l’objectif. Si vous souhaitez faire valider votre système, envoyez le via un lien dans l’espace commentaire ou partagez-le nous sur notre Discord.
- Expert: si vous êtes déjà Mapmaker, nous vous proposons quelques exercices qui peuvent mettre votre cerveau à ébullition. Vous devrez exploiter certaines mécaniques particulière des commandes, demandant ainsi de raisonner en profondeur avec une parfaite maîtrise des commandes. Pour certains des problèmes, vous aurez la possibilité de vous aider (lorsque ce sera indiqué) de la Gunivers-Lib, qui résoudra une partie du problème. Vous n’aurez pas d’aide supplémentaire ni de correction. Si vous souhaitez vraiment montrer que vous êtes le patron, vous devrez vous débrouiller pour recréer les outils que cette Lib vous offre ;)
Débutant: Créer un radar
Vous sentez-vous d’attaque à créer un radar à ennemis de toute pièce ? Si oui, tant mieux. Si non, on va le faire quand même. On va donc créer notre premier système qui permettra d’afficher les entités autres que vous dans un certain rayon autour des radars que vous placerez sur votre map. Pour l’instant, ce dernier sera assez rudimentaire mais nous étofferons ses capacités au fur et à mesure du guide ! Votre petit radar deviendra une vrai forteresse armée jusque aux dents, vous verrez ;)
Bon, concrètement, le système derrière devrait ressembler à ça :
Jusque ici ça ne fait pas vraiment rêver, nous vous l’accordons, mais ce n’est pas l’apparence – ni la taille – qui compte !
Objectif
Vous aurez alors 4 objectifs qui nécessiteront 3 commandes :
- Faire un sublime et majestueux bruit de radar (vous savez, le “bip … bip … bip” que font les sous-marin).
- Faire apparaître toutes les entités (sauf vous) qui s’approchent du radar (~30 blocs).
- Donner un effet de poison aux inconscients qui s’approchent un peu trop près (~5 blocs).
- Le radar sera caractérisé par un armor-stand nommé “Radar” permettant ainsi d’en poser autant que l’on veut.
Essayez dès maintenant de réaliser ce système. Si vous n’y parvenez pas, continuez à lire, nous n’allons pas vous abandonner, pas d’inquiétude !
Aide
Dans le premier command-block, nous allons commencer par faire le bruit du radar. Pour cela, le système de redstone va activer les command-blocks environ une fois par seconde (9 ticks redstone pour être exact. Contrairement au tick minecraft, 1 tick redstone = 0.1 seconde). Vous devrez alors écrire une commande dans le premier command-block permettant de produire ce son. Rappelez-vous, il doit partir d’une armor-stand nommée “Radar”, il va donc falloir vous souvenir du cours sur les “/execute” et prendre connaissance des différentes commandes qui existent présentes sur la page Gamepedia.
Dans le deuxième command-block, vous ferez de même, mais cette fois-ci, le “/execute” ne fera pas un “/playsound” mais un “/effect” afin de donner l’effet de surbrillance aux entités qui s’approchent. Mais attention, cette effet ne doit pas vous être donné ! Si vous ne savez pas comment restreindre les cibles, nous vous invitons à relire le chapitre portant sur les Blocs et Entités. Enfin dans le dernier command-block, vous devrez donner l’effet de poison. Cette fois-ci, c’est rigoureusement la même chose, mais avec une distance différente.
Correction
Vous devriez normalement avoir quelque chose de similaire à ces 3 commandes dans vos command-blocks :
Commande |
Description |
execute at @e[type=armor_stand,name=Radar] run playsound minecraft:block.note_block.chime block @a[distance=..30] ~ ~ ~ 2 1 1 |
Créé le bruit du radar |
execute at @e[type=armor_stand,name=Radar] run effect give @e[name=!VotrePseudo,distance=..30] glowing 1 1 true |
Donne l’effet de surbrillance |
execute at @e[type=armor_stand,name=Radar] run effect give @e[name=!VotrePseudo,distance=..5] poison 1 1 true |
Donne l’effet de poison |
Si vous n’avez pas réussi, pas d’inquiétude ! Relisez tranquillement les chapitres qui vous ont un peu fait défaut lors de ce petit exercice. ;)
Intermédiaire: Mines antipersonnel
Un radar c’est bien, mais ce n’est pas assez explosif ! Nous allons donc maintenant nous attaquer à la création de mines antipersonnel.
Objectifs:
- Pouvoir créer une mine en posant un porte-armure invisible renommée “Mine”
- Cette mine ne doit être activé que si un bloc de TNT est présent en dessous (à la façon d’une plaque de pression)
- Lorsque vous vous approcherez de la mine, celle-ci émettra un bip pour vous alerter et vous éviter de marcher sur vos propres mines.
- Au moment de placer la mine, un fil doit se poser, permettant d’entrevoir le présence de la mine
- Lorsqu’un joueur passe dessus, la mine fait exploser la TNT présente en dessous
Essayez dès maintenant de réaliser ce système. Si vous n’y parvenez pas, continuez à lire, nous n’allons pas vous abandonner, pas d’inquiétude !
Aide 1
Afin de rendre le porte armure parfaitement invisible et que les joueurs ne puissent pas le casser en le frappant, vous devrez modifier certaines propriétés du porte armure. Ces propriétés sont accessibles via la manipulations des NBT. Vu que nous n’avons pas encore vu comment faire ça, voici la commande exacte que vous devrez exécuter lors de la création du porte armure:
data modify entity @s {Invisible:1,Marker:1}
De la même façon, lors de l’allumage de la TNT, vous devrez renseigner le NBT “Fuse” qui permettra de déterminer le temps entre l’activation et l’explosion.
Aide 2
Pour détecter qu’un joueur passe sur la mine, vous avez plusieurs solutions:
- détecter la présence d’une joueur dans un petit rayon
- détecter la présence d’un joueur entre deux coordonnées
- détecter si le joueur passe au dessus d’un bloc donné
Dans un souci de précision et d’optimisation du nombre de commandes, nous allons ici faire un cumul des solutions 1 et 3, ce qui donnerait quelque chose comme ça:
execute at @e[type=armor_stand,name=Mine] at @a[distance=..1] if block ~ ~-2 ~ tnt run …
Une commande complexe ! Ou pas ?
Regardons cette commande étape par étape et traduisons là en français. Ça nous donnerait: “exécuter, à l’endroit où se trouvent les portes armure qui s’appellent “Mine”, l’instruction suivante: exécuter à l’endroit où se trouvent les joueurs qui sont à moins d’un bloc de distance, si le bloc présent deux blocs en dessous est une TNT, l’instruction suivante: …”
Si ce n’est toujours pas très clair, c’est parce que, malgré l’intégration d’une syntaxe correcte à notre instruction, nous n’avons pas modifié l’ordre des informations, qui, en français, est inversé. Dans notre cas, la phrase donnerait: “exécuter sur le joueur à moins d’un bloc de distance d’un porte armure nommée ‘Mine’, uniquement si il y a un bloc de TNT deux blocs en dessous de lui …”
Expert: Tourelle automatique
Bon, même si on a notre dose d’explosions, les mines ça reste peu efficace comme défense car on peut facilement les éviter. Que dites-vous de faire une tourelle automatique ?
Objectif:
- Placer une tourelle automatique en posant un porte armure nommée “turret”.
- Cette tourelle ne doit fonctionner que si elle est placé sur un beacon.
- Le porte armure doit être visible avec une tête de dragon qui servira à indiquer où la tourelle vise.
- Elle devra cibler les joueurs s’approchant à 30 blocs, les alerter par un son et en mettant la tourelle en glowing.
- IMPORTANT : La tourelle ne doit pas détecter un joueur si ce dernier est caché par un bloc !
Indication:
Vous aurez la possibilité de réaliser ce système de deux façon différentes:
- Par vos propres moyens (vous n’utiliserez aucun outil, vous partirez de 0). Indication: pour éviter d’avoir des fonctions complexes, nous jouerons ici avec les coordonnées locales.
- Utiliser les outils outils « can_see », « get_vector_as_to_at » et « vector_to_motion » de la Gunivers-Lib. Cette solution, bien plus simple et rapide à mettre en œuvre que la première aura pour avantage d’être plus précise et modulable, mais ne vous permettra pas de ben saisir tout ce que nous avons évoqué. Ainsi, nous vous recommandons de réaliser la première solution avant de vous essayez à celle-ci.
Merci beaucoup !
A vrai dire, ces exercices sont fait pour justement montrer que le développement dans Minecraft n’a rien de réellement compliqué. Leur réalisation fait avant tout appel à un raisonnement qui doit être appliqué en amont (sans même penser aux commandes à utiliser ou a n’importe quoi d’autre, juste faire une liste des étapes, comme une recette de cuisine). Le plus compliqué est de connaitre les différentes commandes et leur syntaxe, mais après ça, une fois que l’idée est là, la réalisation est facile.
Sacré challenge ! Sympa comme article ^^