8 votes

Comment puis-je cibler une entité aléatoire de n'importe quel type en utilisant @r ?

Alors que @r ne peut cibler que des entités de joueur, l'ajout de l'option type lui permet de cibler d'autres types d'entités :

/say @r[type=ArmorStand]

Mais à cause de cette exigence, vous ne pourriez cibler que tout le monde, sauf une entité spécifique :

/say @r[type=!Player]

Si vous tentez d'utiliser un ID non valide, vous obtiendrez un message d'erreur indiquant "Entity type [name] is invalid", plutôt que de cibler toutes les entités à l'exception du type non valide.

/say @r[type=!InvalidID]

Comment pourrais-je causer @r pour cibler toutes les entités possibles sans en exclure aucune ?

7voto

Skylinerw Points 12529

Le site type saisit une liste d'identifiants de chaîne de caractères dans la même liste d'onglets que celle qui est utilisée pour l'enregistrement des données. /summon utilise. Si l'entrée dans le type ne figure pas dans cette liste, le sélecteur lèvera cette erreur. Le site type ajoute spécifiquement "Player" à cette liste, ce qui explique que "Player" n'apparaisse pas dans la liste des paramètres de l'application /summon L'onglet est complet.

Parmi cette liste figure "LightningBolt", qui n'est en fait pas un ID d'entité de sauvegarde valide. Les identifiants valides sont ceux qui apparaissent dans le champ EntityList qui est ce que la fonction "tab-complete" récupère de la classe antes de en ajoutant de force à la liste "LightningBolt". Il n'est ajouté essentiellement que pour des raisons de commodité avec /summon qui traite "LightningBolt" directement plutôt que de passer par un processus automatisé pour toute autre entrée.

Ainsi, vous pouvez utiliser en toute sécurité type=!LightningBolt . Les éclairs eux-mêmes ne peuvent pas être ciblés en premier lieu. Ils ne sont pas ajoutés à la liste interne des entités créées, à partir de laquelle les sélecteurs d'entités obtiennent des cibles. Même s'ils étaient ajoutés à cette liste mais qu'ils restaient des entités hors jeu de sauvegarde, "LightningBolt" ne leur est toujours pas associé et le sélecteur les ciblerait de toute façon.

Pour réitérer : les éclairs ne sont pas exclu par le sélecteur parce qu'ils ne sont pas inclus dans la liste des cibles possibles pour commencer, et l'identifiant "LightningBolt" ne leur est pas non plus associé autrement que comme moyen de création via /summon . Il est tout simplement impossible de cibler les éclairs.

Mais comme le type paramètre croit que "LightningBolt" est une identité valide en raison de la /summon une liste complète d'onglets, il peut être utilisé sans déclencher une erreur. Ce qui suit va cibler une entité aléatoire parmi toutes les entités possibles avec les sélecteurs :

/say @r[type=!LightningBolt]

Il ciblera également les entités non liées au gibier d'eau, telles que les bobines de pêche. Bien que les cannes à pêche n'aient pas d'identifiant, elles n'ont pas l'identifiant "LightningBolt" qui satisfait le sélecteur. Contrairement aux éclairs, les cannes à pêche sont ajoutées à la liste des entités créées, ce qui explique pourquoi elles peuvent être ciblées par les sélecteurs alors que les éclairs ne le peuvent pas.

3voto

user206871 Points 31

J'ai une solution !

D'abord, vous devez écrire ArmorStand comme ceci : armor_stand et de l'obtenir au hasard : @e[type=armor_stand,sort=random,limit=1]

La limite = 1 le limite à une seule entité, ce qui est exactement ce que vous voulez.

Exemple : /execute as @e[sort=random,type=armor_stand,limit=1] at @s run summon minecraft:lightning_bolt

J'espère pouvoir vous aider :D

Editar pour cibler toutes les entités, il suffit de supprimer le type=armor_stand

Exemple : /execute as @e[sort=random,limit=1] at @s run summon minecraft:lightning_bolt

Cela ne fonctionne qu'en 1.13+ !

3voto

Richie Frame Points 1800

Dans les versions plus récentes de Minecraft, vous pouvez définir le mode de tri qui choisira comment les cibles sont triées. Vous pouvez ensuite limiter le nombre d'entités ciblées à 1, de sorte que vous ne receviez qu'une seule entité.

Voici une commande qui vous permet de le faire :

/say @e[sort=random,limit=1]

La liste des cibles est triée de manière aléatoire, puis la limite étant de 1, cela signifie que seule la première de cette liste est sélectionnée, ce qui vous donne essentiellement une sélection d'entités aléatoires.

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X