Les projectiles



  • Salut,

    Je me suis lancer dans la création d'un mod minecraft, et n'ayant pas modder depuis la 1.3 sous forge, j'ai dû réapprendre un peu les bases 😛
    Bon, le problème, c'est les projectiles. Je ne sais plus comment faire le rendu de mon projectile 😞 Avant c'était ok, mais là je suis perdu 😞

    Ma question est : Comment faire un rendu d'un projectile à partir de mon modèle ?

    Classe de mon entité :

    package com.multi7200.tam.entity;
    
    import net.minecraft.entity.EntityLiving;
    import net.minecraft.entity.projectile.EntityThrowable;
    import net.minecraft.util.MovingObjectPosition;
    import net.minecraft.world.World;
    
    public class EntityDisk extends TribesProjectileEntityBase {
    
        public EntityDisk(World par1World)
        {
            super(par1World);
        }
    
        public EntityDisk(World par1World, EntityLiving par2EntityLiving)
        {
            super(par1World, par2EntityLiving);
        }
    
        public EntityDisk(World par1World, double par2, double par4, double par6)
        {
            super(par1World, par2, par4, par6);
        }
    
        @Override
        protected void onImpact(MovingObjectPosition var1) {
            super.onImpact(var1);
        }
    }
    

    Mon model (rendu sous techne) :

    package com.multi7200.tam.model;
    import net.minecraft.client.model.ModelBase;
    import net.minecraft.client.model.ModelRenderer;
    
    public class ModelDisk extends ModelBase
    {
    
    ModelRenderer Disk1;
    ModelRenderer Disk2;
    ModelRenderer Disk3;
    
    public ModelDisk()
    {
    textureWidth = 32;
    textureHeight = 32;
    
    Disk1 = new ModelRenderer(this, 0, 0);
    Disk1.addBox(0F, 0F, 0F, 5, 1, 5);
    Disk1.setRotationPoint(0F, 0F, -1F);
    Disk1.setTextureSize(32, 32);
    Disk1.mirror = true;
    setRotation(Disk1, 0F, 0F, 0F);
    Disk2 = new ModelRenderer(this, 0, 0);
    Disk2.addBox(0F, 0F, 0F, 3, 1, 3);
    Disk2.setRotationPoint(1F, -1F, 0F);
    Disk2.setTextureSize(32, 32);
    Disk2.mirror = true;
    setRotation(Disk2, 0F, 0F, 0F);
    Disk3 = new ModelRenderer(this, 0, 0);
    Disk3.addBox(0F, 0F, 0F, 3, 1, 3);
    Disk3.setRotationPoint(1F, 1F, 0F);
    Disk3.setTextureSize(32, 32);
    Disk3.mirror = true;
    setRotation(Disk3, 0F, 0F, 0F);
    }
    
    public void render(net.minecraft.entity.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);
    Disk1.render(f5);
    Disk2.render(f5);
    Disk3.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, net.minecraft.entity.Entity entity)
    {
    super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
    }
    
    }
    

    Mon début de render :

    package com.multi7200.tam.render;
    
    import org.lwjgl.opengl.GL11;
    
    import org.lwjgl.opengl.GL12;
    
    import com.multi7200.tam.entity.EntityDisk;
    
    import net.minecraft.client.renderer.Tessellator;
    import net.minecraft.client.renderer.entity.Render;
    import net.minecraft.entity.Entity;
    import net.minecraft.util.ResourceLocation;
    
    public class RenderDisk extends Render {
    
    private static final ResourceLocation diskTextures = new ResourceLocation("tam:disk");
    
    public void doRenderDisk(EntityDisk var1, double var2, double var4, double var6, float var8, float var9) {
    GL11.glPushMatrix();
    
    GL11.glPopMatrix();
    }
    
    protected ResourceLocation getEntityTexture(EntityDisk var1) {
    return this.diskTextures;
    }
    
    @Override
    protected ResourceLocation getEntityTexture(Entity var1) {
    return this.getEntityTexture((EntityDisk) var1);
    }
    
    @Override
    public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) {
    this.doRender((EntityDisk) var1,var2, var4, var6, var8, var9);
    }
    }
    

    Voilà, j'ai essayé de chercher un peu partout sur le wiki de minecraft forge, mais c'est du 1.6.4.

    Merci 🙂


  • Modérateurs

    C'est décrit dans ce tutoriel: http://www.minecraftforgefrance.fr/showthread.php?tid=18
    Dans ton proxy client, quand tu initialise tes données, ajoute cette ligne:

    RenderingRegistry.registerEntityRenderingHandler(EntityDisk.class, new RenderDisk(new ModelDisk()));
    

    Et ajoute un constructeur dans ta classe RenderDisk qui en argument une instance de ModelDisk, assigne cette instance à une variable et dans doRenderDisk avant le glPopMatrix(); ajoute

    model.render(var1,0,0,0,0,0.0625f);