• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Une armure

    Les items
    1.6.x
    18
    78
    30221
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • robin4002
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par robin4002

      Maintenant que vous savez faire des items basique, nous allons voir comment faire une armure.

      Dans la classe principale

      Pour commencer, il faut déclarer les quatre items :

      public static Item TutorialHelmet, TutorialChestPlate, TutorialLeggings, TutorialBoots;
      

      En dessous, nous allons déclarer le matériel de l’armure :

      static EnumArmorMaterial TutorialArmor = EnumHelper.addArmorMaterial("Tutorial", 20, new int[]{2, 8, 4, 2}, 15);
      

      Chaque code correspond à :
      EnumHelper.addArmorMaterial(“nom du matériel”, durabilité de l’armure, new int[]{absorption du casque, du plastron, des jambières, des bottes}, facilité d’enchantement)
      Faite un ctrl + clic sur EnumArmorMaterial pour ouvrir la classe si vous souhaitez avoir les valeurs des armures de Minecraft.
      N’oubliez pas d’importer net.minecraft.item.EnumArmorMaterial et net.minecraftforge.common.EnumHelper

      À la suite de vos item, ajoutez les quatre morceaux de l’armure :

      TutorialHelmet = new ItemTutorialArmor(12002, TutorialArmor, 0,0).setUnlocalizedName("TutorialHelmet").setTextureName("modtutoriel:HelmetTutorial");
      TutorialChestPlate = new ItemTutorialArmor(12003, TutorialArmor, 0, 1).setUnlocalizedName("TutorialChestPlate").setTextureName("modtutoriel:ChestPlateTutorial");
      TutorialLeggings = new ItemTutorialArmor(12004, TutorialArmor, 0, 2).setUnlocalizedName("TutorialLeggings").setTextureName("modtutoriel:LeggingsTutorial");
      TutorialBoots = new ItemTutorialArmor(12005, TutorialArmor, 0, 3).setUnlocalizedName("TutorialBoots").setTextureName("modtutoriel:BootsTutorial");
      

      Comme vous pouvez le voir, nous allons utiliser une seul classe pour les quatre pièces d’armures. Vous devrez connaître tout le code, puisque c’est le même qu’un item basique sauf pour le constructeur :
      ItemTutorialArmor(12002, TutorialArmor, 0,0)
      12002 est l’id, TutorialArmor est le nom de l’EnumArmorMaterial que nous avons déclaré au dessus, le premier 0 n’a aucun intérêt pour nous, il n’est que utilisé pour les amures de Minecraft, dans notre cas il sert juste à éviter une erreur dans le constructeur que nous allons créer après dans la classe de l’armure. Laissez 0, si vous mettez un nombre supérieur à 4 vous allez avoir un crash. Le second 0 est correspond à morceau de l’armure, 0 pour un casque, 1 pour le plastron, 2 pour les jambières, et 3 pour les bottes.

      Optionnel, enregistrez vos items à la suite (je répète que ce n’est que pour l’itemTracker de FML, ces codes ne sont pas obligatoire) :

      GameRegistry.registerItem(TutorialHelmet, "TutorialHelmet", "ModTutoriel");
      GameRegistry.registerItem(TutorialChestPlate, "TutorialChestPlate", "ModTutoriel");
      GameRegistry.registerItem(TutorialLeggings, "TutorialLeggings", "ModTutoriel");
      GameRegistry.registerItem(TutorialBoots, "TutorialBoots", "ModTutoriel");
      

      Il vous reste une erreur sur new ItemTutorialArmor, créez cette classe

      La classe de l’armure

      Comme d’habitude, ajoutez l’extends et le constructeur. En revanche, à la place de faire un extends Item, faite un extends ItemArmor :

      package tutoriel.common;
      
      import net.minecraft.item.ItemArmor;
      
      public class ItemTutorialArmor extends ItemArmor
      {
          public ItemTutorialArmor(int id, EnumArmorMaterial armorMaterial, int type, int layer)
          {
              super(id, armorMaterial, type, layer);
          }
      }
      

      Ensuite, ajoutez la fonction getArmor :

      public String getArmorTexture(ItemStack stack, Entity entity, int slot, int layer)
      {
          if(stack.itemID == ModTutoriel.TutorialLeggings.itemID)
          {
              return "modtutoriel:textures/models/armor/tutorial_layer_2.png";
          }
          else
          {
              return "modtutoriel:textures/models/armor/tutorial_layer_1.png";
          }
      }
      

      Le code est simple à comprendre, si l’id de l’item est l’id des jambières, il utilise la texture tutorial_layer_2. Sinon, c’est les autres parti de l’armure, donc il utilise la texture tutorial_layer_1
      D’ailleurs, nous avons vu avant que le layer des jambières est 2, donc ce code fonctionne aussi :

      public String getArmorTexture(ItemStack stack, Entity entity, int slot, int layer)
      {
          if(layer == 2)
          {
              return "modtutoriel:textures/models/armor/tutorial_layer_2.png";
          }
          else
          {
              return "modtutoriel:textures/models/armor/tutorial_layer_1.png";
          }
      }
      

      Mais le premier code est plus avantageux, car on peut mettre plusieurs armures dans la même classe, exemple avec deux armures :

      public String getArmorTexture(ItemStack stack, Entity entity, int slot, int layer)
      {
          if(stack.itemID == ModTutoriel.TutorialLeggings.itemID)
          {
              return "modtutoriel:textures/models/armor/tutorial_layer_2.png"; //armure 1, jambières
          }
          else if(stack.itemID == ModTutoriel.TutorialHelmet.itemID || stack.itemID == ModTutoriel.TutorialChestPlate.itemID || stack.itemID == ModTutoriel.TutorialBoots.itemID)
          {
              return "modtutoriel:textures/models/armor/tutorial_layer_1.png"; //armure 1, casque + plastron + bottes
          }
          else if(stack.itemID == ModTutoriel.TutorialLeggings2.itemID)
          {
              return "modtutoriel:textures/models/armor/tutorial2_layer_2.png"; //armure 2, jambières
          }
          else
          {
              return "modtutoriel:textures/models/armor/tutorial2_layer_2.png"; //armure 2, casque + plastron + bottes
          }
      }
      

      Pour le chemin de texture, modtutoriel correspond à mon modid sans majuscule, et le reste est le chemin exacte après /assets/modid/
      Vous n’êtes pas obligé d’utiliser le même que moi, mais celui-ci est le même que minecraft (Minecraft a les textures d’armures dans assets/minecraft/textures/models/armor/)

      Pour rendre votre armure réparable dans une enclume ajoutez ce code dans la classe :

      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é.

      Les ressources de l’item (texture + nom)

      Pour les textures des items, c’est le même principe qu’un item basique, il faut les mettre dans forge/mcp/src/minecraft/assets/modid/textures/items/
      Pour les textures des modèles de l’amure, placez-les dans forge/mcp/src/minecraft/assets/modid/textures/models/armor/
      Si vous avez besoin de texture de base pour les modèles :
      https://github.com/MCNanotech/ModTutoriel/blob/master/assets/modtutoriel/textures/models/armor/tutorial_layer_1.png
      https://github.com/MCNanotech/ModTutoriel/blob/master/assets/modtutoriel/textures/models/armor/tutorial_layer_2.png

      Pour les noms, c’est comme un item basique, item.nomnonlocalisé.name=nom localisé

      item.TutorialHelmet.name=Tutorial Helmet
      item.TutorialChestPlate.name=Tutorial Chestplate
      item.TutorialLeggings.name=Tutorial Leggings
      item.TutorialBoots.name=Tutorial Boots
      

      Dans mon cas.

      Rendu final

      Voir les changements sur Github


      ho, player911 a un skin !

      1 réponse Dernière réponse Répondre Citer 0
      • robin4002
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

        Je peux avoir la classe principale en entier ?
        Quel erreur s’affiche ?

        1 réponse Dernière réponse Répondre Citer 0
        • 0nit
          0nit dernière édition par

          l’erreur est “Illegal modifier for parameter ItemTuto; only final is permitted”
          et il me propose:“Remove invalid modifiers” ce qui enlève le plublic static.
          Sinon pour la class je peut vous la montrer car je ne suis pas chez moi et j’utilise mon téléphone pour vous répondre.

          Mes tutoriels:

          >! [1.6.x] - Le kit d'outils
          >! [1.6.x] - Les recettes du four

          1 réponse Dernière réponse Répondre Citer 0
          • robin4002
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

            Tu déclare pas l’item au bon endroit.
            Il faut le mettre après l’accolade de ta classe :

            public class MonMod
            {
            tes proxy
            ton instance
            public static Item ….
            
            @EventHandler
            public void preInit(FML....
            
            1 réponse Dernière réponse Répondre Citer 0
            • 0nit
              0nit dernière édition par

              OK merci 😄

              Mes tutoriels:

              >! [1.6.x] - Le kit d'outils
              >! [1.6.x] - Les recettes du four

              1 réponse Dernière réponse Répondre Citer 0
              • Fanor79
                Fanor79 dernière édition par

                Bonjour a vous moi j’ai un probleme de texture (une fois porté) ça ne veut pas s’afficher sur le personnage et je ne vois pas l’erreur :3
                voici le code :

                package fr.Fanor.TSG.Item;
                
                import cpw.mods.fml.relauncher.Side;
                import cpw.mods.fml.relauncher.SideOnly;
                import fr.Fanor.TSG.TSGMod;
                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 ArmorTSG extends ItemArmor{
                
                public ArmorTSG(int par1, EnumArmorMaterial par2ArmorMaterial, int par3, int par4){
                super(par1, par2ArmorMaterial, par3, par4);
                
                }
                
                public String getArmorTexture(ItemStack stack, Entity entity, int slot, int layer)
                {
                if(stack.itemID == TSGMod.leggingsRubis.itemID)
                {
                return "tsg:textures/models/armor/rubis_2.png";
                }
                else
                {
                return "tsg:textures/models/armor/rubis_1.png";
                }
                }
                
                public boolean getIsRepariable(ItemStack par1ItemStack, ItemStack par2ItemStack){
                return true;
                }
                }
                
                

                Merci de vos aide 😄

                1 réponse Dernière réponse Répondre Citer 0
                • MrCupCakeMonster
                  MrCupCakeMonster dernière édition par

                  Tu as bien mis tes textures ?

                  Mes tutos :

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

                  1 réponse Dernière réponse Répondre Citer 0
                  • Fanor79
                    Fanor79 dernière édition par

                    Oui j’ai mis les textures dans assets.tsg.textures.models.armor

                    1 réponse Dernière réponse Répondre Citer 0
                    • 0nit
                      0nit dernière édition par

                      Tu utilise un windows ou un mac ?
                      Car moi j’ai ue un bug, j’aivais aucune de mes textures qui saffichet puis j’ai férmer eclipse et la toutes mes textures étaient là 🙂 comme par magie.
                      Sinon quand tu lance le jeu la console t’affiche quoi ?

                      Mes tutoriels:

                      >! [1.6.x] - Le kit d'outils
                      >! [1.6.x] - Les recettes du four

                      1 réponse Dernière réponse Répondre Citer 0
                      • Fanor79
                        Fanor79 dernière édition par

                        Je suis sous Windows mais j’ai beau fermer eclipse rien ne se passe 😕 et je ne pense pas que ca sois un problème de texture car il y aucune texture blanche sur le personnage quand j’équipe mon armure et ca me met plein d’erreur du genre RenderBiped

                        1 réponse Dernière réponse Répondre Citer 0
                        • MrCupCakeMonster
                          MrCupCakeMonster dernière édition par

                          Ton Java est à jour ?

                          Mes tutos :

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

                          1 réponse Dernière réponse Répondre Citer 0
                          • Fanor79
                            Fanor79 dernière édition par

                            Yep dernière version

                            1 réponse Dernière réponse Répondre Citer 0
                            • robin4002
                              robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                              @‘MrCupCakeMonster’:

                              Ton Java est à jour ?

                              Aucun rapport.
                              @‘Fanor79’:

                              Je suis sous Windows mais j’ai beau fermer eclipse rien ne se passe 😕 et je ne pense pas que ca sois un problème de texture car il y aucune texture blanche sur le personnage quand j’équipe mon armure et ca me met plein d’erreur du genre RenderBiped

                              On peut pas les deviner ces erreurs … Il me faut un copier/coller
                              En passant, je peux avoir un screenshot de l’arborescence de ton dossier où tu as les textures ?

                              1 réponse Dernière réponse Répondre Citer 0
                              • Fanor79
                                Fanor79 dernière édition par

                                http://puu.sh/3Uhen.png

                                Et voici le code qui s’affiche en boucle

                                
                                at net.minecraft.client.renderer.entity.RenderBiped.getArmorResource(RenderBiped.java:92)
                                2013-08-05 14:27:34 [INFO] [STDERR] at net.minecraft.client.renderer.entity.RenderPlayer.setArmorModel(RenderPlayer.java:72)
                                2013-08-05 14:27:34 [INFO] [STDERR] at net.minecraft.client.renderer.entity.RenderPlayer.shouldRenderPass(RenderPlayer.java:514)
                                2013-08-05 14:27:34 [INFO] [STDERR] at net.minecraft.client.renderer.entity.RendererLivingEntity.func_130000_a(RendererLivingEntity.java:162)
                                2013-08-05 14:27:34 [INFO] [STDERR] at net.minecraft.client.renderer.entity.RenderPlayer.func_130009_a(RenderPlayer.java:166)
                                2013-08-05 14:27:34 [INFO] [STDERR] at net.minecraft.client.renderer.entity.RenderPlayer.doRender(RenderPlayer.java:553)
                                2013-08-05 14:27:34 [INFO] [STDERR] at net.minecraft.client.renderer.entity.RenderManager.renderEntityWithPosYaw(RenderManager.java:312)
                                2013-08-05 14:27:34 [INFO] [STDERR] at net.minecraft.client.gui.inventory.GuiInventory.func_110423_a(GuiInventory.java:121)
                                2013-08-05 14:27:34 [INFO] [STDERR] at net.minecraft.client.gui.inventory.GuiContainerCreative.drawGuiContainerBackgroundLayer(GuiContainerCreative.java:835)
                                2013-08-05 14:27:34 [INFO] [STDERR] at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:111)
                                2013-08-05 14:27:34 [INFO] [STDERR] at net.minecraft.client.renderer.InventoryEffectRenderer.drawScreen(InventoryEffectRenderer.java:43)
                                2013-08-05 14:27:34 [INFO] [STDERR] at net.minecraft.client.gui.inventory.GuiContainerCreative.drawScreen(GuiContainerCreative.java:669)
                                2013-08-05 14:27:34 [INFO] [STDERR] at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1036)
                                2013-08-05 14:27:34 [INFO] [STDERR] at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:934)
                                2013-08-05 14:27:34 [INFO] [STDERR] at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:826)
                                2013-08-05 14:27:34 [INFO] [STDERR] at net.minecraft.client.main.Main.main(Main.java:93)
                                2013-08-05 14:27:34 [INFO] [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                                2013-08-05 14:27:34 [INFO] [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
                                2013-08-05 14:27:34 [INFO] [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
                                2013-08-05 14:27:34 [INFO] [STDERR] at java.lang.reflect.Method.invoke(Unknown Source)
                                2013-08-05 14:27:34 [INFO] [STDERR] at net.minecraft.launchwrapper.Launch.launch(Launch.java:57)
                                2013-08-05 14:27:34 [INFO] [STDERR] at net.minecraft.launchwrapper.Launch.main(Launch.java:18)
                                
                                
                                1 réponse Dernière réponse Répondre Citer 0
                                • robin4002
                                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                                  Il trouve pas les fichiers, vérifie que l’extension est bien .png et pas autre chose. Si c’est pas ça je vois vraiment pas d’où peut venir le problème.

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • Fanor79
                                    Fanor79 dernière édition par

                                    Oui c’est bien .png je vous passe le code principal en cas ou

                                    
                                    package fr.Fanor.TSG;
                                    
                                    import java.util.HashMap;
                                    
                                    import net.minecraft.block.Block;
                                    import net.minecraft.block.BlockOre;
                                    import net.minecraft.block.BlockOreStorage;
                                    import net.minecraft.block.material.Material;
                                    import net.minecraft.client.renderer.texture.IconRegister;
                                    import net.minecraft.creativetab.CreativeTabs;
                                    import net.minecraft.item.EnumArmorMaterial;
                                    import net.minecraft.item.EnumToolMaterial;
                                    import net.minecraft.item.Item;
                                    import net.minecraft.item.ItemArmor;
                                    import net.minecraft.item.ItemAxe;
                                    import net.minecraft.item.ItemFood;
                                    import net.minecraft.item.ItemHoe;
                                    import net.minecraft.item.ItemMultiTextureTile;
                                    import net.minecraft.item.ItemPickaxe;
                                    import net.minecraft.item.ItemSpade;
                                    import net.minecraft.item.ItemSword;
                                    import net.minecraftforge.common.EnumHelper;
                                    import net.minecraftforge.common.MinecraftForge;
                                    import cpw.mods.fml.common.Mod;
                                    import cpw.mods.fml.common.Mod.EventHandler;
                                    import cpw.mods.fml.common.Mod.Init;
                                    import cpw.mods.fml.common.Mod.Instance;
                                    import cpw.mods.fml.common.Mod.PreInit;
                                    import cpw.mods.fml.common.SidedProxy;
                                    import cpw.mods.fml.common.event.FMLInitializationEvent;
                                    import cpw.mods.fml.common.event.FMLPreInitializationEvent;
                                    import cpw.mods.fml.common.network.NetworkMod;
                                    import cpw.mods.fml.common.registry.GameRegistry;
                                    import cpw.mods.fml.relauncher.Side;
                                    import cpw.mods.fml.relauncher.SideOnly;
                                    import fr.Fanor.TSG.Block.Brick;
                                    import fr.Fanor.TSG.Block.Fleur;
                                    import fr.Fanor.TSG.Block.Lumiere;
                                    import fr.Fanor.TSG.Block.Stairs;
                                    import fr.Fanor.TSG.Item.ArmorTSG;
                                    import fr.Fanor.TSG.Item.ItemTsg;
                                    
                                    @Mod(modid = "tsg", name = "TheSystemGame", version = "1.1")
                                    @NetworkMod(clientSideRequired = true, serverSideRequired = false)
                                    
                                    public class TSGMod
                                    {
                                    @Instance("tsg")
                                    
                                    TSGMod modInstance;
                                    
                                    public static final CreativeTabs items = new fr.Fanor.TSG.CreativeTabs.Items("Creatif Items");
                                    
                                    public static EnumArmorMaterial RUBIS, EMERALD;
                                    
                                    /* Armure + minerais de Rubis*/
                                    public static Item ingotRubis, helmetRubis, chestplateRubis, leggingsRubis, bootsRubis;
                                    
                                    @EventHandler
                                    public void preInit(FMLPreInitializationEvent event){
                                    RUBIS = EnumHelper.addArmorMaterial("RUBIS", 35, new int[] {3, 10, 6, 4}, 15);
                                    
                                    }
                                    @EventHandler
                                    public void Init(FMLInitializationEvent event)
                                    {
                                    
                                    initItem();
                                    
                                    }
                                    
                                    public void initItem(){
                                    
                                    ingotRubis = (new ItemTsg(1000)).setUnlocalizedName("ingotRubis").setCreativeTab(items);
                                    helmetRubis = (new ArmorTSG(1001, RUBIS, 5, 0)).func_111206_d("tsg:helmetRubis").setUnlocalizedName("helmetRubis").setCreativeTab(items);
                                    chestplateRubis = (new ArmorTSG(1002, RUBIS, 5, 1)).func_111206_d("tsg:chestplateRubis").setUnlocalizedName("chestplateRubis").setCreativeTab(items);
                                    leggingsRubis = (new ArmorTSG(1003, RUBIS, 5, 2).func_111206_d("tsg:leggingsRubis")).setUnlocalizedName("leggingsRubis").setCreativeTab(items);
                                    bootsRubis = (new ArmorTSG(1004, RUBIS, 5, 3).func_111206_d("tsg:bootsRubis")).setUnlocalizedName("bootsRubis").setCreativeTab(items);
                                    
                                    }
                                    
                                    }
                                    
                                    
                                    1 réponse Dernière réponse Répondre Citer 0
                                    • MrCupCakeMonster
                                      MrCupCakeMonster dernière édition par

                                      @‘robin4002’:

                                      @‘MrCupCakeMonster’:

                                      Ton Java est à jour ?

                                      Aucun rapport.

                                      Je sais, mais c’était en quelques sortes pour “relancer” son aide 🙂

                                      Mes tutos :

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

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • robin4002
                                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                                        Pas très utile, surtout si c’est pour relancer 19 minutes après –’
                                        Je vois vraiment pas d’où vient le problème, tu peux m’envoyer les sources ?

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • Fanor79
                                          Fanor79 dernière édition par

                                          Oui les voila https://dl.dropboxusercontent.com/u/57092855/Source.zip j’ai aussi mit les textures

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • 0nit
                                            0nit dernière édition par

                                            Sinon moi j’ai les gameRegistery qui font crash le jeu :huh:

                                            GameRegistry.registerItem(ItemTutorial, "ItemTutorial", "ModTutoriel");
                                            

                                            Mes tutoriels:

                                            >! [1.6.x] - Le kit d'outils
                                            >! [1.6.x] - Les recettes du four

                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 1 / 4
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            Contact / Mentions Légales

                                            MINECRAFT FORGE FRANCE © 2018

                                            Powered by NodeBB