Créer un item qui téléporte au spawn


  • Administrateurs

    Sommaire

    • Introduction

    • Pré-requis

    • (#code)
      
      [list]
      [*][Classe principale](#classe1)
      [*][ItemSpawnTeleport](#classe2)
      [/list][*][Résultat](#resultat)
      [*][Crédits](#credit)
      
      [ancre=intro]
      
      [align]#[size]Introduction([size]Introduction)
      [/ancre]
      
      Bonjour/Bonsoir à tous ! Dans ce tutoriel nous allons apprendre à faire un item qui va permettre la téléportation au point d'apparition du joueur à l'aide d'un simple clic droit.
      
      [ancre=prerequis]
      [align]#[size]Pré-requis([size]Pré-requis)
      [/ancre]
      
      -Créer la base de son mod
      -Créer un item simple
      
      [ancre=code]
      [align]#[size]Code([size]Code)
      [/ancre]
      
      [ancre=classe1][size]***Classe principale :***[/ancre]
      
      Comme tout item, nous devons commencer par déclarer ce dernier dans la classe principale.
      Du coup, dans votre classe principale, après avoir déclaré la variable d'item, nous allons l'initialiser dans notre méthode *preInit* :
      
      ```java
      
      spawnTeleporter = new ItemSpawnTeleport().setCreativeTab(tutoTab).setUnlocalizedName("spawnTeleporter").setRegistryName("spawnTeleporter");
      
      

      Ensuite, inutile de vous l'expliquer. Je pense que vous devez savoir quoi faire. 😉
      BREF. Passons à la suite !

      [ancre=classe2][size]***ItemSpawnTeleport :***[/ancre]

      Maintenant que nous avons ajouté l'item en jeu, on peut passer aux choses sérieuses !
      Nous allons donc utiliser la fonction onRightClick. Dans la classe ItemSpawnTeleport, ajoutez donc cette fonction :

      
      public ActionResult <itemstack>onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) {
      return new ActionResult<itemstack>(EnumActionResult.SUCCESS, playerIn.getHeldItem(handIn));
      }
      
      

      [s]Voilà on a fini ![/s] Non, je rigole. Vous plaisantez ou quoi ? 😮

      Il nous faut donner les instructions à suivre lors du clic droit, donc ceci :

      
      playerIn.setPositionAndUpdate(X, Y, Z);
      
      

      On place donc le joueur à une position X Y et Z lors du clic droit.

      Comment qu'on obtient les coordonnées du SPAWN ?

      -Comme ça (à placer avant playerIn.setPositionAndUpdate(X, Y, Z);) :

      
      double x = worldIn.getSpawnPoint().getX();
      BlockPos y = worldIn.getTopSolidOrLiquidBlock(new BlockPos(worldIn.getSpawnPoint().getX(), 0, worldIn.getSpawnPoint().getZ()));
      double z = worldIn.getSpawnPoint().getZ();
      
      

      Pour les double X et Z inutile de vous l'expliquer en détail, les lignes parlent d'elles-même. Pour la position Y, il s'agît effectivement d'un BlockPos qui a été utilisé afin de ne pas se retrouver coincé dans le sol si on est téléporté au spawn. (D'où le nom getTopSolidOrLiquidBlock 😉 )

      Si vous avez suivi mes instructions à la lettre, votre classe devrait ressembler à cela :

      
      package fr.elias.tutoriels.common;
      
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemStack;
      import net.minecraft.util.ActionResult;
      import net.minecraft.util.EnumActionResult;
      import net.minecraft.util.EnumHand;
      import net.minecraft.util.math.BlockPos;
      import net.minecraft.util.math.MathHelper;
      import net.minecraft.world.World;
      
      public class ItemSpawnTeleport extends Item
      {
      public ItemSpawnTeleport()
      {
      super();
      }
      
         public ActionResult <itemstack>onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn)
         {
          double d = worldIn.getSpawnPoint().getX();
             BlockPos d1 = worldIn.getTopSolidOrLiquidBlock(new BlockPos(worldIn.getSpawnPoint().getX(), 0, worldIn.getSpawnPoint().getZ()));
             double d2 = worldIn.getSpawnPoint().getZ();
             playerIn.setPositionAndUpdate(d, d1.getY(), d2);
             return new ActionResult<itemstack>(EnumActionResult.SUCCESS, playerIn.getHeldItem(handIn));
         }
      }
      
      

      Et voilà, c'est tout pour ce tutoriel. En espérant avoir éclairé votre lanterne. (On m'avait demandé ce tuto, donc le voici :))

      [ancre=resultat]
      [align]#[size]Résultat([size]Résultat)
      [/ancre]

      [video]https://youtu.be/cN-db6RRluA[/video]

      [ancre=credit]

      [align]#[size]Crédits([size]Crédits)
      [/ancre]

      Rédaction :
      -elias54

      Correction :


      Ce tutoriel de Minecraft Forge France est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International

      [align]Retour vers le sommaire des tutoriels[/align][/size][/size][/align][/size][/size][/align][/size][/size][/size][/size][/align][/size][/size][/align][/size][/size][/align]</itemstack></itemstack></itemstack></itemstack>