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 :

				
					teleport @e[x=7,y=42,z=106,distance=..2] 7 42 88
				
			

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 :

				
					/function mangarmor:tp/nether
				
			

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.

Par exemple, pour une dimension personnalisée nommée mine dont le spawn se situe en 0 10 0, on pourr utiliser la commande suivante :

				
					execute in mine run teleport @s 0 10 0
				
			

Pour aller plus loin

Voici d’autres articles qui pourraient t’intéresser :

Loot boxes dans une boutique sur serveur Minecraft
Minecraft

Boutique en jeu

Maintenant que nous avons vu comment créer des lootboxes et mettre en place une monnaie, nous pouvons créer la boutique.

Villageois vendant une pomme décorative
Minecraft

Boutique : vendeur villageois

Avant les recettes personnalisées, on utilisait des vendeurs villageois. Ils sont toujours utiles pour les objets utilisant des tags.

Minecraft

Boutique : monnaie virtuelle

Les vendeurs de Minecraft utilisent l’émeraude comme monnaie du jeu. Nous allons voir dans cet article comment utiliser une monnaie plus sécurisée car dématérialisée.

Une réponse

  1. Bonjour,
    J’aimerais savoir si ces fonctions permettraient de corriger un bug que je subit au niveau de mes portails.
    Effectivement depuis que j’ai chargé mon monde solo sur mon serveur. Je subit un bug qui me fait atterrir dans l’end en traversant mon portail du nether, et dans le nether en traversant le portail de sortie de l’end.
    Merci d’avance pour vos réponses

Laisser un commentaire

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

For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.

I agree to these terms.

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

Sommaire

Partager

Facebook
Twitter