Créer ses propres kits ! (Armes, outils)



  • Sommaire

    • Introduction

    • Pré-Requis

    • (#code)
      [list]
      [*][1\. Dans votre classe principale](#princi)
      [*][2\. Dans la classe des items](#classitems)
      [*][3\. Finitions](#save)
      [/list][*][Résultat](#result)
      
      [ancre=intro]#Introduction(Introduction)[/ancre]
      
      Bonjour tout le monde ! Aujourd'hui, on se retrouve dans ce tutoriel pour apprendre à créer ses propres épées et outils (Hache, Pioche, Pelle, Houe) en version 1.7.x.
      
      [ancre=requis]#Pré-requis(Pré-requis)[/ancre]
      
      Pour effectuer ce tutoriel sans embrouilles, il faut que vous avez lu les tutoriels suivants : 
      - [Créer un item basique](http://www.minecraftforgefrance.fr/showthread.php?tid=588)
      
      [ancre=code]#Code(Code)[/ancre]
      
      Cette partie sera divisée elle même en 3 parties : 
      1\. Dans votre classe principale
      2\. Les classes d'items
      3\. Finitions
      
      [ancre=princi][size]1\. Dans votre classe principale[/ancre]
      
      Alors, on commence par déclarer les variables d'objets, au dessus de la méthode preInit comme ceci, pour rendre le tutoriel plus concret donc plus simple, je vais créer des outils et épée en éméraude : 
      ```java
      // Déclaration de variables des items
              public static Item emeraldSword,emeraldPickaxe, emeraldShovel, emeraldAxe, emeraldHoe;
      
      	@EventHandler
      	public void preInit(FMLPreInitializationEvent event)
      	{
      		proxy.registerRender();
      
      	}
      
      

      Une fois cela fait, il faudra créer un "ToolMaterial" (toujours au dessus de la méthode "preInit") qui permettra de donner les valeurs à nos items (Durabilité, ce que la pioche peut miner, la taux d'enchantibilité etc ...) (Pour les moddeurs qui étaient en 1.6.x, le EnumToolMaterial n'existe plus il est remplacé par le ToolMaterial se situant dans "net.minecraft.item.Item.ToolMaterial")

      Allez je vous donne le code sans plus tarder puis nous le décortiqueront au fur et à mesure :

      
      // Déclaration du ToolMaterial
      public static ToolMaterial  EmeraldMaterial = EnumHelper.addToolMaterial("EmeraldMaterial", 3, 1800, 9.0F, 4.0F, 15);
      
      

      Voilà, ce code n'est pas long mais il faut savoir le décortiquer alors :

      • Après le ToolMaterial, il y a un "EmeraldMaterial", ce sera le nom de votre ToolMaterial, si vous faites des items en Ruby par exemple, mettez Ruby+Material, pour eviter les conflit avec ceux de minecraft ce qui donne : RubyMaterial

      • Juste après le addToolMaterial, il y un une String entre guillemets, mettez exactement pareil que celui d'avant

      • Le 3 vient du harvestLevel, c'est a dire ce que l'outil peut miner, par exemple le diamant à un harvestLevel de 3, cela signifie que il peut tout miner (la pioche biensur ^^)
        Par exemple : 0 = Bois, 1 = Pierre, 2 = Fer, 3 = Diamant

      • 1800 est la durabilité de vos items, (le diamant est de 1561 utilisations), donc dans ce cas là, la pioche se cassera au bout de 1800 utilisations (sans compter le unbreaking)

      • 9.0F est l'éfficacité de vos outils, plus le nombre décimal est élévé, plus vos outils seront efficaces (Le diamant à une efficacité de 8.0F)

      • 4.0F Signifie les dommages causés par l'épée de vote kit, encore un fois, là plus le nombre décimal est élévé, plus vous allez taper fort :D) PS : Le diamant équivaut à 3.0F.

      • Et enfin, 15 représente la taux d'enchantibilité, plus votre nombre est élévé, plus vos enchantements seront cheatés (l'or est le materiel avec le plus de taux d'enchantibilité)
        Voilà c'est tout pour le ToolMaterial 😉

      PS : Pour se rendre compte des valeurs avec celles du jeu, faites un clique droit sur l'import du ToolMaterial puis cliquez sur "Open Declaration".

      La définition des Items :
      Une fois nos variables crées, il faut les définir, pour cela, placez vous dans la méthode preInit et écrivez ce code :

      
                      emeraldSword = new EmeraldSword(EmeraldMaterial).setUnlocalizedName("emeraldsword");
      		emeraldPickaxe = new EmeraldPickaxe(EmeraldMaterial).setUnlocalizedName("emeraldpickaxe");
      		emeraldAxe = new EmeraldAxe(EmeraldMaterial).setUnlocalizedName("emeraldaxe");
      		emeraldHoe = new EmeraldHoe(EmeraldMaterial).setUnlocalizedName("emeraldhoe");
      		emeraldShovel = new EmeraldShovel(EmeraldMaterial).setUnlocalizedName("emeraldshovel");
      

      Vous devez normalement avoir 5 erreurs, c'est tout a fait normal, passez la souris sur là ou il y a des vagues rouges en dessous et faites "Create Class ...", une fois cela fait pour toutes les erreurs, remplacez le contenu de setUnlocalizedName("contenu") par le nom de votre item, par exemple "rubysword"
      On peut ensuite passer à la deuxième partie 😉

      [ancre=classitems][size]2. Les classes des items[/ancre]

      Allez en tout premier dans la classe de l'épée, (pour moi EmeraldSword)
      Vous devez normalement avoir ce code :

      
      package votre.package;
      
      public class VotreEpee{
      
      }
      
      

      A coté de "Votre Epee", placez extends ItemSword et importez le; une erreur se met sur le nom de votre classe, créez le constructeur en passant le curseur dessus vous devez avoir ceci :

      
      public class VotreEpee extends ItemSword 
      {
      
      	public VotreEpee (ToolMaterial p_i45356_1_) {
      		super(p_i45356_1_);
      		// TODO Auto-generated constructor stub
      	}
      
      }
      
      

      Remplacez les "p_i45356_1_" par material, pour question de clarté, et pour la même raison, supprimer le commentaire "TODO ..."

      Une fois cela effectué, vous pouvez donnez des attributs à votre item, pour vous montrer un exemple, je vais l'ajouter dans l'onglet créatif des armes (rajoutez ce code en dessous de super(material) 😉

      
      this.setCreativeTab(CreativeTabs.tabCombat);
      
      

      N'oubliez pas d'importer le CreativeTabs en passant le curseur dessus 😉
      Ce code ajoutera l'épée dans l'onglet créatif "combat" c'est a dire là où sont les épées, arcs etc ...

      Passons à la pioche :

      Créez la classe, et ici, au lieu de faire un extends ItemSword, vous allez devoir faire un extends ItemPickaxe, créer le constructeur; vous devez obtenir ceci :

      
      public class EmeraldPickaxe extends ItemPickaxe
      {
      
      	protected EmeraldPickaxe(ToolMaterial p_i45347_1_) {
      		super(p_i45347_1_);
      		// TODO Auto-generated constructor stub
      	}
      
      }
      
      

      Ps : n'oubliez pas d'importer ItemPickaxe 😉
      Comme avant, remplacez p_i4 etc par material et supprimez le commentaire, puis si vous voulez, ajoutez cet item dans un onglet créatif ( pour la pioche, la hache, la houe et la pelle, le code est :

      
      this.setCreativeTab(CreativeTabs.tabTools);
      
      

      Voilà !
      Pour les autres items :
      C'est exactement pareil que la pioche, sauf que le extends sera suivi de :

      • ItemAxe pour la hache
      • ItemHoe pour la houe
      • ItemSpade pour la pelle
        Et n'oubliez pas le import !

      Une fois toutes nos classes faites, passons à la 3° partie !

      [ancre=save][size]3. Finitions[/ancre]

      Allez, nous avons presque fini !

      Ce que j'appelle par "Finitions" et l'enregistrement dans le jeu, les textures etc ...

      Commençons par les textures !
      Dans le dossier "src/main/resources" (toujours dans eclipse)
      créez le package "assets.votremodid.textures"
      Bien sur, ne créez pas avec votremodid, utilisez le modid que vous avez créer quand vous avez fait la base de votre mod, pour moi c'est "tuto" donc mon package dans src/main/resources est assets.tuto.textures.
      Une fois celui-ci crée, faites clique droit sur le package précédemment crée puis faites un package "assets.votremodid.textures.items"
      Une fois celui-ci crée, glissez vos textures dans ce dossier (toujours sur eclipse) il va vous demandez quelque chose, faites ok vos textures sont maintenant dans votre mod 😉

      Rendez vous dans la classe principal de votre mod, et allez dans la méthode preInit, là où on a défini nos variables d'items :
      Entre le setUnlocalizedName() et le point virgule de fin, ajoutez :

      .setTextureName(votremodid:nomdevotreimage)
      

      Bien sur, encore une fois, replacez votremodid par votre ModID, et nomdevotreimage par le nom de votre image (sans extension) que vous venez de glisser dans le dossier des textures
      (PS: il faut absolument que ce soit une texture en .png)
      Pour moi, ma texture se nomme emerald_sword.png, alors pour moi le code est : ```java
      .setTextureName(tuto:emerald_sword)

      Faites ça pour les autres items ;)
      
      Passons à l'enregistrement : 
      
      Toujours dans la méthode preInit, ajoutez en bas de celle-ci : 
      ```java
      
                      GameRegistry.registerItem(emeraldSword, "emeraldsword");
      		GameRegistry.registerItem(emeraldAxe, "emeraldaxe");
      		GameRegistry.registerItem(emeraldPickaxe, "emeraldpickaxe");
      		GameRegistry.registerItem(emeraldHoe, "emeraldhoe");
      		GameRegistry.registerItem(emeraldShovel, "emeraldshovel");
      
      

      Comme d'habitude, remplacez emeraldSword etc... par vos noms de Variables déclarée au début et emeraldsword entre guillemets par les UnlocalizedName de vos items 😉

      Voilà vous pouvez lancez le jeu en cliquant sur la flèche verte en haut, mais vos items n'auront aucun noms 😛
      Pour remédier à cela, dans src/main/resources, créez un package "assets.votremodid.lang" remplacez "votremodid" par votre modID,
      en suite créer 2 fichiers : en_US.lang et fr_FR.lang, cela donnera à forge les noms de vos items dans les différentes langues (ici, le français de france, et l'anglais d'amérique) Ouvrez chacun de ces fichiers et pour chaques items, mettez :
      "item.unlocalizednamedevotreitem.name=Nom de votre item"
      remplacez le "unlocalizednamedevotreitem" par l'Unlocalized Name de votre item (vous êtes censé savoir ce que c'est 😉 )
      Voilà ! C'est tout pour ce tutoriel !

      [ancre=result][size]Résultat[/ancre]

      Allez quelques screens du résultat ! 😄
      http://www.hostingpics.net/viewer.php?id=57357220140314132011.png

      http://www.hostingpics.net/viewer.php?id=63497520140314132017.png

      http://www.hostingpics.net/viewer.php?id=67664520140314132020.png

      Voilà ! N'hésitez pas a dire si vous avez un problème dans les réponses ;)[/size][/size][/size][/size]



  • Sympa ! Je code pas en 1.7.x pour le moment, mais c'est sympa !



  • Merci ça fait plaisir 🙂



  • Ah ! Et met une balise pour le résultat c'est plus jolie à voir, c'est plus épuré !

    Dans le sommaire: ```

    • Résultat
      Et à la fin: ```
      [ancre=resultat]#Résultat(Résultat)[/ancre]
      


  • Exact 😉 Merci pour l'ajout 🙂
    Edit : Fait 😉


  • Moddeurs confirmés Rédacteurs Administrateurs

    Le tutoriel était déjà prévu par l'équipe pour demain. http://www.minecraftforgefrance.fr/showthread.php?tid=563(il y a la liste ici : http://www.minecraftforgefrance.fr/showthread.php?tid=563)
    J'avais prévu d'ajouter une partie bonus avec les effets, donc ce tutoriel ne me convient pas, je vais le modifier ou refaire le mien comme je l'avais prévu, tout dépendra du temps libre que j'ai.
    Sinon tu reviens sur des choses déjà expliqué (par exemple tu montre comment créer le fichier de lang) normalement si la personne à bien suivi les pré-requis, elle devrait déjà les avoir.
    À part ça le tutoriel est pas mal.



  • Okay 😉 Merci pour la liste des préventions 😉 que je ne me trompe pas xD


Log in to reply