• Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    Créer un item basique

    Les items
    1.7.x
    37
    243
    52217
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • kevin_68
      kevin_68 Moddeurs confirmés last edited by robin4002

      youtubeCe tutoriel est également disponible en vidéo.

      Sommaire

      • Introduction
      • Pré-requis
      • Code
        • Classe de l’item
        • Classe principale
        • Appliquer une texture
        • Méthodes utiles
      • Résultat
      • Crédits

      Introduction

      Dans ce tutoriel, nous allons créer un item très basique, puis je vais donner quelques méthodes qui peuvent être utiles.

      Pré-requis

      • Créer la base de votre mod

      Code

      Classe de l’item :

      Vous pouvez commencer par créer une nouvelle classe qu’il faut étendre d’Item:

      public class ItemTutoriel extends Item
      {
      
      }
      

      Vous n’avez plus besoin d’ajouter un constructeur en 1.7. Voila, votre classe est terminée, pour l’instant, car vous pourrez lui ajouter des fonctions.

      Classe principale :

      Après avoir fait notre classe d’item, il faut maintenant enregistrer votre item.
      En haut de la classe vous aller déclarer une nouvelle variable Item:

      public static Item itemTutoriel;
      

      Puis, dans la méthode PreInit de votre classe principale (celle avec FMLPreInitializationEvent en argument) vous aller déclarer la variable comme ItemTutoriel:

      itemTutoriel = new ItemTutoriel();
      

      Nous allons lui donner un nom en ajoutant setUnlocalizedName(“nom”) à la déclaration:

      itemTutoriel = new ItemTutoriel().setUnlocalizedName("tutoriel");
      

      Attention, ceci n’est que le nom non localisé donc, en jeu il sera nommé item.tutoriel.name. Pour localiser le nom (donc avec traduction) allez dans forge/src/main/resources/assets/votre_modid/lang/ et ouvrez les fichiers de lang précédemment créés. Ajoutez :

      item.le nom non localisé.name=Nom Localisé
      

      Ce qui donnera pour le en_US.lang :

      item.tutoriel.name=Item Tutorial
      

      et pour le fr_FR.lang :

      item.tutoriel.name=Item Tutoriel
      

      Après ceci, nous allons enregistrer l’item en ajoutant la méthode suivante:

      GameRegistry.registerItem(itemTutoriel, "item_tutoriel")
      

      itemTutoriel correspond à la variable déclaré précédemment.
      “item_tutoriel” correspond au nom donné à l’item dans le “game data”. Ce nom sera utilisé comme référence en jeu (pour le /give, etc …)

      Nous en avons terminé avec la classe principale.

      Appliquer une texture

      Pour appliquer une texture à un item, il existe deux façons de faire, une simple mais limité et une autre plus longue mais complète.

      Simple: il vous suffit de rajouter .setTextureName(ModTutoriel.MODID + “:nomdelatexture”) dans la déclaration de l’item, dans la classe principale.
      Ce qui nous donne:

      itemTutoriel = new ItemTutoriel().setUnlocalizedName("tutoriel").setTextureName(ModTutoriel.MODID + ":itemtutoriel");
      

      Cette méthode étant limité à une seule texture(ce qui est le plus souvent utilisé), il existe une autre façon de faire:
      pour cela, rendez-vous dans la classe de l’Item où vous pouvez ajouter cette méthode qui va enregistrer la texture:

          @Override
          public void registerIcons(IIconRegister iconregister)
          {
              this.itemIcon = iconregister.registerIcon(ModTutoriel.MODID + ":itemtutoriel");
          }
      

      La texture est à mettre dans le dossier assets/modid/textures/items/
      Avec modid à remplacer par l’id du mod.

      Méthodes utiles

      Ajouter votre item à une page de l’inventaire créatif:
      Dans la classe principale ajoutez .setCreativeTab(creativetab) dans la déclaration de l’item (remplacer creativetab par la page souhaitée)

      itemTutoriel = new ItemTutoriel().setUnlocalizedName("itemTutoriel").setTextureName(ModTutoriel.MODID + ":itemtutoriel").setCreativeTab(CreativeTabs.tabMaterials);
      

      Ou dans la classe de l’item, ajouter un constructeur :

      public ItemTutoriel()
      {
          this.setCreativeTab(CreativeTabs.Materials);
      }
      

      Résultat

      0_1529587695902_item_moddé.png

      Github

      Crédits

      Rédaction :

      • kevin_68

      Correction :

      • Superloup10

      Creative Commons
      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

      retourRetour vers le sommaire des tutoriels


      Mettez à jours vers la dernière version stable (1.8.9 voir même…

      1 Reply Last reply Reply Quote 0
      • Kali
        Kali last edited by

        Merci beaucoup 🙂

        1 Reply Last reply Reply Quote 0
        • DarkSilver974
          DarkSilver974 last edited by

          “Vous n’avez plus besoin d’ajouté un constructeur en 1.7.”
          je pense qu’il s’agit “d’ajouter”… xD
          Désolé kevin pour ce commentaire désagréable 😉

          1 Reply Last reply Reply Quote 1
          • robin4002
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

            On va gronder les correcteurs.

            1 Reply Last reply Reply Quote 0
            • BlackPanda
              BlackPanda last edited by

              Bonjour,

              J’ai un problème concernant les textures de mes items. J’aimerais ajouter 5 nouveaux sticks ( bâton vert, bâton rouge etc… ), et pour cela j’ai créer les textures avec le logiciel Paint.net ( transparence activée ).
              J’ai suivi le tutoriel vidéo puis le tutoriel écrit et je n’ais osé utiliser que cette technique là pour mes textures :

              itemTutoriel = new ItemTutoriel().setUnlocalizedName("tutoriel").setTextureName(ModTutoriel.MODID + ":itemtutoriel");
              

              Sinon, voici ma classe principale :

              package fr.blackpandagaming.dragonadventure.common;
              
              import net.minecraft.creativetab.CreativeTabs;
              import net.minecraft.item.Item;
              import cpw.mods.fml.common.Mod;
              import cpw.mods.fml.common.Mod.EventHandler;
              import cpw.mods.fml.common.Mod.Instance;
              import cpw.mods.fml.common.SidedProxy;
              import cpw.mods.fml.common.event.FMLInitializationEvent;
              import cpw.mods.fml.common.event.FMLPostInitializationEvent;
              import cpw.mods.fml.common.event.FMLPreInitializationEvent;
              import cpw.mods.fml.common.registry.GameRegistry;
              import cpw.mods.fml.relauncher.Side;
              import fr.blackpandagaming.dragonadventure.proxy.CommonProxy;
              
              @Mod(modid = DragonAdventure.MODID, name = "Dragon Adventure", version = "1.0.0")
              
              public class DragonAdventure
              {
              public static final String MODID = "dragonadventure";
              @Instance("MODID")
              public static DragonAdventure instance;
              
              @SidedProxy(clientSide = "fr.blackpandagaming.dragonadventure.proxy.ClientProxy", serverSide = "fr.blackpandagaming.dragonadventure.proxy.CommonProxy")
              public static CommonProxy proxy;
              
              public static Item batonVert, batonRouge, batonBleu, batonBlanc, batonNoir;
              
              @EventHandler
              public void preInit(FMLPreInitializationEvent event)
              {
              batonVert = new BatonVert().setUnlocalizedName("batonVert").setTextureName(MODID + ":baton_vert").setCreativeTab(CreativeTabs.tabMaterials);
              batonRouge = new BatonVert().setUnlocalizedName("batonRouge").setTextureName(MODID + ":baton_rouge").setCreativeTab(CreativeTabs.tabMaterials);
              batonBleu = new BatonVert().setUnlocalizedName("batonBleu").setTextureName(MODID + ":baton_bleu").setCreativeTab(CreativeTabs.tabMaterials);
              batonBlanc = new BatonVert().setUnlocalizedName("batonBlanc").setTextureName(MODID + ":baton_blanc").setCreativeTab(CreativeTabs.tabMaterials);
              batonNoir = new BatonVert().setUnlocalizedName("batonNoir").setTextureName(MODID + ":baton_noir").setCreativeTab(CreativeTabs.tabMaterials);
              
              GameRegistry.registerItem(batonVert, "baton_vert");
              GameRegistry.registerItem(batonRouge, "baton_rouge");
              GameRegistry.registerItem(batonBleu, "baton_bleu");
              GameRegistry.registerItem(batonBlanc, "baton_blanc");
              GameRegistry.registerItem(batonNoir, "baton_noir");
              }
              
              @EventHandler
              public void init(FMLInitializationEvent event)
              {
              proxy.registerRender();
              }
              
              @EventHandler
              public void postInit(FMLPostInitializationEvent event)
              {
              
              }
              }
              

              Biensur, j’ai tout suivit à la lettre : mes textures sont en .png et du même nom que ceux que j’ai mis dans ma classe principale.

              Voilà, j’espère que j’ai été clair et qu’il y a une solution a mon problème…

              Cordialement.

              1 Reply Last reply Reply Quote 0
              • utybo
                utybo last edited by

                Remplace MODID par DragonAdventure.MODID
                Et dans ton @Instance, remplace “MODID” par DragonAdventure.MODID
                Tu as bien mis tes textures dans src/main/resources/assets/dragonadventure/textures/items?

                Moddeur à la retraite et développeur de trucs en Java.

                J'aide les gens comme je peux, alors si mon message v…

                1 Reply Last reply Reply Quote 0
                • BlackPanda
                  BlackPanda last edited by

                  D’abord, merci de ta réponse rapide !

                  C’est bon, j’ais régler le problème : je n’avait pas mis mon MODID comme nom de dossier dans le dossier assets –'. Bref encore un truc tout bête 😄
                  En tout cas je te remercie de ton aide !

                  Cordialement.

                  1 Reply Last reply Reply Quote 0
                  • robin4002
                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                    Par contre ça :

                    @Instance("MODID")
                    public static DragonAdventure instance;
                    

                    c’est pas bon. ça devrait être :

                    @Instance("dragonadventure")
                    public static DragonAdventure instance;
                    

                    ou :

                    @Instance(MODID)
                    public static DragonAdventure instance;
                    
                    1 Reply Last reply Reply Quote 0
                    • utybo
                      utybo last edited by

                      Je l’avais déjà dis Robin x)

                      Moddeur à la retraite et développeur de trucs en Java.

                      J'aide les gens comme je peux, alors si mon message v…

                      1 Reply Last reply Reply Quote 1
                      • MrCupCakeMonster
                        MrCupCakeMonster last edited by

                        Bon je me remet au code dans s’il y a des erreurs de débutants c’est normal x)

                        Donc j’ai bien suivis le tuto (enfin je crois) mais l’item n’apparaît pas dans Tabs Materials ^^

                        La classe principale :

                        package com.gmail.zzzmaxipzzz.nuclearreinforced.common;
                        
                        import net.minecraft.creativetab.CreativeTabs;
                        import net.minecraft.item.Item;
                        
                        import com.gmail.zzzmaxipzzz.nuclearreinforced.proxy.CommonProxy;
                        import com.gmail.zzzmaxipzzz.nuclearreinforced.item.*;
                        
                        import cpw.mods.fml.common.Mod;
                        import cpw.mods.fml.common.Mod.EventHandler;
                        import cpw.mods.fml.common.Mod.Instance;
                        import cpw.mods.fml.common.SidedProxy;
                        import cpw.mods.fml.common.event.FMLInitializationEvent;
                        import cpw.mods.fml.common.event.FMLPostInitializationEvent;
                        import cpw.mods.fml.common.event.FMLPreInitializationEvent;
                        import cpw.mods.fml.common.registry.GameRegistry;
                        
                        @Mod(modid = "nuclearreinforced", name = "Nuclear Reinforced", version = "Alpha 0.0.0")
                        public class NuclearReinforced {
                        
                        @Instance("nuclearreinforced")
                        public static NuclearReinforced instance;
                        public static final String MODID = "nuclearreinforced";
                        
                        @SidedProxy(clientSide = "com.gmail.zzzmaxipzzz.nuclearreinforced.proxy.ClientProxy", serverSide = "com.gmail.zzzmaxipzzz.nuclearreinforced.proxy.CommonProxy")
                        public static CommonProxy proxy;
                        
                        public static Item nucleariumIngot;
                        
                        @EventHandler
                        public void preInit(FMLPreInitializationEvent event) {
                        
                        nucleariumIngot = new ItemNuclearium()
                        .setUnlocalizedName("nucleariumIngot")
                        .setTextureName(NuclearReinforced.MODID + ":nuclearium_ingot")
                        .setCreativeTab(CreativeTabs.tabMaterials);
                        
                        GameRegistry.registerItem(nucleariumIngot, "nucleariumIngot");
                        }
                        
                        @EventHandler
                        public void Init(FMLInitializationEvent event) {
                        
                        proxy.registerRender();
                        
                        }
                        
                        @EventHandler
                        public void postInit(FMLPostInitializationEvent event) {
                        
                        }
                        
                        }
                        
                        

                        La classe de l’item :

                        package com.gmail.zzzmaxipzzz.nuclearreinforced.item;
                        
                        import net.minecraft.item.Item;
                        
                        public class ItemNuclearium extends Item {
                        
                        }
                        
                        

                        Mes tutos :

                        >! Un item mangeable
                        [url=http://www.minecraftforgefranc…

                        1 Reply Last reply Reply Quote 0
                        • robin4002
                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                          Pourtant je vois aucun problème o_O
                          Essaye de le give avec /give <ton pseudo=“”>nuclearreinforced:nucleariumIngot</ton>

                          1 Reply Last reply Reply Quote 0
                          • MrCupCakeMonster
                            MrCupCakeMonster last edited by

                            Ah je me disais bien que c’était bizarre !

                            Je vais te passer mes autres class :

                            ClientProxy :

                            package com.gmail.zzzmaxipzzz.nuclearreinforced.proxy;
                            
                            public class ClientProxy extends CommonProxy {
                            
                            @Override
                            public void registerRender() {
                            System.out.println("Méthode côté client");
                            }
                            
                            }
                            
                            

                            CommonProxy :

                            package com.gmail.zzzmaxipzzz.nuclearreinforced.proxy;
                            
                            public class CommonProxy {
                            
                            public void registerRender() {
                            System.out.println("Méthode côté client");
                            }
                            
                            }
                            
                            

                            Et sinon il y a un point d’exclamation rouge sur le projet, quand je lance ça me dit qu’il y a une erreur mais je lance quand même et ça marche sauf que il y a pas mon item

                            EDIT

                            C’est obn ça marche, c’est juste que je sais pas pourquoi mais le chemin src\resources\assets\nuclearreinforced\ ne marche pas et qu’il faut mettre modid à la place de nuclearreinforced.
                            Je vais m’en occuper pour le régler 🙂
                            Merci quand même 😄 !

                            Mes tutos :

                            >! Un item mangeable
                            [url=http://www.minecraftforgefranc…

                            1 Reply Last reply Reply Quote 0
                            • robin4002
                              robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                              Heu pas normal du tout, refait un setup de forge.
                              Et quand tu as un crash, envoie le crash.

                              1 Reply Last reply Reply Quote 0
                              • MrCupCakeMonster
                                MrCupCakeMonster last edited by

                                Bah ducoup maintenant ça marche donc je dois quand même faire ça ?

                                Mes tutos :

                                >! Un item mangeable
                                [url=http://www.minecraftforgefranc…

                                1 Reply Last reply Reply Quote 0
                                • robin4002
                                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                                  Non, si ça fonctionne c’est bon.

                                  1 Reply Last reply Reply Quote 0
                                  • MrCupCakeMonster
                                    MrCupCakeMonster last edited by

                                    Ok merci de ton aide 🙂

                                    Mes tutos :

                                    >! Un item mangeable
                                    [url=http://www.minecraftforgefranc…

                                    1 Reply Last reply Reply Quote 0
                                    • zeldadu76290
                                      zeldadu76290 last edited by

                                      Bonjour a tous je débute en modding et j’aimerait faire quelque petit truc j’ai suivi le tuto je les regarder encore et encore mes mon item n’apparais pas je vous envoi ma classe merci de votre réponse et soyer indulgent svp .

                                      package Primeval.common;
                                      
                                      import net.minecraft.creativetab.CreativeTabs;
                                      import net.minecraft.item.Item;
                                      import Primeval.proxy.CommonProxy;
                                      import cpw.mods.fml.common.Mod;
                                      import cpw.mods.fml.common.Mod.EventHandler;
                                      import cpw.mods.fml.common.Mod.Instance;
                                      import cpw.mods.fml.common.SidedProxy;
                                      import cpw.mods.fml.common.event.FMLInitializationEvent;
                                      import cpw.mods.fml.common.event.FMLPostInitializationEvent;
                                      import cpw.mods.fml.common.event.FMLPreInitializationEvent;
                                      import cpw.mods.fml.common.registry.GameRegistry;
                                      
                                      @Mod(modid = Modprimeval.MODID, name ="PrimevalCraftWorld", version = "1.0.0")
                                      
                                      public class Modprimeval
                                      {
                                      public static final String MODID = "Modprimeval";
                                      
                                      @Instance(MODID)
                                      public static Modprimeval instance;
                                      
                                      @SidedProxy(clientSide = "Primeval.proxy.ClientProxy", serverSide = "Primeval.proxy.CommonProxy")
                                      public static CommonProxy proxy;
                                      
                                      public static Item itemDetecteur;
                                      
                                      @EventHandler
                                      
                                      public void preInit(FMLPreInitializationEvent event)
                                      
                                      {
                                      itemDetecteur = new ItemDetecteur().setUnlocalizedName("Detecteur").setTextureName(Modprimeval.MODID + ":itemdetecteur").setCreativeTab(CreativeTabs.tabRedstone);
                                      
                                      GameRegistry.registerItem(itemDetecteur, "item_detecteur");
                                      
                                      }
                                      @EventHandler
                                      
                                      public void init(FMLInitializationEvent event)
                                      
                                      {
                                      
                                      proxy.registerRender();
                                      
                                      }
                                      @EventHandler
                                      
                                      public void postInit(FMLPostInitializationEvent event)
                                      {
                                      
                                      }
                                      }
                                      

                                      Travail sur le Mod PrimevalCraftWorld  :)

                                      Si tu est Interresser contact moi  :D

                                      1 Reply Last reply Reply Quote 0
                                      • robin4002
                                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                                        public static final String MODID = “Modprimeval”;
                                        Enlève la majuscule :
                                        public static final String MODID = “modprimeval”;
                                        Ensuite en jeu :
                                        /give <ton pseudo=“”>modprimeval:item_detecteur</ton>

                                        1 Reply Last reply Reply Quote 0
                                        • zeldadu76290
                                          zeldadu76290 last edited by

                                          Re bonjour j’ai bien fait comme vous disiez j’ai enlever la majuscule ensuite j’ai fait la commande /give zeldadu76290 modprimeval:item_detecteur mais minecraft dit que l’Id n’existe pas
                                          mes merci de m’avoir répondu .

                                          Travail sur le Mod PrimevalCraftWorld  :)

                                          Si tu est Interresser contact moi  :D

                                          1 Reply Last reply Reply Quote 0
                                          • robin4002
                                            robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                                            Étrange, tu peux envoyer les logs du jeu ?

                                            1 Reply Last reply Reply Quote 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 5
                                            • 12
                                            • 13
                                            • 1 / 13
                                            • First post
                                              Last post
                                            Design by Woryk
                                            Contact / Mentions Légales

                                            MINECRAFT FORGE FRANCE © 2018

                                            Powered by NodeBB