7 avr. 2019, 15:22

Bonjour,

Je travaille actuellement sur un mod côté serveur qui permet de téléporter un joueur à une position aléatoire dans une région définie d’une dimension. Par exemple, pour un serveur utilisant le mod Lord of the Rings v33.4, il s’agit de faire démarrer un joueur qui aurait choisi la faction Mordor à un emplacement aléatoire à l’intérieur de ce territoire.

Pour la partie téléportation proprement dite, j’ai écrit le code suivant en m’inspirant de la méthode net.minecraft.entity.player.EntityPlayerMP.travelToDimension(int dimensionNumber)
Teleports the entity to another dimension. Params: Dimension number to teleport to

Pour player, dimension, x, y et z définis :

player.playerNetServerHandler.setPlayerLocation(x, y, z, 0.0F, 0.0F);
MinecraftServer.getServer().getConfigurationManager().transferPlayerToDimension(player, dimension);

Cela fonctionne apparemment bien… mais seulement pendant une seconde !
Après le joueur se retrouve retéléporté dans le Nether à côté d’un tout nouveau portail.

En survolant le code de net.minecraft.server.management.ServerConfigurationManager.transferPlayerToDimension() j’ai l’impression que ça ne fonctionne justement qu’avec un portail.

D’où mes questions :

  • Est-ce qu’il y a une autre façon de procéder dans le code de Minecraft ou Forge ?
  • Sinon, je pense continuer à reprendre les parties du code de transferPlayerToDimension() qui m’intéressent sans les trucs relatifs aux portails. Est-ce que cela pourrait marcher ?
  • Et si ça ne fonctionne toujours pas, me contenter d’appeler une commande externe (genre /mvtp dans le plugin Multiverse-core ou /mwtp dans le mod Forge Essentials)

J’utilise Forge v10.13.4.1614.

Bien cordialement,