1. Le forum de Minecraft-France va définitivement fermer ses portes. Celui-ci restera en lecture seule mais vous ne pourrez plus y apporter de nouveaux topics. Nous vous invitons à nous rejoindre sur le Discord de Minecraft-France qui permet de présenter vos projets, discuter avec la communauté etc.. Merci à tous d'avoir fait vivre ce forum de nombreuses années. Pour nous rejoindre sur Discord, Cliquez ici

[1.5.x] Une armure

Discussion dans 'Tutoriels' créé par robin4002, 16 Avr 2013.

  1. robin4002

    robin4002 Support Technique
    Staff

    Inscrit:
    17 Août 2012
    Messages:
    5 478
    Points:
    229
    Sexe:
    Homme
    Dans ce tutoriel nous allons faire 4 items qui vont servir d'armure.

    Prérequis :
    - Un item simple

    1. Déclaration dans la classe principale :
    Pour commencer, il faut déclarer les quatre items dans la classe principale :
    Code (java):
      public static Item HelmetTuto, ChestplateTuto, LeggingsTuto, BootsTuto;
    Il faut aussi déclarer le matériel armor :
    Code (java):
    static EnumArmorMaterial ArmorTuto = EnumHelper.addArmorMaterial("ArmorTuto", 20, new int[]{4, 7, 6, 5}, 17);
    On a le nom ("ArmorTuto"), puis la durabilité (20), la répartition des dégâts {casque, plastron, jambières, bottes} puis la facilité d'enchantement (plus c'est élevé, plus on de bons enchantements facilement).

    Puis dans la partie @Init
    Code (java):
        HelmetTuto = new ItemArmorTuto(25002, ArmorTuto, 0, 0).setUnlocalizedName("HelmetTuto");
        ChestplateTuto = new ItemArmorTuto(25003, ArmorTuto, 1, 1).setUnlocalizedName("ChestplateTuto");
        LeggingsTuto = new ItemArmorTuto(25004, ArmorTuto, 2, 2).setUnlocalizedName("LeggingsTuto");
        BootsTuto = new ItemArmorTuto(25005, ArmorTuto, 3, 3).setUnlocalizedName("BootsTuto");
    Et enfin les noms
    Code (java):
        LanguageRegistry.addName(HelmetTuto, "Tuto Helmet");
        LanguageRegistry.addName(ChestplateTuto, "Tuto Chestplate");
        LanguageRegistry.addName(LeggingsTuto, "Tuto Leggings");
        LanguageRegistry.addName(BootsTuto, "Tuto Boots");
    Vous devez normalement reconnaître ces codes si vous avez bien suivi le tutoriel sur les items, sauf le "ArmorTuto" qui correspond au matériel de l'armure puis les deux chiffres qui suivent, qui servent à indiquer le type de l'armure (0 = casque, 1 = plastron, 2 = jambières, 3 = bottes).

    2. La classe de l'armure :
    Maintenant il faut créer la classe "ItemArmorTuto"

    Code (java):
    package modTutoriel.common;
     
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import net.minecraft.client.renderer.texture.IconRegister;
    import net.minecraft.entity.Entity;
    import net.minecraft.item.EnumArmorMaterial;
    import net.minecraft.item.ItemArmor;
    import net.minecraft.item.ItemStack;
     
    public class ItemArmorTuto extends ItemArmor
    {
     
    public ItemArmorTuto(int par1, EnumArmorMaterial par2EnumArmorMaterial, int par3, int par4)
    {
    super(par1, par2EnumArmorMaterial, par3, par4);
    }
     
        public String getArmorTexture(ItemStack stack, Entity entity, int slot, int layer)
        {
            if (stack.itemID == ModTutoriel.LeggingsTuto.itemID)
            {
            return "/mods/modtutoriel/textures/armors/ArmorTuto_2.png";
            }
            else
            {
            return "/mods/modtutoriel/textures/armors/ArmorTuto_1.png";
            }
        }
     
        @SideOnly(Side.CLIENT)
        public void registerIcons(IconRegister par1IconRegister)
        {
            itemIcon = par1IconRegister.registerIcon("modTutoriel:"+getUnlocalizedName().substring(5));
        }
     
        public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack)
        {
            return true;
        }
     
    }
    La fonction getArmorTexture sert pour l'armure sur le joueur. Si les items sont les jambières, le fichier utilisé est "ArmorTuto_2.png" sinon, pour les autres parties de l'armure il utilise "ArmorTuto_1.png".

    Ensuite on a la fonction pour enregistrer les icônes, plutôt qu'utiliser "modTutoriel:ItemTuto" comme les 4 parties de l'armure utilisent cette classe on utilise "modTutoriel:"+getUnlocalizedName().substring(5)
    getUnlocalizedName() sert à utiliser le nom non localisé (qui est défini avec .setUnlocalizedName("<nom de l'item>")) qui correspond à "item.<nom de l'item>"
    En revanche, pour le fichier de texture nous ne voulons pas de item. devant le nom de l'item, c'est pour ça qu'on utilise .substring(5) qui ignore les 5 premiers caractère (Merci pifou92000 pour ce code :))
    getIsRepairable rend votre item réparable dans l'enclume (cette fonction cherche automatiquement quel item utiliser pour réparer avec la recette, d'ailleurs n'oubliez pas d'ajouter les recettes (voir plus bas)).

    Les fichiers de textures se trouvent donc dans :
    forge/mcp/src/minecraft/mods/modTutoriel/textures/armors/ArmorTuto_2.png
    forge/mcp/src/minecraft/mods/modTutoriel/textures/armors/ArmorTuto_1.png
    forge/mcp/src/minecraft/mods/modTutoriel/textures/items/HelmetTuto.png
    forge/mcp/src/minecraft/mods/modTutoriel/textures/items/ChestplateTuto.png
    forge/mcp/src/minecraft/mods/modTutoriel/textures/items/LeggingsTuto.png
    forge/mcp/src/minecraft/mods/modTutoriel/textures/items/BootsTuto.png

    3. Les recettes pour l'armure :
    Pour les recettes rien de compliqué, ajoutez à la fin de la partie @Init ou dans la partie @PostInit ceci :
    Code (java):
            GameRegistry.addRecipe(new ItemStack(HelmetTuto), new Object[]
                    {
                    "XXX", "X X", 'X', Item_tutoriel
                    });
     
            GameRegistry.addRecipe(new ItemStack(ChestplateTuto), new Object[]
                    {
                    "X X", "XXX", "XXX", 'X', Item_tutoriel
                    });
     
            GameRegistry.addRecipe(new ItemStack(LeggingsTuto), new Object[]
                    {
                    "XXX", "X X", "X X", 'X', Item_tutoriel
                    });
     
            GameRegistry.addRecipe(new ItemStack(BootsTuto), new Object[]
                    {
                    "X X", "X X", 'X', Item_tutoriel
                    });
    Voilà, vous avez maintenant votre armure.
     
    • J'aime J'aime x 2
    • Utile Utile x 1
  2. Coswey

    Coswey Nouveau

    Inscrit:
    19 Avr 2013
    Messages:
    7
    Points:
    42
    Sexe:
    Homme
    Merci pour ce tuto ca peut-être super utile!
     
  3. Gallade74

    Gallade74 Nouveau

    Inscrit:
    17 Mar 2013
    Messages:
    4
    Points:
    40
    Sexe:
    Homme
    Une question au niveau des craft comment on fait pour faire une craft avec un colorant?
     
  4. robin4002

    robin4002 Support Technique
    Staff

    Inscrit:
    17 Août 2012
    Messages:
    5 478
    Points:
    229
    Sexe:
    Homme
    Tu veux faire que l'armure puisse être peindre (comme celle en cuir) ou utiliser un colorant dans le craft ?
     
  5. Gallade74

    Gallade74 Nouveau

    Inscrit:
    17 Mar 2013
    Messages:
    4
    Points:
    40
    Sexe:
    Homme
    Utiliser un colorant dans le craft.
     
  6. robin4002

    robin4002 Support Technique
    Staff

    Inscrit:
    17 Août 2012
    Messages:
    5 478
    Points:
    229
    Sexe:
    Homme
    Ok, ça c'est possible facilement, par contre tu m'aurai demandé l'armure qui peut être peinte je sais pas.
    Il faut créer des ItemStack comme ça :
    Code (cpp):
            GameRegistry.addRecipe(new ItemStack(HelmetTuto), new Object[]
                    {
                    "XXX", "X X", 'X', new ItemStack(Item.dye, 1, 0)
                    });
    Dans ce cas j'utilise du colorant noir
    Pour les ItemStack c'est
    new ItemStack(<Item ou bloc>, quantité, metadata)
     
  7. Gallade74

    Gallade74 Nouveau

    Inscrit:
    17 Mar 2013
    Messages:
    4
    Points:
    40
    Sexe:
    Homme
    Ok merci tu m'aide beaucoup, en faite se n'était pas pour faire une armure mais des blocs donc merci.
     
  8. Akitoshi

    Akitoshi Nouveau

    Inscrit:
    17 Avr 2013
    Messages:
    3
    Points:
    44
    Sexe:
    Homme
    Bonjour Merci pour ce tutoriel et aussi les autres mais dans ce tutoriel j'ai une erreur à ce niveau

    Code (java):
    static EnumArmorMaterial ArmorTuto = EnumHelper.addArmorMaterial("ArmorTuto", 20, new int[]{4, 7, 6, 5}, 17); [/code=java]
     
     
    j'ai une erreur au : EnumHelper
     
  9. robin4002

    robin4002 Support Technique
    Staff

    Inscrit:
    17 Août 2012
    Messages:
    5 478
    Points:
    229
    Sexe:
    Homme
    Il faut l'importer.
    Si eclipse ne trouve pas la classe à importer ajoute ça dans les importations :
    Code (java):
    import net.minecraftforge.common.EnumHelper;
     
  10. Akitoshi

    Akitoshi Nouveau

    Inscrit:
    17 Avr 2013
    Messages:
    3
    Points:
    44
    Sexe:
    Homme
    Merci bien je savais que c'était au niveau de l'importation mais je savais pas quoi X)


    j'espère que sa aidera d'autre =)
     
  11. Hugucool

    Hugucool Explorateur

    Inscrit:
    6 Sept 2011
    Messages:
    71
    Points:
    83
    Sexe:
    Homme
    Valable pour 1.5.2 ? Aussi les mods 1.5.1 marche en 1.5.2?
     
  12. robin4002

    robin4002 Support Technique
    Staff

    Inscrit:
    17 Août 2012
    Messages:
    5 478
    Points:
    229
    Sexe:
    Homme
    Tout les tutoriels 1.5.1 sont valable 1.5.2, il y a eu peu de changement.
     
  13. DaddyDoox

    DaddyDoox Nouveau

    Inscrit:
    20 Mai 2013
    Messages:
    6
    Points:
    30
    Sexe:
    Homme
    Bonsoir,

    Tout d'abord je te remercie d'avoir fait ce tutoriel. J'ai un problème au niveau des textures, les armures fonctionnent très bien en jeu mais il manque les textures ...

    Voilà ce que j'ai.

    ItemArmorTuto : http://puu.sh/2XEnq.png
    Classe principale : http://puu.sh/2XErg.png
    ClientProxy : http://puu.sh/2XEt8.png
    Common Proxy : http://puu.sh/2XEtG.png

    Je n'ai pas compris le passage des textures, c'est le premier mod que je fais donc je ne suis pas très doué ... J'espère que tu pourras m'aider, en tout cas merci d'avance.
     
  14. Hugucool

    Hugucool Explorateur

    Inscrit:
    6 Sept 2011
    Messages:
    71
    Points:
    83
    Sexe:
    Homme
    return "/mods/modtutoriel/textures/armors/ArmorTuto_2.png";
    }
    else
    {
    return "/mods/Modtest/textures/armors/ArmorTuto_1.png";
    Tu as pas remplacer le nom des textures
     
  15. DaddyDoox

    DaddyDoox Nouveau

    Inscrit:
    20 Mai 2013
    Messages:
    6
    Points:
    30
    Sexe:
    Homme
    Ah oui en effet mon image se nommait ArmorTuto_2.png. Le ".png" était de trop. J'ai encore une question, je n'ai pas compris le passage pour les icônes, où est-ce qu'on doit définir le chemin d'accès de l'icône ?
     

Partager cette page