Tu peux en effet utiliser les sélecteurs y et dy pour savoir à quelle hauteur se trouve ton joueur.
Je n'ai pas joué à la map donc désolé si je fais fausse route, mais imaginons que l'enfer s'étende de y=0 à y=80 et le paradis de y=81 à y=160.
Quand tu définis des coordonnées et des "distances sur des coordonnées" (le dx, dy, dz) il faut spécifier les trois coordonnées de base.
Je considère ici que ton monde se trouve exclusivement dans des coordonnées positives et dans une distance totale sur x et z de 1000 blocs mais tu peux changer ces valeurs comme bon te semble (attention cependant les distances ne vont que dans un sens, si je met x=0 et dx=10 ça détecte entre x=0 et x=10, pas entre x=-10 et x=10)
Si tu créés un objetif de type stat.useItem.minecraft.experience_bottle il te suffit de rentrer ces trois commandes sur une clock (attention elles doivent s'exécuter dans l'ordre dans lequel je les ai mise) :
Code (cpp):
execute @a[score_Objectif_min=1,x=0,y=0,z=0,dx=1000,dy=80,dz=1000] ~ ~ ~ tp @p ~ ~80 ~
execute @a[score_Objectif_min=1,x=0,y=81,z=0,dx=1000,dy=160,dz=1000] ~ ~ ~ tp @p ~ ~-80 ~
scoreboard players set @a Objectif 0
De cette manière en multi chaque joueur peut aller dans une dimension différente, très rapidement et indépendamment des autres.
On pourrait aussi en effet passer par un double execute pour ne pas avoir du tout de score à gérer mais du coup ça pourrait téléporter plusieurs joueurs en une potion s'ils sont trop proches.