Problème création d'armure



  • [font=Ubuntu, sans-serifJe suis sur Eclipse avec forge-1.8.9-11.15.1.1722-mdk .]

    [font=Ubuntu, sans-serifJ'ai suivi ce tutoriel: https://www.minecraftforgefrance.fr/showthread.php?tid=674 -  ][font=Ubuntu, sans-serifhttps://www.youtube.com/watch?v=tzM3TkbpdVs]

    Suite à mes autres problèmes résolus, je crée donc mon armure en cuivre.
    Seulement, le jeu ne se lance pas, faute d'erreurs.

    Classe principale:

    package fr.vorax.egypte.common;
    
    import fr.vorax.egypte.proxy.CommonProxy;
    import net.minecraft.block.Block;
    import net.minecraft.block.material.Material;
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.resources.model.ModelResourceLocation;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemArmor.ArmorMaterial;
    import net.minecraftforge.common.util.EnumHelper;
    import net.minecraftforge.fml.common.Mod;
    import net.minecraftforge.fml.common.Mod.EventHandler;
    import net.minecraftforge.fml.common.Mod.Instance;
    import net.minecraftforge.fml.common.SidedProxy;
    import net.minecraftforge.fml.common.event.FMLInitializationEvent;
    import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
    import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
    import net.minecraftforge.fml.common.registry.GameRegistry;
    
    @Mod(modid = "modegypte", name = "Mod Egypte", version = "1.0.0")
    
    public class ModEgypte
    {
        @Instance("modegypte")
        public static ModEgypte instance;
    
        @SidedProxy(clientSide = "fr.vorax.egypte.proxy.ClientProxy", serverSide = "fr.vorax.egypte.proxy.CommonProxy")
       public static CommonProxy proxy;
    
        public static Item cuivreLingot, helmetCopper, chestPlateCopper, leggingsCopper, bootsCopper;
        public static Block cuivreBloc, limonBloc, limonMouilleBloc, briqueCrueBloc;
    
        public static ArmorMaterial copperArmor = EnumHelper.addArmorMaterial("copperArmor", 10, new int[]{2, 6, 5, 2}, 20);
    
        @EventHandler
        public void preInit(FMLPreInitializationEvent event)
        {
            //ITEMS
            cuivreLingot = new CuivreLingot().setUnlocalizedName("cuivreLingot").setCreativeTab(CreativeTabs.tabMaterials);
            helmetCopper = new CopperArmor(copperArmor, 0).setUnlocalizedName("helmetCopper");
            chestPlateCopper = new CopperArmor(copperArmor, 1).setUnlocalizedName("chestPlateCopper");
            leggingsCopper = new CopperArmor(copperArmor, 2).setUnlocalizedName("leggingsCopper");
            bootsCopper = new CopperArmor(copperArmor, 3).setUnlocalizedName("bootsCopper");
    
            //ItemsRegistry
            GameRegistry.registerItem(cuivreLingot, "cuivre_Lingot");
            GameRegistry.registerItem(helmetCopper, helmet_copper);
            GameRegistry.registerItem(chestPlateCopper, chestplate_copper);
            GameRegistry.registerItem(leggingsCopper, leggings_copper);
            GameRegistry.registerItem(bootsCopper, boots_copper);
    
            //BLOCS
            cuivreBloc = new CuivreBloc(Material.iron).setUnlocalizedName("cuivrebloc").setCreativeTab(CreativeTabs.tabBlock);
            limonBloc = new LimonBloc(Material.ground).setUnlocalizedName("limonbloc").setCreativeTab(CreativeTabs.tabBlock);
            limonMouilleBloc = new LimonMouilleBloc(Material.ground).setUnlocalizedName("limonmouillebloc").setCreativeTab(CreativeTabs.tabBlock);
            briqueCrueBloc = new BriqueCrueBloc(Material.ground).setUnlocalizedName("briquecruebloc").setCreativeTab(CreativeTabs.tabBlock);
            //BlocsRegistry
            GameRegistry.registerBlock(cuivreBloc, "cuivre_bloc");
            GameRegistry.registerBlock(limonBloc, "limon_bloc");
            GameRegistry.registerBlock(limonMouilleBloc, "limon_mouille_bloc");
            GameRegistry.registerBlock(briqueCrueBloc, "brique_crue_bloc");
        }
    
        @EventHandler
        public void Init(FMLInitializationEvent event)
        {
            proxy.registerRender();
    
            if(event.getSide().isClient())
                    {
                        //Items Enregistrés
                        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(cuivreLingot, 0, new ModelResourceLocation("modegypte:cuivre_Lingot", "inventory"));
                        //Blocs Enregistrés en Items
                        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock(cuivreBloc), 0, new ModelResourceLocation("modegypte:cuivre_bloc", "inventory"));
                        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock(limonBloc), 0, new ModelResourceLocation("modegypte:limon_bloc", "inventory"));
                        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock(limonMouilleBloc), 0, new ModelResourceLocation("modegypte:limon_mouille_bloc", "inventory"));
                        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock(briqueCrueBloc), 0, new ModelResourceLocation("modegypte:brique_crue_bloc", "inventory"));
                    }
        }
    
        @EventHandler
        public void postInit(FMLPostInitializationEvent event)
        {
    
        }
    }
    

    La classe de mon armure 'CopperArmor.java' :

    package fr.vorax.egypte.common;
    
    import net.minecraft.item.ItemArmor;
    
    public class CopperArmor extends ItemArmor
    {
        public CopperArmor(ArmorMaterial material, int armorType)
        {
            super(material, 0, armorType);
        }
    
    }
    
    

    Log: http://www.cjoint.com/c/FEksyigXUFk

    Les erreurs sont les suivantes dans la classe principale:

    public static ArmorMaterial copperArmor = EnumHelper.addArmorMaterial("copperArmor", 10, new int[{2, 6, 5, 2}, 20);]

     //ItemsRegistry
            GameRegistry.registerItem(cuivreLingot, "cuivre_Lingot");
            GameRegistry.registerItem(helmetCopper, helmet_copper);
            GameRegistry.registerItem(chestPlateCopper, chestplate_copper);
            GameRegistry.registerItem(leggingsCopper, leggings_copper);
            GameRegistry.registerItem(bootsCopper, boots_copper);

    Je tiens à dire que je suis dur de compréhension mais force est de s'apercevoir qu'une fois qu'on m'explique tout, je retiens bien (cf mes nouveaux blocs).
    J'espère que vous pourrez y faire quelque chose, merci d'avance.


  • Administrateurs

    GameRegistry.registerItem(cuivreLingot, "cuivre_Lingot");
           GameRegistry.registerItem(helmetCopper, helmet_copper);
           GameRegistry.registerItem(chestPlateCopper, chestplate_copper);
           GameRegistry.registerItem(leggingsCopper, leggings_copper);
           GameRegistry.registerItem(bootsCopper, boots_copper);
    

    Compare la première ligne avec les autres.

    public static ArmorMaterial copperArmor = EnumHelper.addArmorMaterial("copperArmor", 10, new int[]{2, 6, 5, 2}, 20);
    

    Il te manque un argument de type String.
    Exemple:

    public static ArmorMaterial silverArmor = EnumHelper.addArmorMaterial("SilverArmor", "silver_armor", 35, new int[] {4, 9, 7, 4}, 15);
    


  • Merci, les items sont donc en jeu avec chacun une texture, mais il est à noter que l'armure n'a pas un skin décoloré comme dans la vidéo que je suis, mais elle est noire et violette sur ses 4 parties une fois portées.
    Il est normal qu'il n'y ai pas de texture, car je ne connais pas le code qui est spécifique à ces textures, ni où il faut l'insérer en 1.8.

    Classe principale:

    %(#333333)[```java
    ]
    package fr.vorax.egypte.common;

    import fr.vorax.egypte.proxy.CommonProxy;
    import net.minecraft.block.Block;
    import net.minecraft.block.material.Material;
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.resources.model.ModelResourceLocation;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.item.Item;
    import net.minecraft.item.Item.ToolMaterial;
    import net.minecraft.item.ItemArmor.ArmorMaterial;
    import net.minecraftforge.common.util.EnumHelper;
    import net.minecraftforge.fml.common.Mod;
    import net.minecraftforge.fml.common.Mod.EventHandler;
    import net.minecraftforge.fml.common.Mod.Instance;
    import net.minecraftforge.fml.common.SidedProxy;
    import net.minecraftforge.fml.common.event.FMLInitializationEvent;
    import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
    import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
    import net.minecraftforge.fml.common.registry.GameRegistry;

    @Mod(modid = "modegypte", name = "Mod Egypte", version = "1.0.0")

    public class ModEgypte
    {
        @Instance("modegypte")
        public static ModEgypte instance;

    @SidedProxy(clientSide = "fr.vorax.egypte.proxy.ClientProxy", serverSide = "fr.vorax.egypte.proxy.CommonProxy")
       public static CommonProxy proxy;

    public static Item cuivreLingot, copperHelmet, copperChestPlate, copperLeggings, copperBoots, copperSword, copperAxe, copperPickaxe, copperShovel, copperHoe;
        public static Block cuivreBloc, limonBloc, limonMouilleBloc, briqueCrueBloc;

    public static ArmorMaterial armorCopper = EnumHelper.addArmorMaterial("armorCopper", "armorCopper", 10, new int[]{2, 6, 5, 2}, 20);
        public static ToolMaterial toolCopper = EnumHelper.addToolMaterial("toolCopper", 2, 200, 5.0F, 2.0F, 17);

    @EventHandler
        public void preInit(FMLPreInitializationEvent event)
        {
            //ITEMS
            cuivreLingot = new CuivreLingot().setUnlocalizedName("cuivreLingot").setCreativeTab(CreativeTabs.tabMaterials);
            copperHelmet = new ArmorCopper(armorCopper, 0).setUnlocalizedName("copperHelmet");
            copperChestPlate = new ArmorCopper(armorCopper, 1).setUnlocalizedName("copperChestPlate");
            copperLeggings = new ArmorCopper(armorCopper, 2).setUnlocalizedName("copperLeggings");
            copperBoots = new ArmorCopper(armorCopper, 3).setUnlocalizedName("copperBoots");

    copperSword = new SwordCopper(toolCopper).setUnlocalizedName("copperSword");
            copperAxe = new AxeCopper(toolCopper).setUnlocalizedName("copperAxe");
            copperPickaxe = new PickaxeCopper(toolCopper).setUnlocalizedName("copperPickaxe");
            copperShovel = new ShovelCopper(toolCopper).setUnlocalizedName("copperShovel");
            copperHoe = new HoeCopper(toolCopper).setUnlocalizedName("copperHoe");

    //ItemsRegistry
            GameRegistry.registerItem(cuivreLingot, "cuivre_Lingot");
            GameRegistry.registerItem(copperHelmet, "copper_Helmet");
            GameRegistry.registerItem(copperChestPlate, "copper_ChestPlate");
            GameRegistry.registerItem(copperLeggings, "copper_Leggings");
            GameRegistry.registerItem(copperBoots, "copper_Boots");

    GameRegistry.registerItem(copperSword, "copper_Sword");
            GameRegistry.registerItem(copperAxe, "copper_Axe");
            GameRegistry.registerItem(copperPickaxe, "copper_Pickaxe");
            GameRegistry.registerItem(copperShovel, "copper_Shovel");
            GameRegistry.registerItem(copperHoe, "copper_Hoe");

    //BLOCS
            cuivreBloc = new CuivreBloc(Material.iron).setUnlocalizedName("cuivrebloc").setCreativeTab(CreativeTabs.tabBlock);
            limonBloc = new LimonBloc(Material.ground).setUnlocalizedName("limonbloc").setCreativeTab(CreativeTabs.tabBlock);
            limonMouilleBloc = new LimonMouilleBloc(Material.ground).setUnlocalizedName("limonmouillebloc").setCreativeTab(CreativeTabs.tabBlock);
            briqueCrueBloc = new BriqueCrueBloc(Material.ground).setUnlocalizedName("briquecruebloc").setCreativeTab(CreativeTabs.tabBlock);
            //BlocsRegistry
            GameRegistry.registerBlock(cuivreBloc, "cuivre_bloc");
            GameRegistry.registerBlock(limonBloc, "limon_bloc");
            GameRegistry.registerBlock(limonMouilleBloc, "limon_mouille_bloc");
            GameRegistry.registerBlock(briqueCrueBloc, "brique_crue_bloc");
        }

    @EventHandler
        public void Init(FMLInitializationEvent event)
        {
            proxy.registerRender();

    if(event.getSide().isClient())
                    {
                   //Textures
                        //Items Enregistrés
                        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(cuivreLingot, 0, new ModelResourceLocation("modegypte:cuivre_Lingot", "inventory"));
                        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(copperHelmet, 0, new ModelResourceLocation("modegypte:copper_Helmet", "inventory"));
                        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(copperChestPlate, 0, new ModelResourceLocation("modegypte:copper_ChestPlate", "inventory"));
                        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(copperLeggings, 0, new ModelResourceLocation("modegypte:copper_Leggings", "inventory"));
                        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(copperBoots, 0, new ModelResourceLocation("modegypte:copper_Boots", "inventory"));

    Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(copperSword, 0, new ModelResourceLocation("modegypte:copper_Sword", "inventory"));
                        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(copperAxe, 0, new ModelResourceLocation("modegypte:copper_Axe", "inventory"));
                        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(copperPickaxe, 0, new ModelResourceLocation("modegypte:copper_Pickaxe", "inventory"));
                        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(copperShovel, 0, new ModelResourceLocation("modegypte:copper_Shovel", "inventory"));
                        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(copperHoe, 0, new ModelResourceLocation("modegypte:copper_Hoe", "inventory"));

    //Blocs Enregistrés en Items
                        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock(cuivreBloc), 0, new ModelResourceLocation("modegypte:cuivre_bloc", "inventory"));
                        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock(limonBloc), 0, new ModelResourceLocation("modegypte:limon_bloc", "inventory"));
                        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock(limonMouilleBloc), 0, new ModelResourceLocation("modegypte:limon_mouille_bloc", "inventory"));
                        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock(briqueCrueBloc), 0, new ModelResourceLocation("modegypte:brique_crue_bloc", "inventory"));
                    }
        }

    @EventHandler
        public void postInit(FMLPostInitializationEvent event)
        {

    }
    }
    %(#333333)[

    
    La classe 'Armor[color=#cc99ffCopper].java' :
    
    %(#333333)[```java
    ]
    
    package fr.vorax.egypte.common;
    
    import net.minecraft.item.ItemArmor;
    import net.minecraft.item.ItemStack;
    
    public class ArmorCopper extends ItemArmor
    {
        public ArmorCopper(ArmorMaterial material, int type)
        {
            super(material, 0, type);
        }
    
        public boolean getIsRepairable(ItemStack input, ItemStack repair)
    
        {
    
            if(repair.getItem() == ModEgypte.cuivreLingot)
    
            {
    
                return true;
    
            }
    
            return false;
    
        }
    
    }
    %(#333333)[
    ```]
    
    Chemin des dossiers avec les textures en .png en rapport avec les 4 items formant l'armure :
    
    [color=#333333modegypte->textures->models->armor->CuivreArmure_layer_1]
    [color=#333333modegypte->]textures->models->armor->CuivreArmure_layer_2
    
    log: http://www.cjoint.com/c/FElou6zO3gk


  • Après avoir très très très longuement recherché d'autres choses pour mon mod (il suffit de regarder l'heure de ce post pour comprendre la force de ces 3 "très"), je suis tombé par hasard sur la réponse à ma question, elle est ici, dans la classe de mon armure 'ArmorCopper.java' :

    package fr.vorax.egypte.common;
    
    import net.minecraft.entity.Entity;
    import net.minecraft.item.ItemArmor;
    import net.minecraft.item.ItemStack;
    
    public class ArmorCopper extends ItemArmor
    {
        public ArmorCopper(ArmorMaterial material, int type)
        {
            super(material, 0, type);
        }
    
        public boolean getIsRepairable(ItemStack input, ItemStack repair)
    
        {
    
            if(repair.getItem() == ModEgypte.cuivreLingot)
    
            {
    
                return true;
    
            }
    
            return false;
    
        }
    
        @Override
        public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type)
        {
            if(slot == 0 || slot == 1 || slot == 3)
            {
                return "modegypte:textures/models/armor/CuivreArmure_layer_1.png";
            } 
            else if (slot == 2)
            {    return "modegypte:textures/models/armor/CuivreArmure_layer_2.png";
            }
            else 
            {
                return null;
            }
    
            }
        }
    
    

    N'oubliez pas le petit + si je vous ai aidé, j'en serai ravi, et cela me poussera encore plus à aider!
    En espérant aider mon prochain, je vous dis à la prochaine!