Problème de texture armures !



  • Bonjour,
    voila je crée un petit mod personnel qui rajoute des tenues militaires ! Mais me voila déjà calé à la première tenue ! 😞

    Lorsque je rajoute le getArmorTexture() pour que la texture se mette sur l'armure IG, je mets bien tout, je ne vois pas d'erreurs et pourtant, en jeu, ça me met la texture de l'armure que j'ai initialisé dans ma méthode Armor (genre la texture de la méthode diamant, ou or en fonction de ce que j'ai mis, mais jamais ma texture a moi)….

    Je vous donne les sources !

    MilitaryEquipmentMod.java (le main)

    package fr.militaryequipment.common;
    
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemArmor;
    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.militaryequipment.proxy.CommonProxy;
    
    @Mod(modid = "militaryequipmentmod", name = "Equipment Military", version = "1.0.0")
    
    public class MilitaryEquipmentMod extends Item
    {
    @Instance("militaryequipmentmod")
    public static MilitaryEquipmentMod instance;
    
    @SidedProxy(clientSide = "fr.militaryequipment.proxy.ClientProxy", serverSide = "fr.militaryequipment.proxy.CommonProxy")
    public static CommonProxy proxy;
    
    public static final String MODID = "militaryequipmentmod";
    
    @EventHandler
    public void preInit(FMLPreInitializationEvent event)
    {
    //DECLARATION DES ARMURES
    //MODELE
    Item ModelHelmet = new Item().setUnlocalizedName("ModelHelmet").setTextureName(MODID + ":1model_helmet").setCreativeTab(CreativeTabs.tabMaterials);
    Item ModelChestplate = new Item().setUnlocalizedName("ModelChestplate").setTextureName(MODID + ":1model_chestplate").setCreativeTab(CreativeTabs.tabMaterials);
    Item ModelLeggings = new Item().setUnlocalizedName("ModelLeggings").setTextureName(MODID + ":1model_legs").setCreativeTab(CreativeTabs.tabMaterials);
    Item ModelBoots = new Item().setUnlocalizedName("ModelBoots").setTextureName(MODID + ":1model_boots").setCreativeTab(CreativeTabs.tabMaterials);
    
    //MARINE
    Item MarinesHelmet = new Armor(MilitaryEquipment.MilitaryMaterial, 0).setUnlocalizedName("MarineHelmet").setTextureName(MODID + ":2MarineHelmet");
    Item MarinesChestplate = new Armor(MilitaryEquipment.MilitaryMaterial, 1).setUnlocalizedName("MarineChestplate").setTextureName(MODID + ":2MarineChestplate");
    Item MarinesLeggings = new Armor(MilitaryEquipment.MilitaryMaterial, 2).setUnlocalizedName("MarineLeggings").setTextureName(MODID + ":2MarinePants");
    Item MarinesBoots = new Armor(MilitaryEquipment.MilitaryMaterial, 3).setUnlocalizedName("MarineBoots").setTextureName(MODID + ":2MarineBoots");
    
    //ENREGISTREMENT DES ARMURES
    //MODEL
    GameRegistry.registerItem(ModelHelmet, "Helmet Model");
    GameRegistry.registerItem(ModelChestplate, "Chestplate Model");
    GameRegistry.registerItem(ModelLeggings, "Leggings Model");
    GameRegistry.registerItem(ModelBoots, "Boots Model");
    //MARINES
    GameRegistry.registerItem(MarinesHelmet, "Helmet Marines");
    GameRegistry.registerItem(MarinesChestplate, "Chestplate Marines");
    GameRegistry.registerItem(MarinesLeggings, "Leggings Marines");
    GameRegistry.registerItem(MarinesBoots, "Boots Marines");
    
    }
    
    @EventHandler
    public void init(FMLInitializationEvent event)
    {
    proxy.registerRender();
    
    }
    
    @EventHandler
    public void postInit(FMLPostInitializationEvent event)
    {
    
    }
    }
    

    MilitaryEquipment.java (la déclaration de l'armure)

    package fr.militaryequipment.common;
    
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemArmor.ArmorMaterial;
    import net.minecraftforge.common.util.EnumHelper;
    
    public class MilitaryEquipment {
    
    //DECLARATION D'ITEM
    //MARINES
    public static Item MarinesHelmet;
    public static Item MarinesChestplate;
    public static Item MarinesLeggings;
    public static Item MarinesBoots;
    
    //MATERIAL
    public static ArmorMaterial MilitaryMaterial = EnumHelper.addArmorMaterial("MILITAIRE", 200, new int[]{2, 5, 4, 1}, 1);
    
    }
    

    ModelEquipment.java (la déclaration des items model pour la création des tenues)

    package fr.militaryequipment.common;
    
    import net.minecraft.item.Item;
    
    public class ModelEquipment extends Item{
    
    //MODEL
    public static Item ModelHelmet;
    public static Item ModelChestplate;
    public static Item ModelLeggings;
    public static Item ModelBoots;
    
    }
    

    Armor.java (là ou se trouve la méthode getArmorTexture)

    package fr.militaryequipment.common;
    
    import net.minecraft.entity.Entity;
    import net.minecraft.item.ItemArmor;
    import net.minecraft.item.ItemStack;
    
    public class Armor extends ItemArmor{
    
    public Armor(ArmorMaterial material, int type) {
    super(material, 4, type);
    }
    
    public String getArmorTexture(ItemStack itemStack, Entity entity, int slot, String type)
    {
    //MARINE
    if(itemStack.getItem() == MilitaryEquipment.MarinesHelmet || itemStack.getItem() == MilitaryEquipment.MarinesChestplate || itemStack.getItem() == MilitaryEquipment.MarinesBoots)
    return MilitaryEquipmentMod.MODID + ":textures/models/armor/marine_layer_1.png";
    else if(itemStack.getItem() == MilitaryEquipment.MarinesLeggings)
    return MilitaryEquipmentMod.MODID + ":textures/models/armor/marine_layer_2.png";
    //KSK
    else
    return null;
    }
    }
    

    Et pourtant, j'ai bien mis mes textures marine_layer_1 et marine_layer_2 dans le dossier \textures\model\armor\ ....

    J'espère que vous pourrez un peu m'aider! 🙂

    Cordialement, RageAgain


  • Administrateurs

    Toutes tes variables :
    public static Item MarinesHelmet;
    public static Item MarinesChestplate;
    public static Item MarinesLeggings;
    public static Item MarinesBoots;

    Sont nulles.

    Dans ta classe principale ça devrait être :
    MilitaryEquipment.MarinesHelmet = new Item().setUnlocalizedName("ModelHelmet").setTextureName(MODID + ":1model_helmet").setCreativeTab(CreativeTabs.tabMaterials);
    et non ce que tu as actuellement, car ton code actuel créé une variable local.

    Ne t'amuse pas a dispersé ton code dans 50 classes si ce n'est pas nécessaire, ça complique le code pour rien.



  • Suppeer! Ca fonctionne! merci!
    Je comprend même pas comment j'ai pas vu cette erreur…...O.o

    On m'a déjà fait la réflexion mais j'aime bien avoir un espace de travail très structuré..même si ca complique le code!


  • Administrateurs

    Dans ce cas le mieux et de faire une classe ou tu mets tout ce qui concerne les items, la déclaration et l'initialisation.
    Exemple :
    https://github.com/FFMT/nanotech_mod/blob/master/common/fr/mcnanotech/kevin_68/nanotechmod/main/blocks/NanotechBlock.java
    C'est beaucoup mieux comme organisation. Il suffit d'appeler la méthode initBlock dans la classe principale et voila.
    Également pense à mettre la balise résolu.



  • Mmmh! Ca c'est pas du tout stupide!
    Je vais prendre ce modèle pour mes prochains mods tiens! 🙂

    Avant de mettre la balise résolu, juste une derniere question,
    Pourquoi ce code ne fonctionne-t-il pas?

    
    public void addRecipe(){
    GameRegistry.addRecipe(new ItemStack(MilitaryEquipment.MarinesHelmet, 1), new Object[] {"X", "Y", "#", '#', MilitaryEquipment.ModelHelmet, 'Y', new ItemStack(Items.dye, 1, 8), 'X', new ItemStack(Items.dye, 1, 15)});
    }
    

    J'ai l'impression que quoi que je fasse ne fonctionne pas et je trouve jamais de solutions sur le net.. 😞

    PS: C'est au niveau des colorants, je veux faire en sorte qu'il y ait des colorants dans le craft….lorsque je moddais les fichiers de base de minecraft, ca fonctionnait! mais là...


  • Administrateurs

    Je ne vois pas d'erreur dans ton code, ça ne fonctionne pas ?



  • Non….J'ai beau faire le craft; y a rien qui en sort 😞



  • package fr.militaryequipment.common;
    
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.init.Items;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemArmor;
    import net.minecraft.item.ItemStack;
    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.militaryequipment.proxy.CommonProxy;
    
    @Mod(modid = "militaryequipmentmod", name = "Equipment Military", version = "1.0.0")
    
    public class MilitaryEquipmentMod extends Item
    {
    @Instance("militaryequipmentmod")
    public static MilitaryEquipmentMod instance;
    
    @SidedProxy(clientSide = "fr.militaryequipment.proxy.ClientProxy", serverSide = "fr.militaryequipment.proxy.CommonProxy")
    public static CommonProxy proxy;
    
    public static final String MODID = "militaryequipmentmod";
    
    @EventHandler
    public void preInit(FMLPreInitializationEvent event)
    {
    //DECLARATION DES ARMURES
    //MODELE
    MilitaryEquipment.ModelHelmet = new Item().setUnlocalizedName("ModelHelmet").setTextureName(MODID + ":1model_helmet").setCreativeTab(CreativeTabs.tabMaterials);
    MilitaryEquipment.ModelChestplate = new Item().setUnlocalizedName("ModelChestplate").setTextureName(MODID + ":1model_chestplate").setCreativeTab(CreativeTabs.tabMaterials);
    MilitaryEquipment.ModelLeggings = new Item().setUnlocalizedName("ModelLeggings").setTextureName(MODID + ":1model_legs").setCreativeTab(CreativeTabs.tabMaterials);
    MilitaryEquipment.ModelBoots = new Item().setUnlocalizedName("ModelBoots").setTextureName(MODID + ":1model_boots").setCreativeTab(CreativeTabs.tabMaterials);
    
    //MARINE
    MilitaryEquipment.MarinesHelmet = new Armor(MilitaryEquipment.MilitaryMaterial, 0).setUnlocalizedName("MarineHelmet").setTextureName(MODID + ":2MarineHelmet");
    MilitaryEquipment.MarinesChestplate = new Armor(MilitaryEquipment.MilitaryMaterial, 1).setUnlocalizedName("MarineChestplate").setTextureName(MODID + ":2MarineChestplate");
    MilitaryEquipment.MarinesLeggings = new Armor(MilitaryEquipment.MilitaryMaterial, 2).setUnlocalizedName("MarineLeggings").setTextureName(MODID + ":2MarinePants");
    MilitaryEquipment.MarinesBoots = new Armor(MilitaryEquipment.MilitaryMaterial, 3).setUnlocalizedName("MarineBoots").setTextureName(MODID + ":2MarineBoots");
    
    //ENREGISTREMENT DES ARMURES
    //MODEL
    GameRegistry.registerItem(MilitaryEquipment.ModelHelmet, "Helmet Model");
    GameRegistry.registerItem(MilitaryEquipment.ModelChestplate, "Chestplate Model");
    GameRegistry.registerItem(MilitaryEquipment.ModelLeggings, "Leggings Model");
    GameRegistry.registerItem(MilitaryEquipment.ModelBoots, "Boots Model");
    //MARINES
    GameRegistry.registerItem(MilitaryEquipment.MarinesHelmet, "Helmet Marines");
    GameRegistry.registerItem(MilitaryEquipment.MarinesChestplate, "Chestplate Marines");
    GameRegistry.registerItem(MilitaryEquipment.MarinesLeggings, "Leggings Marines");
    GameRegistry.registerItem(MilitaryEquipment.MarinesBoots, "Boots Marines");
    
    }
    
    @EventHandler
    public void init(FMLInitializationEvent event)
    {
    proxy.registerRender();
    
    }
    
    @EventHandler
    public void postInit(FMLPostInitializationEvent event)
    {
    
    }
    }
    

    Le main de mon mod ressemble à ça…je sens que j'ai oublié un appel ou quelque chose ainsi... 😕


  • Administrateurs

    Ton void
    public void addRecipe(){

    se trouve où ?



  • Dans une classe nommé addRecipe.
    J'ai hésité à la mettre après le postInit, j'aurai dut?


  • Administrateurs

    Dans init plutôt. postInit ça devrait aussi fonctionner.