Rendu d'item avec un model techne
-
Envois la class Assabody
-
package assabody.jeje78660; import net.minecraftforge.common.EnumHelper; import net.minecraft.item.EnumToolMaterial; import net.minecraft.item.Item; import assabody.jeje78660.proxy.AssabodyCommonProxy; 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.network.NetworkMod; import cpw.mods.fml.common.registry.GameRegistry; @Mod(modid = "assabody", name="assabody", version="1.0") @NetworkMod(clientSideRequired = true, serverSideRequired = false) public class Assabody { // this.func_110628_a => Minecraft.getMinecraft().renderEngine.bindTexture // .func_111206_d("modid:textureditem") -> .setTextureName("modid:textureditem") // .func_111022_d("modid:texturedebloc") -> .setTextureName("modid:texturedebloc") // mc.func_110434_K().func_110577_a(resourcelocation) -> mc.getTextureManager().bindTexture(resourcelocation) @SidedProxy(clientSide = "assabody.jeje78660.proxy.AssabodyClientProxy", serverSide = "assabody.jeje78660.proxy.AssabodyCommonProxy") public static AssabodyCommonProxy proxy; public static EnumToolMaterial Arme1Assabody = EnumHelper.addToolMaterial("Arme1Assabody", 3, 2500, 8.0F, 3, 10); @Instance("assabody") public static Assabody instance; public static Item ItemTutorial; @EventHandler public void PreInit(FMLPreInitializationEvent event) { //Block, Items, Achievements, Configurations // ID de l'Item + 256 ItemTutorial = new ItemTutorial(1986, Arme1Assabody).setUnlocalizedName("ItemTutorial").setTextureName("assabody:cd1"); GameRegistry.registerItem(ItemTutorial, "ItemTutorial", "assabody"); } @EventHandler public void Init(FMLInitializationEvent event) { //Mobs, Render, NetWork, Recipe proxy.registerRender(); GameRegistry.registerItem(Assabody.ItemTutorial, "ItemTutorial", "assabody"); } @EventHandler public void PostInit(FMLPostInitializationEvent event) { //Recettes, Cuisson, Languages } } -
Change ça:
GameRegistry.registerItem(Assabody.ItemTutorial, "ItemTutorial", "assabody");par ça:
GameRegistry.registerItem(ItemTutorial, "ItemTutorial", "assabody"); -
Sa fait le mm crash
-
Ron item est enregistrer deux fois, enlève celui dans init.
-
Voila sa marche, merci

Mais maintenant, je ne peut plus casser de blocks quand j’utilise l’épée -
C’est normal, c’est une spécificité de toutes les épées de Minecraft
-
Ah bon ? Bah a partir de la 1.6.4 ou de la 1.6.2 alors
-
Oui, depuis la 1.6.x
-
Salut, pas moyen de modifier la rotation de mon rendu avec GL11.glRotatef(float angle, float x, float y, float z);
Cette méthode est toujours d’actualité ?
PS: de même avec GL11.glTranslatef(float x, float y, float z);
-
Tout dépend d’où tu appelles cette méthode ^^’
Envoie nous ton codeEt OUI, cette méthode est toujours d’actualité (heuresement ^^), elle provient d’OpenGL
-
J’ai directement placé les deux méthodes entre l’ouverture et la fermeture du flux GL11. Lui-même étant dans un switch qui se trouve être dans la fonction renderItem(ItemRenderType type, ItemStack item, Object… data);
#Le code(Le code)
@Override public void renderItem(ItemRenderType type, ItemStack item, Object... data) { switch(type) { case EQUIPPED: { GL11.glPushMatrix(); GL11.glRotatef(1F, 0.0F, 0.0F, 1.0F); //La méthode de rotation GL11.glTranslatef(1.0F, 2.0F, 1.5F); // La méthode de translation Minecraft.getMinecraft().renderEngine.bindTexture(texture); model.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); GL11.glPopMatrix(); } default: break; } } -
@‘Derwaan’:
J’ai directement placé les deux méthodes entre l’ouverture et la fermeture du flux GL11. Lui-même étant dans un switch qui se trouve être dans la fonction renderItem(ItemRenderType type, ItemStack item, Object… data);
#Le code(Le code)
@Override public void renderItem(ItemRenderType type, ItemStack item, Object... data) { switch(type) { case EQUIPPED: { GL11.glPushMatrix(); GL11.glRotatef(1F, 0.0F, 0.0F, 1.0F); //La méthode de rotation GL11.glTranslatef(1.0F, 2.0F, 1.5F); // La méthode de translation Minecraft.getMinecraft().renderEngine.bindTexture(texture); model.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); GL11.glPopMatrix(); } default: break; } }La ligne de GL11.glRotatef prend ceci comme paramètres :
GL11.glRotatef(ANGLE(float), (Multiplicateur X)0.0F, (Multiplicateur Y)0.0F, (Multiplicateur Z)1.0F);En gros, pour une rotation de 90° sur l’axe Z :
GL11.glRotatef(90, 0.0F, 0.0F, 1.0F);Pourquoi ? Car on affecte l’axe Z de 1 fois l’angle, soit 1*90 soit 90°
Si on mettais 1.0F a l’axe X et 0.5F a l’axe Y, on affecterais de 90° l’axe X, puis de 45° l’axe Y
-
Malgré cela pas moyen de faire tourner l’objet tenu en main. Il reste dans sa position par défaut. Idem avec GL11.glTranslatef(coord…);
-
Attention, tu dans la case EQUIPPED, c’est à dire en 3ème personne.
Et tu n’as pas mis de break; dans la case -
Voilà, j’ai copié-collé le code dans un case EQUIPPED_FIRST_PERSON et rajouter le break mais aucun changement. De plus aucun rendu n’apparaît lorsque je suis en première personne.
@Override public void renderItem(ItemRenderType type, ItemStack item, Object… data) { switch(type) { case EQUIPPED: { GL11.glPushMatrix(); GL11.glRotatef(45, 0.0F, 0.0F, 1.0F); Minecraft.getMinecraft().renderEngine.bindTexture(texture); model.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); GL11.glPopMatrix(); break; } case EQUIPPED_FIRST_PERSON: { GL11.glPushMatrix(); GL11.glRotatef(45, 0.0F, 0.0F, 1.0F); Minecraft.getMinecraft().renderEngine.bindTexture(texture); model.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); GL11.glPopMatrix(); break; } default: break; } } -
Dans la fonction handleRenderType, ajoute la case EQUIPPED_FIRST_PERSON et met sur true.
-
Merci, voilà qui résout une partie du problème

Cependant je n’arrive toujours pas à changer l’orientation de mon rendu…
Une idée ? -
Tu l’as peut être fait tourné dans le mauvais axe ?
Vérifie aussi que tu as mit le code de rotation avant le model.render(….) -
Voilà j’ai trouvé, c’était bien l’axe qui posait problème apparemment, il faut mettre un angle négatif pour voir une modification…
Merci tout le monde pour m’avoir aider !

