Résolu 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 perduMa 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
-
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);