Accueil / Tutoriels / [Tutoriel] Détecter des entités touchant le sol
Détecter - Une

[Tutoriel] Détecter des entités touchant le sol

[Tutoriel] Détecter des entités touchant le sol
4.3(86.67%) 6 votes

À première vue, un système permettant de détecter des entités au sol ne semble pas particulièrement utile. Pourtant, il trouve un intérêt tout particulier pour le mapmaking, notamment pour donner des effets à des projectiles ou pour conférer certaines propriétés à des mobs. Et si des méthodes existent déjà pour parvenir à ce résultat, TheRedEngineer est parvenu à une solution moins gourmande, plus compacte, et surtout plus élégante, en utilisant les propriétés du feu. En effet, le feu ne pouvant être placé que sur le sol, il remplit parfaitement cet office de détecteur. Voici comment fonctionne ce système dans le détail.

Détecter un item

Pour détecter un item, les choses sont rendues plus faciles par l’existence d’un tag indiquant si l’item est au sol ou non. Aussi, avec un premier command block, créez un scoreboard pour mettre en place votre mécanisme :

scoreboard objectives add ITEM dummy

Ce command block doit être réglé en “Repeat”, “Unconditional” et “Always Active” et orienté vers le haut. Vous pouvez remplacer “ITEM” par tout autre nom que vous souhaitez donner à votre scoreboard. Ensuite, posez dessus un second command block “Chain” avec les paramètres “Unconditional” et “Always Active”. Écrivez-y la commande suivante :

scoreboard players set @e[type=item] ITEM 1 {OnGround:1b,Item:{id:”id de l’item que vous souhaitez détecter“,Count:1b}}

Si vous lancez l’item souhaité au sol, le scoreboard indiquera alors 1. À partir de là, vous pouvez commencer à bâtir des mécanismes plus complexes à partir de cette détection.

Notez que ce système marche pour les mêmes items, peu importe leur localisation. Si vous souhaitez détecter la présence de plusieurs items différents au sol, construisez autant de systèmes que de types d’items.

détecter

Détecter un projectile ou un mob

Pour les projectiles ou les mobs, impossible de passer par un tel tag. D’où l’intérêt du feu, pour la propriété susmentionnée : avec la commande /execute, il est possible d’invoquer du feu à partir des coordonnées relatives d’un projectile donné. Ici, on va faire en sorte que chaque boule de neige tombant au sol invoque un creeper qui explose à son point d’impact. On va donc faire en sorte que sous toutes nos boules de neige soit généré du feu qui remplace l’air qui s’y trouve. Pour cela, on pose un command block réglé sur “Repeat”, “Unconditional” et “Always Active” avec la commande suivante.

/execute @e[type=snowball] ~ ~ ~ fill ~ ~ ~ ~ ~ ~ fire 0 replace air

Si jamais le projectile est dans l’air, la commande sera exécutée correctement mais le feu ne sera pas généré, puisqu’il a besoin d’un bloc solide sur lequel se fixer. Si jamais le projectile est au sol, toutefois, le feu pourra être généré. Avec la commande ci-dessous, on va donc détecter la présence de feu sous une boule de neige et, le cas échéant, attribuer un tag spécial (appelé ici GROUND) à toute boule de neige qui remplit cette condition. Collez la commande dans un command block placé au-dessus du premier, avec les paramètres “Chain”, “Unconditional” et “Always Active”.

​/execute @e[type=snowball] ~ ~ ~ detect ~ ~ ~ fire -1 scoreboard players tag @e[type=snowball,c=1] add GROUND

Maintenant que le tag est attribué, il est temps de déclencher l’effet. Ici, c’est une explosion de creeper, mais vous pouvez choisir n’importe quel autre effet d’impact ou simplement vous servir de scoreboards pour déclencher des effets plus complexes. Placez donc un command block au-dessus du précédent, avec les mêmes paramètres que celui-ci, et collez-y la commande suivante :

​/execute @e[type=snowball,tag=GROUND] ~ ~ ~ summon creeper ~ ~ ~ {ExplosionRadius:0,Fuse:0}

Il ne vous reste plus qu’à éteindre le feu. Pour cela, placez un command block au-dessus du précédent, toujours avec les mêmes paramètres, et collez-y la commande suivante :

​/execute @e[type=snowball,tag=GROUND] ~ ~ ~ fill ~ ~ ~ ~ ~ ~ air 0 replace fire

Pour finir, détruisez les boules de neige étant effectivement tombées au sol pour qu’elles disparaissent du système. Pour cela, placez un command block au-dessus du précédent, toujours avec les mêmes paramètres, et collez-y la commande suivante :

​/kill @e[type=snowball,tag=GROUND]

Un aperçu de la structure.

détecter

Vous avez désormais toutes les cartes en main pour détecter facilement des entités au sol. Quelles applications imaginez-vous à un tel système ? Connaissez-vous d’autres utilisations à cette propriété du feu ? Dites-le nous dans les commentaires !

Image de Une réalisée par Biboush.

A propos de SpookyPowa

Knowledge is Power !

Ceci vous intéresse peut être

Installer un serveur Minecraft sur un VPS Debian

Apprenez comment installer un serveur Minecraft, Vanilla, Spigot ou Forge, sur un VPS utilisant Debian !

Rédiger une réponse

7 Commentaires sur "[Tutoriel] Détecter des entités touchant le sol"

Prévenez moi :
avatar
 
Trier par:   Commentaires récents | Commentaires ancients | Les mieux notés
Membre

Merci pour ce genre de tuto !

Zefinder
Membre

Il y a aussi une autre méthode que consiste en appliquant un tag a un item au lieu de mettre un un objectif. Cependant, cette méthode est effectivement hyper pratique ^^

Actinium_MC
Invité

Un truc comme l’épreuve de Fort Boyard où on doit aller attraper un truc sans toucher le sol, si on le touche on meurs! Je suis sûr qu’il y a beaucoup d’utilisations possibles à ce système!

Membre

Merci 👍

wpDiscuz