Problème de render/Techne pour un mob



  • Bonjour à tous 🙂
    Désolé de vous dérangez encore une fois, mais mon mob à un problème :
    Regardons cette photo :

    Le rectangle rouge montre que cette partie en noire, bah ça n'a rien a faire ici
    Pour les flèches, des "morceaux" bougent comme pour le bras d'un joueur immobile.
    Je pense que cela vient de l'extends RenderBiped. Je voulais mette RenderBase ou un truc comme ça, mais rien ne fonctionne.

    J'espère que vous voyez ce que je veut faire. Voici mes codes :

    ModelBoss.java

    import net.minecraft.client.model.ModelBiped;
    
    import net.minecraft.client.model.ModelRenderer;
    import net.minecraft.entity.Entity;
    
    public class ModelBoss extends ModelBiped
    {
      //fields
        ModelRenderer Jambe_1;
        ModelRenderer Jambe_2;
        ModelRenderer Corps_1;
        ModelRenderer Corps_2;
        ModelRenderer Tete_1;
    
      public ModelBoss()
      {
        textureWidth = 64;
        textureHeight = 64;
    
          Jambe_1 = new ModelRenderer(this, 29, 1);
          Jambe_1.addBox(0F, 0F, 0F, 6, 16, 7);
          Jambe_1.setRotationPoint(2F, 8F, -3F);
          Jambe_1.setTextureSize(64, 64);
          Jambe_1.mirror = true;
          setRotation(Jambe_1, 0F, 0F, 0F);
          Jambe_2 = new ModelRenderer(this, 0, 0);
          Jambe_2.addBox(0F, 0F, 0F, 6, 16, 7);
          Jambe_2.setRotationPoint(-8F, 8F, -3F);
          Jambe_2.setTextureSize(64, 64);
          Jambe_2.mirror = true;
          setRotation(Jambe_2, 0F, 0F, 0F);
          Corps_1 = new ModelRenderer(this, 0, 38);
          Corps_1.addBox(0F, 0F, 0F, 18, 18, 7);
          Corps_1.setRotationPoint(-9F, -10F, -3F);
          Corps_1.setTextureSize(64, 64);
          Corps_1.mirror = true;
          setRotation(Corps_1, 0F, 0F, 0F);
          Corps_2 = new ModelRenderer(this, 18, 27);
          Corps_2.addBox(0F, 0F, 0F, 3, 3, 2);
          Corps_2.setRotationPoint(-1.98F, -3F, 4F);
          Corps_2.setTextureSize(64, 64);
          Corps_2.mirror = true;
          setRotation(Corps_2, 0F, 0F, 0F);
          Tete_1 = new ModelRenderer(this, 0, 26);
          Tete_1.addBox(0F, 0F, 0F, 4, 3, 3);
          Tete_1.setRotationPoint(-2F, -13F, -1F);
          Tete_1.setTextureSize(64, 64);
          Tete_1.mirror = true;
          setRotation(Tete_1, 0F, 0F, 0F);
      }
    
      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);
        Jambe_1.render(f5);
        Jambe_2.render(f5);
        Corps_1.render(f5);
        Corps_2.render(f5);
        Tete_1.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);
      }
    
    }
    

    RenderMobBoss.java

    import net.minecraft.client.model.ModelBase;
    
    import net.minecraft.client.model.ModelBiped;
    import net.minecraft.client.renderer.entity.RenderBiped;
    import net.minecraft.entity.EntityLiving;
    import net.minecraft.util.ResourceLocation;
    import fr.zery59.modnawak.common.EntityMobBoss;
    import fr.zery59.modnawak.common.EntityMobKevin;
    import fr.zery59.modnawak.common.Nawak;
    
    public class RenderMobBoss extends RenderBiped
    {
    
        public final ResourceLocation texture = new ResourceLocation(Nawak.MODID, "textures/entity/Boss.png");
    
        public RenderMobBoss(ModelBiped model, float shadow)
        {
            super(model, shadow);
        }
    
        protected ResourceLocation getEntityTexture(EntityLiving living)
        {
            return this.getMobBossTexture((EntityMobBoss)living);
        }
    
        private ResourceLocation getMobBossTexture(EntityMobBoss boss)
        {
            return texture;
        }
    
    }
    

    Et mon ClientProxy.java

    import net.minecraft.client.model.ModelBiped;
    
    import cpw.mods.fml.client.registry.RenderingRegistry;
    import fr.zery59.modnawak.client.ModelBoss;
    import fr.zery59.modnawak.client.RenderMobBoss;
    import fr.zery59.modnawak.client.RenderMobKevin;
    import fr.zery59.modnawak.common.EntityMobBoss;
    import fr.zery59.modnawak.common.EntityMobKevin;
    
    public class ClientProxy extends CommonProxy
    {
        @Override
        public void registerRender()
        {
        RenderingRegistry.registerEntityRenderingHandler(EntityMobKevin.class, new RenderMobKevin(new ModelBiped(), 0.5F));
        RenderingRegistry.registerEntityRenderingHandler(EntityMobBoss.class, new RenderMobBoss(new ModelBoss(), 0.5F));
        }
    }
    

    Si vous ne comprenez pas ce que je veut dire, bah j'essayerais de mieux l'expliquer.



  • Si tu veux un Render basique, tu mets RenderLiving.


  • Administrateurs

    Essaye de faire
    public class ModelBoss extends ModelBase



  • Alors, robin4002 :

    Je mets ModelBase -> j'import puis sauvegarde -> erreur dans ClientProxy, Le constructeur RenderMobBoss(ModelBoss, float) n'est pas défini

    Et Fine33 : J'extends en RenderLiving -> Je dois rajouter :
    -```java
    @Override

    protected ResourceLocation getEntityTexture(Entity var1)
        {
            return null;
        }

    
    Je laisse return null; le mob n'apparaît pas et return texture; rien de change :/ Ou alors c'est moi qui fait n'importe quoi (90% de chance pour cette option)


  • Tu as bien mis ça dans le ClientProxy ?

    ​ **[size=x-smallpublic]** **[size=x-smallvoid]** RenderInformation()
    {
    RenderingRegistry.*registerEntityRenderingHandler*(EntityDeTonrMob.**[size=x-smallclass]**, **[size=x-smallnew]** RenderDeTonMob(**[size=x-smallnew]** ModelDeTonMob(), 0.3F));
      }
    }
    


  • Et tu mets un return EntityTexture au lieu de return false



  • Oo je n'ai jamais vu cette ligne de code dans un tuto. Bah je viens de le rajouter, et maintenant j'obtiens ça :



  • Dans la classe du model, t'as des mirrors des fois : tu les mets tous en false.


  • Administrateurs

    @'zery59':

    Alors, robin4002 :

    Je mets ModelBase -> j'import puis sauvegarde -> erreur dans ClientProxy, Le constructeur RenderMobBoss(ModelBoss, float) n'est pas défini

    Et Fine33 : J'extends en RenderLiving -> Je dois rajouter :

    @Override
    
        protected ResourceLocation getEntityTexture(Entity var1)
        {
            return null;
        }
    

    Je laisse return null; le mob n'apparaît pas et return texture; rien de change 😕 Ou alors c'est moi qui fait n'importe quoi (90% de chance pour cette option)

    Tu as bien changé le modèle et pas le rendu ?



  • Fine33 : Je les ai mis en false, pareil toujours les bâtons blancs

    robin4002 : Oui, je parle bien du model (1 ère class du premier post)



  • Tu as bien mis Return EntityTexture ici ?

    ​%(#646464)[@Override
    ]
    
       **protected** ResourceLocation getEntityTexture(Entity var1) 
        %(#666600)[{
    ]        **return** **null**%(#666600)[;
    ]
       }
    


  • Tu as bien mis Return EntityTexture ici ?

    %(#646464)[@Override
    ]
    
       **protected** ResourceLocation getEntityTexture(Entity var1) 
        %(#666600)[{
    ]        **return** **null**%(#666600)[;
    ]
       }
    


  • J'ai essayé, mais si je mets EntityTexture, :

    EntityTexture ne peut pas être résolu en tant que variable

    Mais comme j'avais déclaré : ```java
    public final ResourceLocation texture blablabla

    
    Donc je pensais que return texture; allait aussi.


  • Tu dois plutôt déclarer ta texture comme ça

    [size=x-small**private**] **[size=x-smallstatic]** **[size=x-smallfinal]** ResourceLocation *[size=x-smallEntityTexture]* = **[size=x-smallnew]** ResourceLocation([size=x-small"MODID:textures/mobs/TonMob.png"]);
    


  • J'ai changé tout cela, mais j'ai toujours les bâtons blancs (C'est depuis que j'ai extends la classe en RenderLiving ou les mirror en false)



  • Dans ton CommonProxy, t'as bien la fonction RenderInformation ?



  • Tu parles de cet fonction ? :

    public void RenderInformation()
    
        {
        RenderingRegistry.registerEntityRenderingHandler(EntityMobBoss.class, new RenderMobBoss(new ModelBoss(), 0.3F));
        }
    

    Je vais essayer de mettre cet fonction dans le CommonProxy, mais aucun tuto sur ce forum n'en parle 😕

    Je viens de l'ajouter, j'ai toujours les Freedent sur pattes



  • Tu la mets vide. Je sais qu'il y a pas ça dans les tutos mais c'est ça que j'ai ^^



  • Même vide, cela ne change rien.

    Si j'enlève cet fonction de commonProxy + ClientProxy, je revient au point de départ (1er screen du 1er post)



  • Dans la fonction init de ta classe principale, tu as proxy.RenderInformation ? Tu laisse la fonction RenderInformation dans les 2 proxys.