22 mars 2014, 21:29

Bonjour tout le monde, je suis actuellement les tutos sur le modding forge.
J’en suis à la partie de l’armure. J’ai donc fait quelques tests avec un set d’armure, mais le souci est que je n’arrive pas à lui faire charger un layer que j’ai personnalisé.
Voici ma classe ModTest (j’ai appelé mon mod “test”):

package fr.nf.odekproduction.test.common;

import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemArmor.ArmorMaterial;
import net.minecraftforge.common.util.EnumHelper;
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.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import fr.nf.odekproduction.test.proxy.CommonProxy;

@Mod(modid = "modtest", name = "ModTest", version = "3.1")
public class ModTest
{
@Instance("modtest")
public static ModTest instance;
@SidedProxy(clientSide = "fr.nf.odekproduction.test.proxy.ClientProxy", serverSide = "fr.nf.odekproduction.test.proxy.CommonProxy")
public static CommonProxy proxy;

public static Item itemTest, itemTest2, chapeauTest, cuirasseTest, pantalonTest, bottesTest;
public static ArmorMaterial ArmureTest = EnumHelper.addArmorMaterial("armureTestMateriel", 25, new int[] {4, 6, 5, 4}, 20);

@EventHandler
public void preInit(FMLPreInitializationEvent Event)
{
itemTest = new itemTest().setUnlocalizedName("Test").setTextureName("modtest:item_test").setCreativeTab(CreativeTabs.tabMaterials);
itemTest2 = new itemTest().setUnlocalizedName("Test2").setTextureName("modtest:item_test2").setCreativeTab(CreativeTabs.tabMaterials);
chapeauTest = new itemArmureTest(ArmureTest, 0).setUnlocalizedName("chapeauTest").setTextureName("modtest:item_chapeau_test");
cuirasseTest = new itemArmureTest(ArmureTest, 1).setUnlocalizedName("cuirasseTest").setTextureName("modtest:item_cuirasse_test");
pantalonTest = new itemArmureTest(ArmureTest, 2).setUnlocalizedName("pantalonTest").setTextureName("modtest:item_pantalon_test");
bottesTest = new itemArmureTest(ArmureTest, 3).setUnlocalizedName("bottesTest").setTextureName("modtest:item_bottes_test");
GameRegistry.registerItem(itemTest, "item_test");
GameRegistry.registerItem(itemTest2, "item_test2");
GameRegistry.registerItem(chapeauTest, "item_chapeau_test");
GameRegistry.registerItem(cuirasseTest, "item_cuirasse_test");
GameRegistry.registerItem(pantalonTest, "item_pantalon_test");
GameRegistry.registerItem(bottesTest, "item_bottes_test");
}

@EventHandler
public void init(FMLInitializationEvent Event)
{
proxy.registerRender();
}

@EventHandler
public void postInit(FMLInitializationEvent Event)
{

}
}

Et voici ma classe itemArmureTest:

package fr.nf.odekproduction.test.common;

import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;

import com.sun.xml.internal.stream.Entity;

public class itemArmureTest extends ItemArmor
{
public itemArmureTest(ArmorMaterial material, int type)
{
super(material, 0, type);
// TODO Auto-generated constructor stub
System.out.println("passage");
}

public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type)
{
System.out.println("passage_texture");
if(slot == 2)
{
return "modtest:textures/models/armor/test_layer_2.png";
}
return "modtest:textures/models/armor/test_layer_1.png";
}
}

Mais ce qui est curieux (d’après moi, car je suis un débutant), c’est que la méthode “getArmorTexture” ne s’exécute pas. On le voit clairement grâce au “println”.
Alors que ce qui est au dessus s’exécute (je vois bien le “passage” dans la console).
Quelqu’un aurait une idée ?
Merci d’avance.
Cordialement.