SOLVED Problème de rendu techne


  • Bonjour,

    j’ai un problème de rendu de mon animal en jeu.
    L’animal a une forme correcte mais :

    • il clignote noir
    • on dirait qu’il s’enfonce dans le sol, à la fin seule sa tête dépasse…

    C’est très bizarre et je n’arrive pas à voir d’où cela peut venir. Peut-être avez déjà rencontré ce genre de souci…

    Il s’agit d’un modèle récupéré directement sur le site de techne : http://techne.zeux.me/7370b6b5

    Le code de l’entité

    package minetux.common;
    
    import net.minecraft.entity.EntityAgeable;
    import net.minecraft.entity.passive.EntityAnimal;
    import net.minecraft.world.World;
    
    public class EntityOstrich extends EntityAnimal {
    
    public EntityOstrich(World par1World) {
    super(par1World);
    }
    
    @Override
    public EntityAgeable createChild(EntityAgeable entityageable) {
    return null;
    }
    
    }
    

    Code du model

    package minetux.proxy;
    
    import net.minecraft.client.model.ModelBase;
    import net.minecraft.client.model.ModelRenderer;
    import net.minecraft.entity.Entity;
    
    public class ModelOstrich extends ModelBase
    {
     //fields
       ModelRenderer Body1;
       ModelRenderer body2;
       ModelRenderer LLeg1;
       ModelRenderer Rleg1;
       ModelRenderer LLeg2;
       ModelRenderer Lfoot1;
       ModelRenderer RLeg2;
       ModelRenderer Lfoot2;
       ModelRenderer Lfoot3;
       ModelRenderer LClaw1;
       ModelRenderer LClaw2;
       ModelRenderer LClaw3;
       ModelRenderer Lfoot4;
       ModelRenderer LClaw4;
       ModelRenderer Rfoot1;
       ModelRenderer Rfoot2;
       ModelRenderer Rclaw1;
       ModelRenderer Rfoot3;
       ModelRenderer Rclaw3;
       ModelRenderer Rfoot4;
       ModelRenderer Rclaw2;
       ModelRenderer Rclaw4;
       ModelRenderer Body3;
       ModelRenderer Tail1;
       ModelRenderer Tail2;
       ModelRenderer Tail3;
       ModelRenderer Body4;
       ModelRenderer head;
       ModelRenderer leftleg;
       ModelRenderer Neck1;
       ModelRenderer Head1;
       ModelRenderer mouth1;
       ModelRenderer neck2;
       ModelRenderer rightleg;
       ModelRenderer Lwing;
       ModelRenderer Rwing;
    
     public ModelOstrich()
     {
       textureWidth = 256;
       textureHeight = 128;
    
         Body1 = new ModelRenderer(this, 0, 28);
         Body1.addBox(-4F, 0F, 0F, 8, 9, 8);
         Body1.setRotationPoint(0F, 0F, -6F);
         Body1.setTextureSize(256, 128);
         Body1.mirror = true;
         setRotation(Body1, -0.2230717F, 0F, 0F);
         body2 = new ModelRenderer(this, 25, 111);
         body2.addBox(-4F, 0F, 0F, 8, 8, 8);
         body2.setRotationPoint(0F, 2F, -1F);
         body2.setTextureSize(256, 128);
         body2.mirror = true;
         setRotation(body2, 0F, 0F, 0F);
         LLeg1 = new ModelRenderer(this, 25, 70);
         LLeg1.addBox(-1F, 3F, -5F, 2, 7, 3);
         LLeg1.setRotationPoint(3F, 8F, 1F);
         LLeg1.setTextureSize(256, 128);
         LLeg1.mirror = true;
         setRotation(LLeg1, 0.4833219F, 0F, 0F);
         Rleg1 = new ModelRenderer(this, 25, 70);
         Rleg1.addBox(-2F, 3F, -5F, 2, 7, 3);
         Rleg1.setRotationPoint(-2F, 8F, 1F);
         Rleg1.setTextureSize(256, 128);
         Rleg1.mirror = true;
         setRotation(Rleg1, 0.4833219F, 0F, 0F);
         LLeg2 = new ModelRenderer(this, 29, 59);
         LLeg2.addBox(-1F, 7F, 4F, 2, 7, 3);
         LLeg2.setRotationPoint(3F, 8F, 1F);
         LLeg2.setTextureSize(256, 128);
         LLeg2.mirror = true;
         setRotation(LLeg2, -0.4370552F, 0F, 0F);
         Lfoot1 = new ModelRenderer(this, 29, 50);
         Lfoot1.addBox(-1F, 14F, -5F, 2, 2, 6);
         Lfoot1.setRotationPoint(3F, 8F, 1F);
         Lfoot1.setTextureSize(256, 128);
         Lfoot1.mirror = true;
         setRotation(Lfoot1, 0F, 0F, 0F);
         RLeg2 = new ModelRenderer(this, 29, 59);
         RLeg2.addBox(-2F, 7F, 4F, 2, 7, 3);
         RLeg2.setRotationPoint(-2F, 8F, 1F);
         RLeg2.setTextureSize(256, 128);
         RLeg2.mirror = true;
         setRotation(RLeg2, -0.4370552F, 0F, 0F);
         Lfoot2 = new ModelRenderer(this, 0, 9);
         Lfoot2.addBox(-1F, 15F, -4F, 2, 1, 5);
         Lfoot2.setRotationPoint(3F, 8F, 1F);
         Lfoot2.setTextureSize(256, 128);
         Lfoot2.mirror = true;
         setRotation(Lfoot2, 0F, 0.2602503F, 0F);
         Lfoot3 = new ModelRenderer(this, 0, 9);
         Lfoot3.addBox(-1F, 15F, -4F, 2, 1, 5);
         Lfoot3.setRotationPoint(3F, 8F, 1F);
         Lfoot3.setTextureSize(256, 128);
         Lfoot3.mirror = true;
         setRotation(Lfoot3, 0F, -0.260246F, 0F);
         LClaw1 = new ModelRenderer(this, 16, 10);
         LClaw1.addBox(0F, 14F, -7F, 0, 2, 3);
         LClaw1.setRotationPoint(3F, 8F, 1F);
         LClaw1.setTextureSize(256, 128);
         LClaw1.mirror = true;
         setRotation(LClaw1, 0F, 0F, 0F);
         LClaw2 = new ModelRenderer(this, 19, 16);
         LClaw2.addBox(-0.5F, 15F, -5F, 0, 1, 3);
         LClaw2.setRotationPoint(3F, 8F, 1F);
         LClaw2.setTextureSize(256, 128);
         LClaw2.mirror = true;
         setRotation(LClaw2, 0F, 0.260246F, 0F);
         LClaw3 = new ModelRenderer(this, 19, 16);
         LClaw3.addBox(0.5F, 15F, -5F, 0, 1, 3);
         LClaw3.setRotationPoint(3F, 8F, 1F);
         LClaw3.setTextureSize(256, 128);
         LClaw3.mirror = true;
         setRotation(LClaw3, 0F, -0.260246F, 0F);
         Lfoot4 = new ModelRenderer(this, 0, 0);
         Lfoot4.addBox(-1F, 14F, -1F, 2, 2, 4);
         Lfoot4.setRotationPoint(3F, 8F, 1F);
         Lfoot4.setTextureSize(256, 128);
         Lfoot4.mirror = true;
         setRotation(Lfoot4, 0F, 0F, 0F);
         LClaw4 = new ModelRenderer(this, 16, 10);
         LClaw4.addBox(0F, 14F, 2F, 0, 2, 3);
         LClaw4.setRotationPoint(3F, 8F, 1F);
         LClaw4.setTextureSize(256, 128);
         LClaw4.mirror = true;
         setRotation(LClaw4, 0F, 0F, 0F);
         Rfoot1 = new ModelRenderer(this, 29, 50);
         Rfoot1.addBox(-2F, 14F, -5F, 2, 2, 6);
         Rfoot1.setRotationPoint(-2F, 8F, 1F);
         Rfoot1.setTextureSize(256, 128);
         Rfoot1.mirror = true;
         setRotation(Rfoot1, 0F, 0F, 0F);
         Rfoot2 = new ModelRenderer(this, 0, 0);
         Rfoot2.addBox(-2F, 14F, -1F, 2, 2, 4);
         Rfoot2.setRotationPoint(-2F, 8F, 1F);
         Rfoot2.setTextureSize(256, 128);
         Rfoot2.mirror = true;
         setRotation(Rfoot2, 0F, 0F, 0F);
         Rclaw1 = new ModelRenderer(this, 16, 10);
         Rclaw1.addBox(-1F, 14F, -7F, 0, 2, 3);
         Rclaw1.setRotationPoint(-2F, 8F, 1F);
         Rclaw1.setTextureSize(256, 128);
         Rclaw1.mirror = true;
         setRotation(Rclaw1, 0F, 0F, 0F);
         Rfoot3 = new ModelRenderer(this, 0, 9);
         Rfoot3.addBox(-2F, 15F, -4F, 2, 1, 5);
         Rfoot3.setRotationPoint(-2F, 8F, 1F);
         Rfoot3.setTextureSize(256, 128);
         Rfoot3.mirror = true;
         setRotation(Rfoot3, 0F, -0.260246F, 0F);
         Rclaw3 = new ModelRenderer(this, 19, 16);
         Rclaw3.addBox(-0.5F, 15F, -5F, 0, 1, 3);
         Rclaw3.setRotationPoint(-2F, 8F, 1F);
         Rclaw3.setTextureSize(256, 128);
         Rclaw3.mirror = true;
         setRotation(Rclaw3, 0F, -0.260246F, 0F);
         Rfoot4 = new ModelRenderer(this, 0, 9);
         Rfoot4.addBox(-2F, 15F, -4F, 2, 1, 5);
         Rfoot4.setRotationPoint(-2F, 8F, 1F);
         Rfoot4.setTextureSize(256, 128);
         Rfoot4.mirror = true;
         setRotation(Rfoot4, 0F, 0.2602503F, 0F);
         Rclaw2 = new ModelRenderer(this, 19, 16);
         Rclaw2.addBox(-1.5F, 15F, -5F, 0, 1, 3);
         Rclaw2.setRotationPoint(-2F, 8F, 1F);
         Rclaw2.setTextureSize(256, 128);
         Rclaw2.mirror = true;
         setRotation(Rclaw2, 0F, 0.260246F, 0F);
         Rclaw4 = new ModelRenderer(this, 16, 10);
         Rclaw4.addBox(-1F, 14F, 2F, 0, 2, 3);
         Rclaw4.setRotationPoint(-2F, 8F, 1F);
         Rclaw4.setTextureSize(256, 128);
         Rclaw4.mirror = true;
         setRotation(Rclaw4, 0F, 0F, 0F);
         Body3 = new ModelRenderer(this, 17, 96);
         Body3.addBox(-3F, 0F, 0F, 6, 7, 3);
         Body3.setRotationPoint(0F, 2F, 6F);
         Body3.setTextureSize(256, 128);
         Body3.mirror = true;
         setRotation(Body3, 0F, 0F, 0F);
         Tail1 = new ModelRenderer(this, 33, 81);
         Tail1.addBox(-2F, 0F, 0F, 4, 0, 14);
         Tail1.setRotationPoint(0F, 3F, 9F);
         Tail1.setTextureSize(256, 128);
         Tail1.mirror = true;
         setRotation(Tail1, -0.5948578F, 0F, 0F);
         Tail2 = new ModelRenderer(this, 36, 97);
         Tail2.addBox(-1F, 0F, 0F, 3, 0, 13);
         Tail2.setRotationPoint(0F, 3F, 8F);
         Tail2.setTextureSize(256, 128);
         Tail2.mirror = true;
         setRotation(Tail2, -0.5948578F, 0.3346075F, 0F);
         Tail3 = new ModelRenderer(this, 36, 97);
         Tail3.addBox(-2F, 0F, 0F, 3, 0, 13);
         Tail3.setRotationPoint(0F, 3F, 8F);
         Tail3.setTextureSize(256, 128);
         Tail3.mirror = true;
         setRotation(Tail3, -0.5948578F, -0.3346145F, 0F);
         Body4 = new ModelRenderer(this, 17, 89);
         Body4.addBox(-2F, 0F, 0F, 4, 3, 3);
         Body4.setRotationPoint(0F, 6F, 7F);
         Body4.setTextureSize(256, 128);
         Body4.mirror = true;
         setRotation(Body4, 1.003822F, 0F, 0F);
         head = new ModelRenderer(this, 74, 48);
         head.addBox(-1F, -24F, -7F, 2, 2, 4);
         head.setRotationPoint(0F, 5F, -7F);
         head.setTextureSize(256, 128);
         head.mirror = true;
         setRotation(head, 0F, 0F, 0F);
         leftleg = new ModelRenderer(this, 0, 16);
         leftleg.addBox(-2F, 0F, -2F, 4, 6, 5);
         leftleg.setRotationPoint(3F, 8F, 1F);
         leftleg.setTextureSize(256, 128);
         leftleg.mirror = true;
         setRotation(leftleg, -0.2974289F, 0F, 0F);
         Neck1 = new ModelRenderer(this, 79, 84);
         Neck1.addBox(-1.5F, -21F, -2F, 3, 21, 3);
         Neck1.setRotationPoint(0F, 5F, -7F);
         Neck1.setTextureSize(256, 128);
         Neck1.mirror = true;
         setRotation(Neck1, 0F, -0.0349066F, 0F);
         Head1 = new ModelRenderer(this, 0, 70);
         Head1.addBox(-2F, -25F, -3F, 4, 4, 4);
         Head1.setRotationPoint(0F, 5F, -7F);
         Head1.setTextureSize(256, 128);
         Head1.mirror = true;
         setRotation(Head1, 0F, 0F, 0F);
         mouth1 = new ModelRenderer(this, 74, 64);
         mouth1.addBox(-1F, -22F, -6F, 2, 1, 3);
         mouth1.setRotationPoint(0F, 5F, -7F);
         mouth1.setTextureSize(256, 128);
         mouth1.mirror = true;
         setRotation(mouth1, 0F, 0F, 0F);
         neck2 = new ModelRenderer(this, 0, 99);
         neck2.addBox(-1F, -2F, -2F, 2, 4, 3);
         neck2.setRotationPoint(0F, 5F, -6.9F);
         neck2.setTextureSize(256, 128);
         neck2.mirror = true;
         setRotation(neck2, 0F, 0F, 0F);
         rightleg = new ModelRenderer(this, 0, 16);
         rightleg.addBox(-3F, 0F, -2F, 4, 6, 5);
         rightleg.setRotationPoint(-2F, 8F, 1F);
         rightleg.setTextureSize(256, 128);
         rightleg.mirror = true;
         setRotation(rightleg, -0.2974216F, 0F, 0F);
         Lwing = new ModelRenderer(this, 0, 107);
         Lwing.addBox(0F, 0F, 0F, 1, 7, 11);
         Lwing.setRotationPoint(4F, 1F, -5F);
         Lwing.setTextureSize(256, 128);
         Lwing.mirror = true;
         setRotation(Lwing, 0F, 0F, 0F);
         Rwing = new ModelRenderer(this, 0, 107);
         Rwing.addBox(0F, 0F, 0F, 1, 7, 11);
         Rwing.setRotationPoint(-5F, 1F, -5F);
         Rwing.setTextureSize(256, 128);
         Rwing.mirror = true;
         setRotation(Rwing, 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);
       Body1.render(f5);
       body2.render(f5);
       LLeg1.render(f5);
       Rleg1.render(f5);
       LLeg2.render(f5);
       Lfoot1.render(f5);
       RLeg2.render(f5);
       Lfoot2.render(f5);
       Lfoot3.render(f5);
       LClaw1.render(f5);
       LClaw2.render(f5);
       LClaw3.render(f5);
       Lfoot4.render(f5);
       LClaw4.render(f5);
       Rfoot1.render(f5);
       Rfoot2.render(f5);
       Rclaw1.render(f5);
       Rfoot3.render(f5);
       Rclaw3.render(f5);
       Rfoot4.render(f5);
       Rclaw2.render(f5);
       Rclaw4.render(f5);
       Body3.render(f5);
       Tail1.render(f5);
       Tail2.render(f5);
       Tail3.render(f5);
       Body4.render(f5);
       head.render(f5);
       leftleg.render(f5);
       Neck1.render(f5);
       Head1.render(f5);
       mouth1.render(f5);
       neck2.render(f5);
       rightleg.render(f5);
       Lwing.render(f5);
       Rwing.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 e)
     {
       super.setRotationAngles(f, f1, f2, f3, f4, f5, e);
     }
    
    }
    

    Le code du render

    package minetux.proxy;
    
    import minetux.common.EntityOstrich;
    import net.minecraft.client.model.ModelBase;
    import net.minecraft.client.model.ModelBiped;
    import net.minecraft.client.renderer.entity.Render;
    import net.minecraft.client.renderer.entity.RenderLiving;
    import net.minecraft.entity.Entity;
    import net.minecraft.entity.EntityLiving;
    import net.minecraft.entity.passive.EntityChicken;
    import net.minecraft.util.ResourceLocation;
    
    public class RenderOstrich extends RenderLiving {
    
    protected static final ResourceLocation texture = new ResourceLocation("minetux:ostrich.png");
    
    public RenderOstrich(ModelBase par1ModelBase, float par2)
       {
           super(par1ModelBase, par2);
       }
    
    protected ResourceLocation getOstrichTextures(EntityOstrich entity)
       {
           return texture;
       }
    
    protected ResourceLocation getEntityTexture(Entity entity) {
    return this.getOstrichTextures((EntityOstrich)entity);
    }
    
    public void renderOstrich(EntityOstrich par1EntityOstrich, double par2, double par4, double par6, float par8, float par9)
       {
           super.doRenderLiving(par1EntityOstrich, par2, par4, par6, par8, par9);
       }
    
    public void doRenderLiving(EntityLiving par1EntityLiving, double par2, double par4, double par6, float par8, float par9)
       {
           this.renderOstrich((EntityOstrich)par1EntityLiving, par2, par4, par6, par8, par9);
       }
    }
    

    La déclaration dans le proxy

    RenderingRegistry.registerEntityRenderingHandler(EntityOstrich.class, new RenderOstrich(new ModelOstrich(), 0.5f));
    

    Merci par avance pour votre aide précieuse…

  • Modérateurs

    1)Remplace toutes les citations par des balises java [java][/java] sans les *
    2)Regarde le tutoriel pour faire un mob simple.


  • @‘Superloup10’:

    1)Remplace toutes les citations par des balises java [java][/java] sans les *
    2)Regarde le tutoriel pour faire un mob simple.

    1. C’est fait
    2. C’est le 3ème mob que je développe mais le premier sous techne. J’ai déjà lu (et relu 😉 ce tutoriel…
  • Administrateurs Rédacteurs Moddeurs confirmés

    Dans la classe du rendu, ce code ne sert à rien :

    public void renderOstrich(EntityOstrich par1EntityOstrich, double par2, double par4, double par6, float par8, float par9)
    {
    super.doRenderLiving(par1EntityOstrich, par2, par4, par6, par8, par9);
    }
    
    public void doRenderLiving(EntityLiving par1EntityLiving, double par2, double par4, double par6, float par8, float par9)
    {
    this.renderOstrich((EntityOstrich)par1EntityLiving, par2, par4, par6, par8, par9);
    }
    

    Lorsque le jeu va faire le rendu, tu lui dit d’appliquer la méthode renderOstrich, sauf que cette méthode renvoie sur le doRenderLiving de la classe mère, donc ça ne sert à rien. Il y a de forte chance que le problème vient de la.

    Sinon essaye avec un autre modèle, pour vérifier que le problème ne vient pas du modèle.


  • J’ai supprimé les 2 fonctions renderOstrich et doRenderLiving et j’ai toujours le même résultat (d’ailleurs initialement je n’avais pas mis ces 2 fonctions)

    Je viens de tester avec ce modèle : http://www.minecraftforgefrance.fr/showthread.php?tid=129 et cela me fait la même chose… 😞



    En faisant un extends sur EntityLiving au lieu de EntityAnimal, je n’ai plus ce souci… Etrange… Cela doit venir du saut que font les animaux par défaut.


  • Désolé de déterrer le sujet 👼

    Pour ceux qui ont le même problème la solution est que pour avoir un rendu avec extends EntityAnimal il faut rajouter dans le constructeur : this.setSize(xF,yF) où x et y sont respectivement la largeur et la hauteur de votre entity.