3 votes

Comment puis-je /exécuter une commande sur tous les Endermen des î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 extérieures, tout en respectant le mobcap. Mon idée pour faire cela, était de convertir des Endermen aléatoires en Shulkers, en utilisant une certaine forme de chance et de randomisation. Après chaque cycle, tous les Endermen recevraient un tag, indiquant qu'ils ont déjà été adressés par les commandes, de sorte que tous les Endermen ne finissent pas en Shulkers.

La première étape serait de trouver tous les Endermen sur les îles périphériques. C'est là que les choses tournent mal (déjà).

Ma première constatation a été que les blocs de commande dans l'Overworld ne peuvent pas s'adresser aux mobs dans l'End. Pour résoudre ce problème, j'ai transformé ma commande en une fonction et j'ai inscrit ma fonction à l'adresse de la fonction GameLoopFunction gamerule. Dans cette fonction, j'ai pu m'adresser à tous les Endermen à la fin en utilisant la commande suivante :

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

Maintenant, afin de ne s'adresser qu'aux Endermen des îles extérieures, je dois exécuter ma commande à l'emplacement 0 0 0 et ensuite m'adresser à tous les Endermen qui sont à plus de 256 blocs de ce point. J'ai exécuté la commande suivante pour tester si ma commande fonctionne toujours si j'utilise ce décalage :

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

Cela fonctionnait également très 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 Endermen n'a été abordé. Je m'attendais à n'obtenir aucun résultat sur l'île principale, mais je m'attendais à ce que mon chat soit surchargé dès mon arrivée sur les îles périphériques. Le chat est resté vide.

NOTE : Toutes les commandes précédentes ont été exécutées alors que j'étais dans les îles de l'extrémité extérieure.

Pour s'assurer que le distance Le paramètre a fonctionné, j'ai fait un test dans l'overworld :

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

Cette commande devrait imprimer mon nom dans le chat si je suis à 256 blocs de 0 0, ce qui a été le cas, donc le paramètre de distance a bien fonctionné. La question est : comment puis-je m'adresser aux endermen des îles périphériques ?

1voto

Skylinerw Points 12529

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

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

say All entities: @e

Une fois que l'un des paramètres est inclus, la commande ne dira que les noms des entités de la dimension de l'expéditeur de la commande. Si la commande est exécutée dans un bloc de commande dans l'Overworld, elle ne donnera que le nom des entités de l'Overworld. Si le bloc de commande se trouvait dans l'Extrême, il ne donnera que les noms des entités de l'Extrême :

say Entities in the current dimension: @e[x=0]

Puisque votre commande est exécutée via gameLoopFunction et comprend distance=256.. il sera limité à la sélection d'endermen dans l'Overworld (dont aucun n'aura son nom de famille). Dimension naturellement fixé à 1).


En 1.12, vous contourniez ce problème en utilisant /execute pour changer l'expéditeur de la commande en une personne connue pour être dans la dimension souhaitée, qui exécutera alors la commande que vous souhaitez pour n'affecter que cette dimension. Par exemple, en supposant qu'une entité avec l'étiquette "end" n'existe que dans la dimension End, ce qui suit dira les noms de toutes les entités dans la dimension End même si le bloc de commande (ou gameLoopFunction ) l'exécution de cette commande n'est pas dans la Fin :

execute @e[tag=end] ~ ~ ~ say Entities in the End: @e[x=0]

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

Ce bogue doit être corrigé pour pouvoir utiliser cette méthode. Sinon, vous devrez avoir des blocs de commande physiques dans l'End, bien que cela ne soit pas utile s'ils ne sont pas chargés.

0 votes

Ce bogue a été corrigé dans le dernier snapshot (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