4 votes

Comment faire une commande de téléportation qui ne fonctionne pas dans le Nether ?

J'ai un serveur vanilla 1.8.7 qui utilise un livre pour amener les joueurs au spawn ou à leur maison (un support d'armure invisible avec leur uuid connecté à celui-ci). Le problème, c'est que s'ils se mettent chez eux (placent leur socle d'armure) dans l'overworld et vont dans le Nether et essayent de retourner chez eux (activé par un trigger), cela les envoie aux mêmes coordonnées dans le Nether, et les tue très probablement.

J'ai fait quelques recherches et il semble qu'il existe un paramètre de dimension, mais je n'arrive pas à comprendre la syntaxe ou comment le faire fonctionner.

J'ai mis à jour le bloc de commande pour :

/tp @a[score_tpHome_min=1,Dimension=0] 68 68 68

J'espérais que le joueur ne serait téléporté que lorsqu'il se trouverait dans l'overworld (Dimension 0), mais il semble ignorer ce paramètre dans le Nether et se téléporter quand même à ces coordonnées dans le Nether.

J'ai aussi essayé :

/tp @a[score_tpHome_min=1,Dimension:0] 68 68 68

C'est ainsi que d'autres personnes utilisaient le paramètre d'autres manières, mais cela donnait une erreur.

3voto

MrLemon Points 17073

Le paramètre Dimension n'existe pas en tant que argument du sélecteur de cible mais il est présent dans le données d'entité .

Tristement, /tp ne vous permet pas de vérifier les données d'entité, vous devrez donc créer une solution de rechange en utilisant un objectif de tableau de bord.

/scoreboard objectives add inNether dummy

Une fois que l'objectif existe, créez une horloge fill/setblock et exécutez les deux commandes suivantes, dans cet ordre :

/scoreboard players set @a inNether 0
/scoreboard players set @a inNether 1 {Dimension:-1}

L'objectif sera fixé à 1 pour tout le monde dans le Néant et vous pouvez l'utiliser pour limiter vos chances de réussite. tp pour

/tp @a[score_tpHome_min=1,score_inNether=0] 68 68 68

Cela dit, cela permettrait d'utiliser le TP dans la Fin, ce qui entraîne presque certainement la mort. Je suggère de renverser la logique en faisant

/scoreboard players set @a inOverworld 0
/scoreboard players set @a inOverworld 1 {Dimension:0}

à la place, et vérifiez que score_inOverworld_min=1 .

3voto

Rickster Points 163

C'est presque une version de la réponse de @MrLemon. Exécutez la commande suivante une fois :

/scoreboard objectives add Dimension dummy

Mettez les commandes suivantes sur un remplissage/rapide l'horloge :

/scoreboard players set @a Dimension -2 {Dimension:-2}
/scoreboard players set @a Dimension -1 {Dimension:-1}
/scoreboard players set @a Dimension 0 {Dimension:0}    

Ensuite, faites le tp comme suit :

/tp @a[score_tpHome_min=1,score_Dimension_min=0] 68 68 68

Cela fonctionne de la manière suivante : on obtient la dimension du joueur en fixant l'objectif du tableau de bord. Dimension à la dimension dans laquelle ils se trouvent.

1voto

pppery Points 3211

L'ajout de NBT à la syntaxe des arguments des sélecteurs dans Minecraft 1.13 signifie que la technique générale décrite dans les autres réponses peut être réalisée sans tableau de bord :

/tp @a[score_tpHome_min=1,nbt={Dimension:0}] 68 68 68

Cela dit, /tp peut maintenant téléporter les joueurs à travers les dimensions Il est donc préférable de faire cela plutôt que de désactiver complètement la capacité de téléportation dans le Néant.


En outre, Minecraft 1.16 a changé le format NBT de sorte que le Dimension est stockée sous forme de chaîne, ce qui signifie que vous devez utiliser :

 /tp @a[score_tpHome_min=1,nbt={Dimension:"minecraft:overworld"}] 68 68 68

à la place si vous jouez la version la plus récente.

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