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

    Résolu Les projectiles

    1.7.x
    1.7.x
    2
    2
    851
    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.
    • Multi
      Multi dernière édition par robin4002

      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 🙂

      1 réponse Dernière réponse Répondre Citer 0
      • jglrxavpok
        jglrxavpok Modérateurs dernière édition par

        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);
        

        Modérateur sur MFF. 
        Mon Github: http://github.com/jglrxavpok
        Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

        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