Le kit d'outils et une épée



  • Introduction

    Bonjour à toutes et à tous, je vais vous apprendre à faire un Kit d'outils(épée, pioche, pelle, hache et houe) en trois étapes:

    1. Dans la classe principale
    2. Les classe des outils
    3. Les ressources(textures et nom)

    Avant de commencer vous devez au moins savoir faire un item basique.

    Bonne lecture 🙂

    1. Dans la classe principale

    Tout d'abord vous allez déclarer vos items,

    public static Item TutorialSword, TutorialPickaxe, TutorialAxe,
    TutorialShovel, TutorialHoe;
    

    Vous pouvez aussi bien le faire ligne par ligne:

    public static Item TutorialSword;
    public static Item TutorialPickaxe;
    public static Item TutorialAxe;
    public static Item TutorialShovel;
    public static Item TutorialHoe;
    

    Puis vous allez créer un EnumToolMaterial.
    Ce code doit être dans à la suite des déclarations.

    static EnumToolMaterial TutorialMaterial = EnumHelper.addToolMaterial("Tutorial", 3, 1561, 8.0F, 3, 10);
    

    Le "TutorialMaterial" est le nom de votre EnumToolMaterial.
    Les valeurs dans le code ci-dessus correspondent à celles du diamant.
    Faites ctrl + clic sur EnumToolMaterial pour ouvrir la classe et voir les valeurs des autres outils.

    La valeur 3 correspond au "harvest level", c'est à dire ce que peut casser la pioche
    (par exemple: 3 = solidité de l'obsidienne; 2 = solidité de l'or et du diamant;1 = solidité du fer; 0 = solidité du reste des blocs).

    La valeur 1561 correspond au nombre de damage que possède l'item. Cela correspond donc au nombre de coup -1 (comme il y a en plus le damage 0)

    La valeur 8.0F correspond à la vitesse de minage, plus le nombre est élevé plus les outils seront efficaces.

    La deuxième valeur 3 correspond au nombre de point de vie (demi cœur) enlevé par coup. Sachez que pour l'épée 4 sera ajoutez à cette valeur, 2 pour la pioche et 3 pour la hache.
    Donc avec la valeur 3, mon épée fera 7 cœur de dégât, ma pioche 5 et ma hache 6.

    Et la valeur 10 correspond à "l'enchantabilité" des outils, plus le chiffre est élevé plus les meilleurs enchantement seront facile à avoir.

    Pensez à importer:

    import net.minecraftforge.common.EnumHelper;
    import net.minecraft.item.EnumToolMaterial;
    

    (Vous pouvez toujours utilisez le raccourci Control+Shift+O sous Eclipse)

    Toujours dans PreInit, introduisez ce code dans la partie items en dessous des blocs:

    TutorialSword = new TutorialSword(TutorialSwordID, TutorialMaterial).setUnlocalizedName("TutorialSword").setTextureName("modtutoriel:TutorialSword");
    TutorialPickaxe = new TutorialPickaxe(TutorialPickaxeID, TutorialMaterial).setUnlocalizedName("TutorialPickaxe").setTextureName("modtutoriel:TutorialPickaxe");
    TutorialAxe = new TutorialAxe(TutorialAxeID, TutorialMaterial).setUnlocalizedName("TutorialAxe").setTextureName("modtutoriel:TutorialAxe");
    TutorialShovel = new TutorialShovel(TutorialShovelID, TutorialMaterial).setUnlocalizedName("TutorialShovel").setTextureName("modtutoriel:TutorialShovel");
    TutorialHoe = new TutorialHoe(TutorialHoeID, TutorialMaterial).setUnlocalizedName("TutorialHoe").setTextureName("modtutoriel:TutorialHoe");
    

    Le TutorialMaterial est bien sûr l'EnumToolMaterial que vous avez créé.
    "setUnlocalizedName" permet de donner le nom non-localisé c'est à dire le nom qui est utilisé pour le fonctionnement interne du jeu.
    Et enfin, "func_111206_d" est utilisé pour localiser la texture de l'outil, où, "modtutoriel" est votre mod ID (il est à écrire SANS AUCUNE MAJUSCULE), et le TutorialSword est le nom de la texture en .png je le rappelle. 😉

    Vous aurez sûrement remarqué les 5 erreurs présentes sur chaque outil, pour les corriger on va créer une nouvelle classe pour chaque outil.

    Dans la partie Init ajoutez :

    MinecraftForge.setToolClass(TutorialPickaxe, "pickaxe", 3);
    MinecraftForge.setToolClass(TutorialAxe, "axe", 3);
    MinecraftForge.setToolClass(TutorialShovel, "shovel", 3);
    

    Vos outils fonctionnent aussi sans ce code, mais il est important pour l'hardvest de forge (compatibilité avec les autres mods et pour vos propre MinecraftForge.setBlockHarvestLevel(block, toolClass, tier); )
    Le 3 correspond à la première valeur de mit dans l'enumTool (0 pour l'équivalent du bois et or, 1 pour cobble, 2 pour fer, et 3 pour le diamant)

    Et n'oubliez pas d'importer:

    import net.minecraftforge.common.MinecraftForge;
    

    Optionnel, l'enregistrement des items pour l'itemTracker de FML :

    GameRegistry.registerItem(TutorialSword, "TutorialSword", "ModTutoriel");
    GameRegistry.registerItem(TutorialPickaxe, "TutorialPickaxe", "ModTutoriel");
    GameRegistry.registerItem(TutorialAxe, "TutorialAxe", "ModTutoriel");
    GameRegistry.registerItem(TutorialShovel, "TutorialShovel", "ModTutoriel");
    GameRegistry.registerItem(TutorialHoe, "TutorialHoe", "ModTutoriel");
    

    2. Les classes des outils

    Dans la classe de chaque outils mettez ce code:

    import net.minecraft.item.EnumToolMaterial;
    import net.minecraft.item.Item[Sword, Pickaxe, Axe, Spade, Hoe];
    
    public class NomDeLaClasse extends Item[Sword, Pickaxe, Axe, Spade, Hoe]
    {
    
    }
    

    Vous aurez une erreur sur le nom de la classe passez la souris dessus et faite "add constructor", vous devriez obtenir sa:

    package tutoriel.common;
    
    import net.minecraft.item.EnumToolMaterial;
    import net.minecraft.item.ItemPickaxe;
    
    public class NomDeLaClasse extends Item[Sword, Pickaxe, Axe, Spade, Hoe]
    {
    public TutorialPickaxe(int id, EnumToolMaterial toolMaterial)
    {
    super(id, toolMaterial);
    }
    }
    

    Vous aurez aussi remarquer qu'il y a des champs non justifier([Sword, Pickaxe, Axe, Spade, Hoe]), vous devez les remplacer par les bouts de code ci-dessous:
    -Pour l'épée mettez "extends ItemSword" et "import net.minecraft.item.ItemSword".
    -Pour la pioche mettez "extends ItemPickaxe" et "import net.minecraft.item.ItemPickaxe".
    -Pour la hache mettez "extends ItemAxe" et "import net.minecraft.item.ItemAxe".
    -Pour la pelle mettez "extends ItemSpade" et "import net.minecraft.item.ItemSpade".
    -Pour la houe mettez "extends ItemHoe" et "import net.minecraft.item.ItemHoe".

    Pour rendre vos outils réparable ajoutez ce code dans la classe de l'outil :

    public boolean getIsRepairable(ItemStack stack, ItemStack repairItem)
    {
    if(stack.getItem().equals(this) && repairItem.getItem().itemID == ModTutoriel.TutorialMetadata.itemID)
    return true;
    return false;
    }
    

    ModTutoriel.TutorialMetadata et l'item avec lequel le l'armure peut être réparé.

    Et voilà la partie codage est terminée !!!

    3. Ressources

    Pour les ressources, allez tout simplement lire le tutoriel de robin4002 en cliquant juste ici

    Rendu final

    voir sur github

    0_1529608963849_2013-08-01_14.33.16.png



  • Un bon tutoriel malgré les fautes d'orthographe.

    Si tu corrige tout ça, je pense que tu sera validé 🙂


  • Modérateurs

    J'ai corrigé la plupart des fautes d'orthographe et de frappes pour rendre plus lisible le tutoriel.
    En parlant de la lisibilité, hésite pas à refaire la présentation, là ça donne pas du tout envie de le lire. (Mettre des espaces après les virgules, c'est déjà un bon début).

    A part ça, c'est plutôt un bon tutoriel!



  • Merci pour la correction 😉 et je vais essayer de faire mieux.



  • Si tu continue a améliorer le tutoriel, je pense qu'il sera rapidement validé 😉



  • Ok merci du conseil, mais comment on fait pour que l'image soit plus grande car c'est plûto gênent d'avoir une petite image sur sont tuto 😕



  • Sans vouloir être méchant, ce tuto est assez complexe, et tu as oublié pas mal de chose, tu devrais le laisser à robin 😕



  • Si il manque des choses c'est parce que je conte faire LE KIT D'OUTIL-Suite pour ne pas embrouiller les visiteurs qui veulent commençait le modding et moi personnellement je trouve pas sa compliquer.


  • Administrateurs

    Pas de conflits sur le forum, merci.



  • Sans vouloir être méchant, ce tuto est assez complexe, et tu as oublié pas mal de chose, tu devrais le laisser à robin 😕

    Faire un kits d'outils n'est pas complexe, c'est un item avec un enum en plus, pour les choses oubliées, je ne vois rien, mais il faudrais ajouter les prérequis.

    Sinon, un peu de pub: pour les recettes, il existe une fonction dans le FFMTAPI pour toutes les ajoutées 🙂



  • Il y a plein d'autres fonctions non cités u_u



  • Heu… je ne mets quoi en Près-requis :huh:
    Et je connais FFMTAPI qui génial, je vais commencer un mod qui l'utilise.



  • Il y a plusieurs fonctions oublié.
    Onit, si tu te sens capable de le faire, fais le, si tu veux je pourrais t'aider à ajouté les méthodes manquantes 🙂



  • Merci de me proposer de l'aide, je t'envérais un MP si j'ai besoin de toi 😉



  • Ouaip, et excuse moi pour l'autre message 😉



  • C'est pas grave 😪


  • Administrateurs

    Dans init :
    MinecraftForge.setToolClass(TutorialPickaxe, "pickaxe", harvest level (le même que l'enum tool) );
    MinecraftForge.setToolClass(TutorialShovel, "shovel", harvest level (le même que l'enum tool) );
    MinecraftForge.setToolClass(TutorialAxe, "axe", harvest level (le même que l'enum tool) );

    Ils sont pas obligatoire, mais plutôt important pour la compatibilité harvest level entre les différents mods.


    Ha et le titre est à revoir (majuscule …)



  • Ok merci du tuyau, j'ajoute et je change le titre aussi 😉



  • Harvest et non Hardvest 😉



  • Mais non le "hardvest level" c'est le "niveau du gilet dur"