Rendu modele Techne sur Item, problème de texture



  • Bonjour,

    en suivant le tutoriel ci-contre : http://www.minecraftforgefrance.fr/showthread.php?tid=130
    J'ai réussi à ajouter mon modèle au jeu. La console ne me renvoie pas d'erreur hormis celle de l'icône de l'item. Je lance un monde et remarque que mon item a une texture particulièrement étrange.

    J'ai donc essayé d'ajouter une icône au cas où il y aurait un problème à ce niveau, mais la texture est toujours la même. J'ai donc essayé de changer le modèle pour voir, si ce n'est pas un problème au niveau de mon modèle, mais rien n'a faire, il reste ainsi.
    Je me suis donc penché sur mon code Java, voici les deux classes :

    Celle de l'Item

    package ch.lyricia.lyriciamod.common.items.tools;
    
    import net.minecraft.entity.EntityLivingBase;
    import net.minecraft.item.EnumAction;
    import net.minecraft.item.ItemStack;
    import net.minecraft.item.ItemSword;
    
    public class fireSword extends ItemSword{
    
    public fireSword(ToolMaterial material)
    {
    super(material);
    }
    
    public boolean hitEntity(ItemStack stack, EntityLivingBase attackedLiving, EntityLivingBase attackerLiving)
       {
    attackedLiving.setFire(2);
           stack.damageItem(20, attackerLiving);
           return true;
       }
    }
    

    Celle du rendu de l'Item

    package ch.lyricia.lyriciamod.common.itemRender;
    
    import org.lwjgl.opengl.GL11;
    
    import ch.lyricia.lyriciamod.client.ModelFireSword;
    import ch.lyricia.lyriciamod.client.ModelthiefDagger;
    import ch.lyricia.lyriciamod.common.lyriciamod;
    import net.minecraft.client.Minecraft;
    import net.minecraft.entity.Entity;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.ResourceLocation;
    import net.minecraftforge.client.IItemRenderer;
    
    public class FireSwordTechneRender implements IItemRenderer {
    
    protected ModelFireSword model;
    protected static final ResourceLocation texture = new ResourceLocation("lyriciamod:textures/models/items/fireSword.png");
    
    public FireSwordTechneRender()
    {
    model = new ModelFireSword();
    }
    
    @Override
    public boolean handleRenderType(ItemStack item, ItemRenderType type)
    {
    switch(type)
        {
        case EQUIPPED:
        return true;
        case EQUIPPED_FIRST_PERSON:
        return true;
        case ENTITY:
        return true;
        default:
        return false;
        }
    }
    
    @Override
    public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item,ItemRendererHelper helper)
    {
    return false;
    }
    
    @Override
    public void renderItem(ItemRenderType type, ItemStack item, Object… data)
    {
    switch(type)
        {
        case EQUIPPED:
        {
           float Angle = 40.0F;
        GL11.glPushMatrix();
        Minecraft.getMinecraft().renderEngine.getTexture(texture);
    GL11.glRotatef(Angle, 0.0F, 0.0F, 1.0F);
           GL11.glTranslatef(1.0F, 0.5F, -0.1F);
        model.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
        GL11.glPopMatrix();
        break;
        }
        case EQUIPPED_FIRST_PERSON:
        {
        float Angle = 40.0F;
        GL11.glPushMatrix();
        Minecraft.getMinecraft().renderEngine.getTexture(texture);
    GL11.glRotatef(Angle, 0.0F, 0.0F, 1.0F);
           GL11.glTranslatef(1.0F, 0.5F, -0.1F);
        model.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
        GL11.glPopMatrix();
        break;
        }
        case ENTITY:
        {
        float Angle = 40.0F;
        GL11.glPushMatrix();
        Minecraft.getMinecraft().renderEngine.getTexture(texture);
    GL11.glRotatef(Angle, 0.0F, 0.0F, 1.0F);
           GL11.glTranslatef(1.0F, 0.5F, -0.1F);
        model.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
        GL11.glPopMatrix();
        break;
        }
        default:
        break;
        }
    }
    }
    

    Celle du modèle de l'Item

    // Date: 20.02.2015 10:21:08
    // Template version 1.1
    // Java generated by Techne
    // Keep in mind that you still need to fill in some blanks
    // - ZeuX
    
    package ch.lyricia.lyriciamod.client;
    
    import net.minecraft.client.model.ModelBase;
    import net.minecraft.client.model.ModelRenderer;
    import net.minecraft.entity.Entity;
    
    public class ModelFireSword extends ModelBase
    {
     //fields
       ModelRenderer MainPlate;
       ModelRenderer MainPlateBottom;
       ModelRenderer MainPlateTop;
       ModelRenderer ShortMainPlateBottom;
       ModelRenderer ShortMainPlateBottomEnd;
       ModelRenderer MainBottom;
       ModelRenderer MainBottomRight;
       ModelRenderer MainBottomLeft;
       ModelRenderer MainHanlde;
    
     public ModelFireSword()
     {
       textureWidth = 64;
       textureHeight = 32;
    
         MainPlate = new ModelRenderer(this, 0, 0);
         MainPlate.addBox(0F, 0F, 0F, 5, 18, 1);
         MainPlate.setRotationPoint(0F, -6F, 0F);
         MainPlate.setTextureSize(64, 32);
         setRotation(MainPlate, 0F, 0F, 0F);
         MainPlate.mirror = false;
         MainPlateBottom = new ModelRenderer(this, 13, 0);
         MainPlateBottom.addBox(0F, 0F, 0F, 3, 14, 1);
         MainPlateBottom.setRotationPoint(1F, -6F, -1F);
         MainPlateBottom.setTextureSize(64, 32);
         setRotation(MainPlateBottom, 0F, 0F, 0F);
         MainPlateBottom.mirror = false;
         MainPlateTop = new ModelRenderer(this, 13, 0);
         MainPlateTop.addBox(0F, 0F, 0F, 3, 14, 1);
         MainPlateTop.setRotationPoint(1F, -6F, 1F);
         MainPlateTop.setTextureSize(64, 32);
         setRotation(MainPlateTop, 0F, 0F, 0F);
         ShortMainPlateBottom = new ModelRenderer(this, 27, 0);
         ShortMainPlateBottom.addBox(0F, 0F, 0F, 3, 2, 1);
         ShortMainPlateBottom.setRotationPoint(1F, 12F, 0F);
         ShortMainPlateBottom.setTextureSize(64, 32);
         setRotation(ShortMainPlateBottom, 0F, 0F, 0F);
         ShortMainPlateBottom.mirror = false;
         ShortMainPlateBottomEnd = new ModelRenderer(this, 22, 0);
         ShortMainPlateBottomEnd.addBox(0F, 0F, 0F, 1, 3, 1);
         ShortMainPlateBottomEnd.setRotationPoint(2F, 14F, 0F);
         ShortMainPlateBottomEnd.setTextureSize(64, 32);
         setRotation(ShortMainPlateBottomEnd, 0F, 0F, 0F);
         ShortMainPlateBottomEnd.mirror = false;
         MainBottom = new ModelRenderer(this, 36, 0);
         MainBottom.addBox(0F, 0F, 0F, 7, 2, 5);
         MainBottom.setRotationPoint(-1F, -8F, -2F);
         MainBottom.setTextureSize(64, 32);
         setRotation(MainBottom, 0F, 0F, 0F);
         MainBottom.mirror = false;
         MainBottomRight = new ModelRenderer(this, 0, 20);
         MainBottomRight.addBox(0F, 0F, 0F, 5, 2, 3);
         MainBottomRight.setRotationPoint(-6F, -8F, -1F);
         MainBottomRight.setTextureSize(64, 32);
         setRotation(MainBottomRight, 0F, 0F, 0F);
         MainBottomRight.mirror = false;
         MainBottomLeft = new ModelRenderer(this, 0, 20);
         MainBottomLeft.addBox(0F, 0F, 0F, 5, 2, 3);
         MainBottomLeft.setRotationPoint(6F, -8F, -1F);
         MainBottomLeft.setTextureSize(64, 32);
         setRotation(MainBottomLeft, 0F, 0F, 0F);
         MainHanlde = new ModelRenderer(this, 22, 5);
         MainHanlde.addBox(0F, 0F, 0F, 3, 5, 3);
         MainHanlde.setRotationPoint(1F, -13F, -1F);
         MainHanlde.setTextureSize(64, 32);
         setRotation(MainHanlde, 0F, 0F, 0F);
         MainHanlde.mirror = false;
     }
    
     public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
     {
       super.render(entity, f, f1, f2, f3, f4, f5);
       setRotationAngles(f, f1, f2, f3, f4, f5, entity);
       MainPlate.render(f5);
       MainPlateBottom.render(f5);
       MainPlateTop.render(f5);
       ShortMainPlateBottom.render(f5);
       ShortMainPlateBottomEnd.render(f5);
       MainBottom.render(f5);
       MainBottomRight.render(f5);
       MainBottomLeft.render(f5);
       MainHanlde.render(f5);
     }
    
     private void setRotation(ModelRenderer model, float x, float y, float z)
     {
       model.rotateAngleX = x;
       model.rotateAngleY = y;
       model.rotateAngleZ = z;
     }
    
     public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity)
     {
       super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
     }
    
    }
    

    Et finalement la classe du client Proxy :

    package ch.lyricia.lyriciamod.proxy;
    
    import net.minecraftforge.client.IItemRenderer;
    import net.minecraftforge.client.MinecraftForgeClient;
    import ch.lyricia.lyriciamod.client.ModelthiefDagger;
    import ch.lyricia.lyriciamod.client.TESRInventoryRenderer;
    import ch.lyricia.lyriciamod.client.TileEntityRopeBlockSpecialRenderer;
    import ch.lyricia.lyriciamod.common.lyriciamod;
    import ch.lyricia.lyriciamod.common.blocks.tileEntity.TileEntityRopeBlock;
    import ch.lyricia.lyriciamod.common.itemRender.FireSwordTechneRender;
    import ch.lyricia.lyriciamod.common.itemRender.ThiefDaggerTechneRender;
    import cpw.mods.fml.client.registry.ClientRegistry;
    import cpw.mods.fml.client.registry.RenderingRegistry;
    
    public class ClientProxy extends ServerProxy {
    
    public static int tesrRenderId;
    
    @Override
    public void registerRender()
    {
    System.out.println("Lyricia Mod côté Client");
    tesrRenderId = RenderingRegistry.getNextAvailableRenderId();
    RenderingRegistry.registerBlockHandler(new TESRInventoryRenderer());
    ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRopeBlock.class, new TileEntityRopeBlockSpecialRenderer());
       MinecraftForgeClient.registerItemRenderer(lyriciamod.fireSword, new FireSwordTechneRender());
    }
    
    }
    

    J'ai donc essayé par divers moyens, mais je ne vois toujours pas mon erreur, d'ailleurs aucune erreur est détectée.

    Je vous remercie d'avance de vos réponses et vous souhaite une agréable journée.



  • cette texture c'est le missing texture (présent dans beaucoup de jeu vidéo), c'est que le jeu ne trouve pas la texture



  • J'ai bien lu à nouveau le tutoriel et je me suis posé la question sur cette ligne-ci :

    Minecraft.getMinecraft().renderEngine.func_110577_a(texture);
    

    Vu que la fonction n'existait pas, je me suis aperçu que c'est la fonction .bindTexture(texture) qui marchait ^^ Et donc j'ai finalement réussi à trouver, donc c'était plutôt une erreur de ma part.
    Mais merci de ton aide tout de même 🙂