Creer une fleche



  • salut je sait que c'est une question un peut débile mais j'aimerais savoir comment créer une flèche dans minecraft, il n'y a aucun tuto dessus sur le forum ( en tout cas je n'en ait pas trouvé  😉 )
    en fait j'ai créé un pistolet qui est un arc modifié qui n'as pas besoin d'être chargé et qui tire quasiment droit mais jusqu'a maintenant il tire des flèches et j'aimerais savoir comment créer une "balle" qui serait en fait la base d' une flèche   😄
    merci d'avance !


  • Administrateurs

    Il suffit de créer une nouvelle entité.



  • ok mais je n'ai jamais créé d'entité est ce qu'il y a une class spéciale a créer ( je sait qu'il y a le render et la class item pour une flèche )
    et puis au niveau du code je galère un  peut…
    j'ai essayé de reprendre le code de l'entité EntityArrow mais c'était 600 lignes et sa tirait du vide ( il n'y avait ni les textures ni les particules ) 
    ps : si je n'ai pas de textures mais juste les particules ce serait très bien quand meme 😉


  • Administrateurs

    Il faut créer une classe extends Entity (ou EntityProjectil ou autre classe héritant de Entity), créer une classe pour rendu et enregistrer l'entité avec EntityRegistry.registerModEntity + enregistrer le rendu côté client seulement avec RenderingRegistry.registerEntityRenderingHandler

    Après une recherche de flèche dans la section peut aussi aider : http://www.minecraftforgefrance.fr/search.php?action=results&sid=8d6063e6b9f51759f9f2e42a11ca2e25&sortby=lastpostℴ=desc



  • ok merci ^^



  • j'ai créer l'entité mais quand je tire avec mon pistolet sa ne tire pas la texture de ma balle mais un "cube" blanc…
    tu saurait d'ou sa vient ?



  • Déjà évite le double post 🙂
    Et ensuite cela vient de la classe du rendu de ton entity, soit tu ne bind pas la bonne texture, soit celle-ci n'est pas au bonne endroit 🙂
    Montre la nous pour qu'on puisse t'aider 😉



  • ok et désolé pour le double post 😉

    package com.ludrak.mods.Guns;

    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import net.minecraft.client.renderer.Tessellator;
    import net.minecraft.client.renderer.entity.Render;
    import net.minecraft.entity.Entity;
    import net.minecraft.entity.projectile.EntityArrow;
    import net.minecraft.util.MathHelper;
    import net.minecraft.util.ResourceLocation;
    import org.lwjgl.opengl.GL11;
    import org.lwjgl.opengl.GL12;

    @SideOnly(Side.CLIENT)
    public class RenderBullet extends Render
    {
    private static final ResourceLocation arrowTextures = new ResourceLocation("textures/entity/RenderEntityBullet.png");
    private static final String __OBFID = "CL_00000978";

    public void doRender(EntityArrow p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_)
    {
    this.bindEntityTexture(p_76986_1_);
    GL11.glPushMatrix();
    GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_);
    GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F);
    GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_, 0.0F, 0.0F, 1.0F);
    Tessellator tessellator = Tessellator.instance;
    byte b0 = 0;
    float f2 = 0.0F;
    float f3 = 0.5F;
    float f4 = (float)(0 + b0 * 10) / 32.0F;
    float f5 = (float)(5 + b0 * 10) / 32.0F;
    float f6 = 0.0F;
    float f7 = 0.15625F;
    float f8 = (float)(5 + b0 * 10) / 32.0F;
    float f9 = (float)(10 + b0 * 10) / 32.0F;
    float f10 = 0.05625F;
    GL11.glEnable(GL12.GL_RESCALE_NORMAL);
    float f11 = (float)p_76986_1_.arrowShake - p_76986_9_;

    if (f11 > 0.0F)
    {
    float f12 = -MathHelper.sin(f11 * 3.0F) * f11;
    GL11.glRotatef(f12, 0.0F, 0.0F, 1.0F);
    }

    GL11.glRotatef(45.0F, 1.0F, 0.0F, 0.0F);
    GL11.glScalef(f10, f10, f10);
    GL11.glTranslatef(-4.0F, 0.0F, 0.0F);
    GL11.glNormal3f(f10, 0.0F, 0.0F);
    tessellator.startDrawingQuads();
    tessellator.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)f6, (double)f8);
    tessellator.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)f7, (double)f8);
    tessellator.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)f7, (double)f9);
    tessellator.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)f6, (double)f9);
    tessellator.draw();
    GL11.glNormal3f(-f10, 0.0F, 0.0F);
    tessellator.startDrawingQuads();
    tessellator.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)f6, (double)f8);
    tessellator.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)f7, (double)f8);
    tessellator.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)f7, (double)f9);
    tessellator.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)f6, (double)f9);
    tessellator.draw();

    for (int i = 0; i < 4; ++i)
    {
    GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F);
    GL11.glNormal3f(0.0F, 0.0F, f10);
    tessellator.startDrawingQuads();
    tessellator.addVertexWithUV(-8.0D, -2.0D, 0.0D, (double)f2, (double)f4);
    tessellator.addVertexWithUV(8.0D, -2.0D, 0.0D, (double)f3, (double)f4);
    tessellator.addVertexWithUV(8.0D, 2.0D, 0.0D, (double)f3, (double)f5);
    tessellator.addVertexWithUV(-8.0D, 2.0D, 0.0D, (double)f2, (double)f5);
    tessellator.draw();
    }

    GL11.glDisable(GL12.GL_RESCALE_NORMAL);
    GL11.glPopMatrix();
    }

    protected ResourceLocation getEntityTexture(EntityBullet p_110775_1_)
    {
    return arrowTextures;
    }

    protected ResourceLocation getEntityTexture(Entity p_110775_1_)
    {
    return this.getEntityTexture((EntityBullet)p_110775_1_);
    }

    public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_)
    {
    this.doRender((EntityBullet)p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_);
    }
    }



  • c'était ma class Render


  • Correcteurs

    Coucou, la fonction recherche aide énormément quand on ne sait pas par quoi commencer:

    http://www.minecraftforgefrance.fr/showthread.php?tid=2509&highlight=créer+une+lance

    De quoi pas mal t'inspirer j'espère



  • Il faut peut-être indiquer ton modid à cette ligne
    private static final ResourceLocation arrowTextures = new ResourceLocation("textures/entity/RenderEntityBullet.png");
    Car là il est clair que le jeu recherche une texture inexistante…



  • j'ai essaye de remplacer sa par
    private static final ResourceLocation arrowTextures = new ResourceLocation(References.MODID + ":RenderEntityBullet");
    mais sa ne marche pas :/___mais si il ne trouvait pas la texture il ne mettrait pas la texture rose et noire ?


  • Correcteurs

    Il faut écrire le chemin depuis le dossier texture.
    Ensuite tu devrais vraiment mais vraiment éviter les doubles post et préférer éditer un message avant que les grands méchants modos ne t'attrapent 😃



  • ok merci 🙂
    mais pour le chemin c'est ce que j'avait marqué : "textures/entity/RenderEntityBullet.png"

    sinon je peut ne pas afficher la texture mais que les particules ?