Téléportation vers d’autres dimensions

Découvre comment mettre en place des téléportations vers d’autres dimensions avec des commandes.

Avant-propos

Nous avons vu dans le dernier article comment créer des portails de téléportation. Nous allons maintenant voir comment téléporter les entités vers d’autres dimensions.

Dans cet exemple, j’expliquerai comment téléporter un joueur de l’overworld vers le nether, puis du nether vers l’overworld. Pour cela, j’utiliserai le portail créé dans le précédent article.
Le portail de l’overworld situé en 7 42 106 téléportera dans le nether en 1 115 -3 180 0.
Le portail du nether situé en 1 116 1 téléportera dans l’overworld en 7 42 88 -90 0.

Pour suivre ce tutoriel, tu dois être à l’aise avec la création de datapack et la notion de fonction. Si ce n’est pas le cas, je te conseille de lire ces articles avant de continuer :

Téléportation vers le nether

Sans plus attendre entrons dans le vif du sujet. Nous avons vu précédement que nous pouvions téléporter une entité avec la commande :

Création d’une fonction de téléportation

Pour simplifier l’utilisation des commandes de téléportation, nous allons créer le fichier suivant :
data/mangarmor/functions/tp/nether.mcfunction

Le dossier tp ainsi créé (tu peux le nommer différemment) contiendra toutes nos fonctions pour la téléportation. Pour rappel, une fonction est un simple fichier texte contenant une liste de commandes.

Commençons par utiliser la commande execute, qui permet d’exécuter d’autres commandes de manière assez précise. On peut ainsi choisir l’entité ciblée (as), une zone (offset), une dimension (in), … Dans notre cas, nous ajoutons execute in the_nether run devant notre commande pour l’exécuter dans le nether.

Attention toutefois cette seule modification ne suffit pas. En effet, on demande au jeu d’exécuter dans le nether la commande que nous utilisions précédemment dans l’overworld. Problème, il cherche à téléporter les entités présentes dans le nether autour des coordonnées 7 42 106. Or, côté nether, notre portail est en 1 115 -3. On écrira donc :

execute in the_nether run teleport @s 1 115 -3 180 0

Tu noteras également que le sélecteur ne cherche plus toutes les entités @e mais vise seulement la personne exécutant la fonction @s. Cela nous permet d’utiliser notre fonction n’importe-où.

Tu peux tester que les coordonnées sont bonnes en entrant cette commande dans le chat du jeu :

Elle devrait te téléporter dans le nether. N’hésite pas à corriger les coordonnées si besoin. En jeu, tu peux voir tes coordonnées en appuyant sur la touche F3 du clavier.

Activation du portail

Maintenant que nous avons une fonction pour nous téléporter, nous pouvons facilement mettre en place la téléportation près du portail. Pour rappel, dans cet exemple, le portail dans l’overworld se situe en 7 42 106.

Nous allons reprendre le fichier data/mangarmor/functions/loop/portals.mcfunction créé dans le dernier article et adapter la 4ème ligne pour utiliser la nouvelle fonction de téléportation.

execute as @e[x=7,y=42,z=106,distance=..2] run function mangarmor:tp/nether

Ici, on exécute la fonction de téléportation sur toutes les entités dans l’overworld situées à deux blocs du portail pour les téléporter vers le nether. Note bien qu’il s’agit d’une commande simplifiée par l’utilisation d’une fonction de téléportation. De plus, les commandes étant exécutées par défaut dans l’overworld, il est inutile de le préciser. La commande complète devrait être :

execute in overworld as @e[x=7,y=42,z=106,distance=..2] run execute in the_nether run teleport @s 1 115 -3 180 0

Si tu souhaites ne téléporter que des joueurs, tu peux remplacer @e par @a. Attention également à ne pas oublier d’indiquer des coordonnées et une distance sinon toutes les entités ou joueurs du serveur seront téléportés dans le nether à chaque tick.

Téléportation du nether vers l’overworld

Comme précédemment, commençons par créer notre fonction de téléportation. Cette fois, nous agissons sur les entités près de notre portail dans le nether (situé en 1 116 1) pour les téléporter dans l’overworld en 7 42 88 -90 0.
Nous créons donc le fichier data/mangarmor/functions/tp/overworld :

execute in overworld run teleport @s 7 42 88 -90 0

Reprenons ensuite le fichier data/mangarmor/functions/loop/portals.mcfunction.

On pourrait être tenté d’écrire :

execute as @e[x=1,y=116,z=1,distance=..2] run function mangarmor:tp/overworld

Toutefois, il faut se rappeler que les commandes sont exécutées dans l’overworld par défaut. Ici, on ciblera donc les entités en 1 116 1 dans l’overworld, pour les téléporter en 7 42 88 -90 0 dans l’overworld. Pour remédier à cela, on va simplement ajouter un in the_nether dans le premier execute, pour indiquer qu’on veut cibler le nether :

execute in the_nether as @e[x=1,y=116,z=1,distance=..2] run function mangarmor:tp/overworld

Profitons-en pour ajouter les particules au portail côté nether. Nous allons utiliser la même commande que dans l’article précédent, en remplaçant les coordonnées par celles de notre portail du nether, et en ajoutant un execute pour cibler le nether.

Voici donc à quoi ressemblera notre fichier data/mangarmor/functions/loop/portals.mcfunction :

particle minecraft:portal 7 44 105 1 2 0 0 20
execute as @e[x=7,y=42,z=106,distance=..2] run function mangarmor:tp/nether
 
execute in the_nether run particle minecraft:portal 1 116 0 1 2 0 0 20
execute in the_nether as @e[x=1,y=116,z=1,distance=..2] run function mangarmor:tp/overworld
 
particle minecraft:smoke 7 44 71 1 2 0 0 10
teleport @e[x=7,y=42,z=70,distance=..2] 7 42 88
 
particle minecraft:enchant -10 44 88 0 2 1 0 20
teleport @e[x=-11,y=42,z=88,distance=..2] 7 42 88

Performances

Ces deux derniers articles t’ont montré comment mettre en place des portails grâce à des fonctions d’un datapack. Si les performances sont meilleures côté overworld, elles pourraient vite se dégrader avec de nombreux portails. C’est pourquoi, je conseille l’utilisation d’un bloc de commande pour le voyage retour. Dans le nether par exemple, on pourra placer cette commande dans un bloc de commande proche du portail en mode répétition, sans condition, toujours actif :

execute as @e[x=1,y=116,z=1,distance=..2] run function mangarmor:tp/overworld

En effet, pas besoin de préciser que cette commande doit être exécutée dans le nether car le bloc de commande l’exécutant est déjà dans cette dimension. La commande ne s’exécutera que si le chunk est chargé. Si tu fais de nombreux portails sur ton serveur, cela permettra d’améliorer les performances. On pourrait également placer la commande de particules dans un bloc de commande en chaîne, sans condition, toujours actif afin qu’elles ne soient générées que quand le chunk est chargé.

Pourquoi faire ?

Je suis concient qu’un tel portail n’a que peu d’intérêt. Alors pourquoi utiliser une commande plutôt qu’un vrai portail ?

Tout d’abord, comme nous détectons les joueurs dans une certaines zone, il est possible de faire des portails de n’importe quelle forme et n’importe où dans le monde.

De plus, il est possible de téléporter les joueurs où on veut. On peut donc imaginer une salle avec plusieurs portails pour téléporter les joueurs dans un manoir dans l’overworld, dans une forteresse du nether, dans une ville de l’end, …

Enfin et surtout, pour le défi technique. J’ai utilisé ce projet de portail comme base pour présenter certaines commandes de Minecraft. Une fois ces commandes maîtrisées, on peut imaginer téléporter dans l’overworld les joueurs qui tombent dans l’end.

Minecraft 1.16 : nether update

Depuis la rédaction de cet article le 15 janvier 2018, Minecraft a reçu une mise à jour qui rend ce type de portail nettement plus utile. En effet, nous pouvons désormais créer nos propres dimensions. Ces portails pourront donc permettre de téléporter les joueurs vers des dimensions personnalisées.

Sommaire

Partager

Partager sur facebook
Facebook
Partager sur twitter
Twitter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.