• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu Rendu modele Techne sur Item, problème de texture

    1.7.x
    1.7.10
    2
    3
    752
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • V
      vanlong dernière édition par

      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.

      1 réponse Dernière réponse Répondre Citer 0
      • isador
        isador Moddeurs confirmés Modérateurs dernière édition par

        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

        1 réponse Dernière réponse Répondre Citer 0
        • V
          vanlong dernière édition par

          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 🙂

          1 réponse Dernière réponse Répondre Citer 0
          • 1 / 1
          • Premier message
            Dernier message
          Design by Woryk
          Contact / Mentions Légales

          MINECRAFT FORGE FRANCE © 2018

          Powered by NodeBB