3 votes

Comment puis-je exécuter une commande sur tous les Endermen sur les îles extérieures de l'End dans Minecraft 1.13?

Je joue à Minecraft 1.13 et je veux faire apparaître aléatoirement des Shulkers sur les îles de l'End extérieures, tout en respectant le mobcap. Mon idée pour y parvenir était de convertir des Endermen aléatoires en Shulkers, en utilisant une forme de chance et de randomisation. Après chaque cycle, tous les Endermen recevraient une balise, indiquant qu'ils ont déjà été traités par les commandes, de sorte que tous les Endermen ne finissent pas en Shulkers.

La première étape pour cela serait de trouver tous les Endermen sur les îles de l'End extérieures. C'est là que les choses se compliquent (déjà).

Ma première constatation a été que les blocs de commande dans l'Overworld ne peuvent pas cibler les entités dans l'End. Pour résoudre ce problème, j'ai transformé ma commande en une fonction et abonné ma fonction à la règle de jeu GameLoopFunction. Dans cette fonction, j'ai pu cibler tous les Endermen dans l'End en utilisant la commande suivante :

execute as @e[type=enderman,nbt={Dimension:1}] run say @s

Maintenant, pour ne cibler que les Endermen sur les îles extérieures, je dois exécuter ma commande à l'emplacement 0 0 0, puis cibler tous les Endermen qui se trouvent à plus de 256 blocs de ce point. J'ai exécuté la commande suivante pour tester si ma commande fonctionnait toujours avec ce décalage :

execute offset 0 0 0 as @e[type=enderman,nbt={Dimension:1}] run say @s

Cela fonctionnait également bien. Pour terminer la commande, j'ai ajouté un paramètre de distance au sélecteur de cible comme ceci :

execute offset 0 0 0 as @e[type=enderman,nbt={Dimension:1},distance=256..] run say @s

Malheureusement, aucun Enderman n'a été ciblé du tout. Je m'attendais à ne rien obtenir sur l'île principale, mais je m'attendais à ce que mon chat soit bombardé dès mon arrivée sur les îles de l'End extérieures. Le chat est resté vide.

REMARQUE : Toutes les commandes précédentes ont été exécutées alors que j'étais sur les îles de l'End extérieures.

Pour m'assurer que le paramètre distance fonctionnait, j'ai fait un test dans l'Overworld :

/execute offset 0 0 0 as @e[distance=256..] run say @s

Cette commande devrait afficher mon nom dans le chat si je suis à 256 blocs de 0 0, ce qu'elle a fait, donc le paramètre de distance fonctionnait très bien. La question est : comment cibler les Endermen sur les îles de l'End extérieures ?

1voto

Skylinerw Points 12529

Lorsque vous utilisez un sélecteur qui inclut des paramètres de liaison de dimension (x/y/z/dx/dy/dz/distance), la dimension d'exécution sera limitée à la dimension de l'émetteur de commande. La fonction gameLoopFunction exécutera les commandes avec l'Overworld comme dimension d'exécution.

Par exemple, la commande suivante dit les noms de toutes les entités dans toutes les dimensions chargées car aucun paramètre de liaison de dimension n'est utilisé :

dire Toutes les entités : @e

Une fois qu'un des paramètres est inclus, la commande ne dira que les noms des entités dans la dimension de l'émetteur de commande. Si la commande était exécutée dans un bloc de commande dans l'Overworld, elle ne dira que les noms des entités dans l'Overworld. Si le bloc de commande était dans l'End, il ne dira que les noms des entités dans l'End :

dire Entités dans la dimension actuelle : @e[x=0]

Étant donné que votre commande s'exécute via gameLoopFunction et inclut distance=256.., elle sera limitée à la sélection des endermen dans l'Overworld (dont aucun n'aura leur balise Dimension naturellement définie sur 1).


En 1.12, vous contourneriez cela en utilisant /execute pour changer l'émetteur de commande en un émetteur connu pour être dans la dimension désirée, qui exécutera ensuite la commande que vous souhaitez affecter seulement à cette dimension. Par exemple, en supposant qu'une entité avec le tag "end" existe seulement dans l'End, le suivant dira les noms de toutes les entités dans la dimension de l'End même si le bloc de commande (ou gameLoopFunction) qui exécute cette commande n'est pas dans l'End :

exécuter @e[tag=end] ~ ~ ~ dire Entités dans l'End : @e[x=0]

Mais malheureusement pour la 1.13, il y a actuellement un bug qui empêche la dimension d'exécution de changer vers la cible pertinente dans /execute : https://bugs.mojang.com/browse/MC-122893

Ce bug doit être corrigé pour utiliser cette méthode. Sinon, vous devrez avoir des blocs de commande physiques dans l'End, même si cela ne vous aidera pas s'ils ne sont pas chargés.

0 votes

Ce bug a été corrigé dans la dernière capture instantanée (18w02a) !!

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