MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Comment faire une lance ?

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.7.10
    73 Messages 5 Publieurs 16.3k Vues 1 Watching
    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.
    • QuantumSheepQ Hors-ligne
      QuantumSheep
      dernière édition par

      Merci, ça fonctionne parfaitement 🙂
      Maintenant j’ai un problèmes x) Comment je rajoute un model à l’entitée qui est lancé ? (Model déjà exporté)

      1 réponse Dernière réponse Répondre Citer 0
      • robin4002R Hors-ligne
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
        dernière édition par

        Comme pour n’importe quelle entité. Il faut faire un render.

        1 réponse Dernière réponse Répondre Citer 0
        • QuantumSheepQ Hors-ligne
          QuantumSheep
          dernière édition par

          Oui je sais mais tu n’aurais pas un tuto, je suis vraient débutant dans le milieu x)

          1 réponse Dernière réponse Répondre Citer 0
          • robin4002R Hors-ligne
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs
            dernière édition par

            http://www.minecraftforgefrance.fr/showthread.php?tid=648#classe2
            +
            http://www.minecraftforgefrance.fr/showthread.php?tid=648#classe4
            C’est le même principe, sauf qu’au lieu d’utiliser RenderBiped il faut utiliser directement Render. Tu peux aussi t’inspirer des autres rendus de Minecraft.

            1 réponse Dernière réponse Répondre Citer 0
            • QuantumSheepQ Hors-ligne
              QuantumSheep
              dernière édition par

              J’ai pris un peut du tuto et la class RenderArrow de minecraft en la modifiant et il me reste un problème au niveau du ClientProxy, Je met cette ligne dans le ClientProxy :

              RenderingRegistry.registerEntityRenderingHandler(EntitySpear.class, new RenderSpear(new ModelBase(), 0.5F));
              

              et il ne l’accepte pas au niveau du ModelBase.

              Class principale : ```java
              package com.quantumsheep.arkcraft;

              import java.awt.Color;

              import org.apache.logging.log4j.LogManager;
              import org.apache.logging.log4j.Logger;

              import com.quantumsheep.arkcraft.entity.EntityGiantSpider;
              import com.quantumsheep.arkcraft.entity.EntitySpear;
              import com.quantumsheep.arkcraft.lib.CommonProxy;
              import com.quantumsheep.arkcraft.lib.EntityEventHandler;
              import com.quantumsheep.arkcraft.lib.References;
              import com.quantumsheep.arkcraft.weapons.WeaponSpear;

              import cpw.mods.fml.common.Mod;
              import cpw.mods.fml.common.Mod.EventHandler;
              import cpw.mods.fml.common.Mod.Instance;
              import cpw.mods.fml.common.SidedProxy;
              import cpw.mods.fml.common.event.FMLInitializationEvent;
              import cpw.mods.fml.common.event.FMLPostInitializationEvent;
              import cpw.mods.fml.common.event.FMLPreInitializationEvent;
              import cpw.mods.fml.common.registry.EntityRegistry;
              import cpw.mods.fml.common.registry.GameRegistry;
              import cpw.mods.fml.common.registry.LanguageRegistry;
              import net.minecraft.client.gui.Gui;
              import net.minecraft.creativetab.CreativeTabs;
              import net.minecraft.entity.Entity;
              import net.minecraft.item.Item;
              import net.minecraft.item.Item.ToolMaterial;
              import net.minecraftforge.common.MinecraftForge;
              import net.minecraftforge.common.util.EnumHelper;

              @Mod(modid = References.MODID, name = “ArkCraft Mod”, version = References.VERSION)

              public class ArkCraftMod {

              @Instance(“arkcraft”)
              public static ArkCraftMod instance;

              @SidedProxy(clientSide = References.Client, serverSide = References.Common)
              public static CommonProxy proxy;

              public static Item weaponSpear;

              public static final Logger LOGGER = LogManager.getLogger(References.NAME);

              @EventHandler
              public void preInit(FMLPreInitializationEvent event)
              {
              weaponSpear = new WeaponSpear().setUnlocalizedName(“weaponSpear”).setTextureName(References.MODID + “:weaponSpear”).setCreativeTab(CreativeTabs.tabMaterials);

              GameRegistry.registerItem(weaponSpear, “weapon_spear”);
              }

              @EventHandler
              public void init(FMLInitializationEvent event)
              {
              EntityRegistry.registerGlobalEntityID(EntitySpear.class, “entitySpear”, EntityRegistry.findGlobalUniqueEntityId(), new Color(0, 255, 0).getRGB(), new Color(255, 0, 0).getRGB());
              EntityRegistry.registerModEntity(EntitySpear.class, “entitySpear”, 420, this.instance, 40, 1, true);

              EntityRegistry.registerGlobalEntityID(EntityGiantSpider.class, “giantSpider”, EntityRegistry.findGlobalUniqueEntityId(), 0x7AE8FF, 0x47FFE2);

              MinecraftForge.EVENT_BUS.register(new EntityEventHandler());
              proxy.registerRender();
              }

              @EventHandler
              public void postInit(FMLPostInitializationEvent event)
              {

              }
              }

              
              WeaponSpear : ```java
              package com.quantumsheep.arkcraft.weapons;
              
              import com.quantumsheep.arkcraft.ArkCraftMod;
              import com.quantumsheep.arkcraft.entity.EntitySpear;
              
              import net.minecraft.creativetab.CreativeTabs;
              import net.minecraft.enchantment.Enchantment;
              import net.minecraft.enchantment.EnchantmentHelper;
              import net.minecraft.entity.player.EntityPlayer;
              import net.minecraft.entity.projectile.EntityArrow;
              import net.minecraft.entity.projectile.EntitySnowball;
              import net.minecraft.init.Items;
              import net.minecraft.item.EnumAction;
              import net.minecraft.item.Item;
              import net.minecraft.item.ItemStack;
              import net.minecraft.world.World;
              import net.minecraftforge.common.MinecraftForge;
              import net.minecraftforge.event.entity.player.ArrowLooseEvent;
              import net.minecraftforge.event.entity.player.ArrowNockEvent;
              
              public class WeaponSpear extends Item {
              
                  public void onPlayerStoppedUsing(ItemStack stack, World world, EntityPlayer player, int useTime)
                  {
                       int j = this.getMaxItemUseDuration(stack) - useTime;
                       float f = (float)j / 5.0F;
                       f = (f * f + f * 2.0F) / 3.0F;
              
                       if ((double)f < 0.1D)
                       {
                           return;
                       }
              
                       if (f > 1.0F)
                       {
                           f = 1.0F;
                       }
              
                       EntitySpear entityarrow = new EntitySpear(world, player, f * 2.0F);
              
                       if (f == 1.0F)
                       {
                           entityarrow.setIsCritical(true);
                       }
              
                       world.playSoundAtEntity(player, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F);
              
                       player.setCurrentItemOrArmor(0, null);
                       player.inventory.markDirty();
              
                       if (!world.isRemote)
                       {
                           world.spawnEntityInWorld(entityarrow);
                       }
                  }
              
              public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_)
                 {
                     return p_77654_1_;
                 }
              
              public int getMaxItemUseDuration(ItemStack p_77626_1_)
                 {
                     return 72000;
                 }
              
              public EnumAction getItemUseAction(ItemStack p_77661_1_)
                 {
                     return EnumAction.bow;
                 }
              
              public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_)
                 {
                     ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_);
                     MinecraftForge.EVENT_BUS.post(event);
                     if (event.isCanceled())
                     {
                         return event.result;
                     }
              
                     if (p_77659_3_.capabilities.isCreativeMode || p_77659_3_.inventory.hasItem(ArkCraftMod.weaponSpear))
                     {
                         p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_));
                     }
              
                     return p_77659_1_;
                 }
              }
              

              ModelSpear : ```java
              package com.quantumsheep.arkcraft.models;

              import net.minecraft.client.model.ModelBase;
              import net.minecraft.client.model.ModelRenderer;
              import net.minecraft.entity.Entity;

              public class ModelSpear extends ModelBase
              {
                //fields
                  ModelRenderer Shape1;

              public ModelSpear()
                {
                  textureWidth = 64;
                  textureHeight = 32;

              Shape1 = new ModelRenderer(this, 0, 0);
                    Shape1.addBox(0F, 23F, 0F, 14, 1, 1);
                    Shape1.setRotationPoint(-1F, 0F, 7F);
                    Shape1.setTextureSize(64, 32);
                    Shape1.mirror = true;
                    setRotation(Shape1, 0F, 1.570796F, 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);
                  Shape1.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)
                {
                  super.setRotationAngles(f, f1, f2, f3, f4, f5, null);
                }
              }

              
              RenderSpear : ```java
              package com.quantumsheep.arkcraft.render;
              
              import org.lwjgl.opengl.GL11;
              import org.lwjgl.opengl.GL12;
              
              import com.quantumsheep.arkcraft.entity.EntitySpear;
              import com.quantumsheep.arkcraft.lib.References;
              
              import net.minecraft.client.model.ModelBiped;
              import net.minecraft.client.renderer.Tessellator;
              import net.minecraft.client.renderer.entity.Render;
              import net.minecraft.entity.Entity;
              import net.minecraft.entity.EntityLiving;
              import net.minecraft.entity.projectile.EntityArrow;
              import net.minecraft.util.MathHelper;
              import net.minecraft.util.ResourceLocation;
              
              public class RenderSpear extends Render
              {
              private static final ResourceLocation spearTextures = new ResourceLocation("textures/entity/arrow.png");
                  private static final String __OBFID = "CL_00000978";
              
                  /**
                   * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then
                   * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic
                   * (Render<t extends="" entity)="" and="" this="" method="" has="" signature="" public="" void="" func_76986_a(t="" entity,="" double="" d,="" d1,<br="">     * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that.
                   */
                  public void doRender(EntitySpear 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();
                  }
              
                  /**
                   * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture.
                   */
                  protected ResourceLocation getEntityTexture(EntitySpear p_110775_1_)
                  {
                      return spearTextures;
                  }
              
                  /**
                   * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture.
                   */
                  protected ResourceLocation getEntityTexture(Entity p_110775_1_)
                  {
                      return this.getEntityTexture((EntitySpear)p_110775_1_);
                  }
              
                  /**
                   * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then
                   * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic
                   * (Render<t extends="" entity)="" and="" this="" method="" has="" signature="" public="" void="" func_76986_a(t="" entity,="" double="" d,="" d1,<br="">     * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that.
                   */
                  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((EntitySpear)p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_);
                  }
              }
              ```</t></t>
              1 réponse Dernière réponse Répondre Citer 0
              • robin4002R Hors-ligne
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                dernière édition par

                Pourquoi ModelBase ? Ton modèle s’appelle ModelSpear. Et le code de rendu n’est pas bon pour ce que tu veux faire, le rendu de la flèche rend directement la flèche et non un modèle.

                1 réponse Dernière réponse Répondre Citer 0
                • QuantumSheepQ Hors-ligne
                  QuantumSheep
                  dernière édition par

                  J’ai remplacer comme ça : ```java
                  RenderingRegistry.registerEntityRenderingHandler(EntitySpear.class, new RenderSpear(ModelSpear(), 0.5F));

                  
                  Et ça ne fonctionne pas, il me met une erreur sur ModelSpear.
                  
                  Tu n'aurais pas un code qui me montrerais comment faire ? :'(
                  1 réponse Dernière réponse Répondre Citer 0
                  • robin4002R Hors-ligne
                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                    dernière édition par

                    Un exemple de rendu :
                    https://github.com/FFMT/nanotech_mod/blob/master/common/fr/mcnanotech/kevin_68/nanotechmod/main/client/renderer/RenderSatelite.java
                    Le modèle ne passe pas par le constructeur, donc c’est enregistré directement comme ça :
                    https://github.com/FFMT/nanotech_mod/blob/master/common/fr/mcnanotech/kevin_68/nanotechmod/main/core/ClientProxy.java#L81

                    1 réponse Dernière réponse Répondre Citer 0
                    • QuantumSheepQ Hors-ligne
                      QuantumSheep
                      dernière édition par

                      Ok, c’est bon, le model se génère bien, seul problème c’est que la lance est décalée et quand je la lance elle se tp plus en hauteur…

                      1 réponse Dernière réponse Répondre Citer 0
                      • SCAREXS Hors-ligne
                        SCAREX
                        dernière édition par

                        Après il faut changer comment est rendu ton model avec des translations et des rotations. Il faut juste vérifier que le problème ne soit qu’au rendu et pas au niveau de la hitbox, fait F3+B pour voir les hitbox.

                        Site web contenant mes scripts : http://SCAREXgaming.github.io

                        Pas de demandes de support par MP ni par skype SVP.
                        Je n'accepte sur skype que l…

                        1 réponse Dernière réponse Répondre Citer 0
                        • QuantumSheepQ Hors-ligne
                          QuantumSheep
                          dernière édition par

                          C’est la même Hitbox qu’une flèche c’est bizarre que ça ne fonctionne pas… Voilà mon model Techne en pièce jointe (Modèle provisoire).

                          1 réponse Dernière réponse Répondre Citer 0
                          • QuantumSheepQ Hors-ligne
                            QuantumSheep
                            dernière édition par

                            Personne n’a de solution à ce décalage ? :'(___Ah et nouveau problème (Triple poste oklm), Quand j’utilise n’importe quel autre item que je créer (Même sans méthodes juste un item normal) il envois l’entitée de la lance et se charge O_o

                            1 réponse Dernière réponse Répondre Citer 0
                            • robin4002R Hors-ligne
                              robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                              dernière édition par

                              Envoies nous ton code. Et pour le décalage il suffit de faire un petit GL11.glTranslate dans le code du rendu.

                              1 réponse Dernière réponse Répondre Citer 0
                              • QuantumSheepQ Hors-ligne
                                QuantumSheep
                                dernière édition par

                                Voilà le github avec les derniers codes : https://github.com/ArkCraft/ArkCraft/tree/master/src/main
                                ça sera surement plus pratique 😜

                                1 réponse Dernière réponse Répondre Citer 0
                                • robin4002R Hors-ligne
                                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                  dernière édition par

                                  Il n’y a qu’un item sur le github.

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • QuantumSheepQ Hors-ligne
                                    QuantumSheep
                                    dernière édition par

                                    Oui, je viens de changer : https://github.com/ArkCraft/ArkCraftMod/

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • SCAREXS Hors-ligne
                                      SCAREX
                                      dernière édition par

                                      Fais un peu d’ordre dans ton code, y’a pas besoin de 40 glScale à la suite.

                                      Dans ton glTranslate, rajoute un -1 sur l’axe y, il faut changer ces valeurs pour avoir la bonne.

                                      Site web contenant mes scripts : http://SCAREXgaming.github.io

                                      Pas de demandes de support par MP ni par skype SVP.
                                      Je n'accepte sur skype que l…

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • QuantumSheepQ Hors-ligne
                                        QuantumSheep
                                        dernière édition par

                                        C’est le render originel de la flèche 😉
                                        Comment je change pour -1, je n’ai aucunes connaissances en GL 😛

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • robin4002R Hors-ligne
                                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                          dernière édition par

                                          weaponSpear = new WeaponSpear().setUnlocalizedName(“weaponSpear”).setTextureName(References.MODID + “:weaponSpear”).setCreativeTab(CreativeTabs.tabMaterials);
                                          itemLongneckRifle = new WeaponSpear().setUnlocalizedName(“itemLongneckRifle”).setTextureName(References.MODID + “:itemLongneckRifle”).setCreativeTab(CreativeTabs.tabMaterials);

                                          Si tu utilises la même classe pour les deux c’est normal que les deux items ont le même comportement …

                                          Et pour le -1, c’est juste changer un nombre dans le code … ça ne nécessite aucune compétence spécial.

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • QuantumSheepQ Hors-ligne
                                            QuantumSheep
                                            dernière édition par

                                            Okkkk je suis donc un con pour ne pas avoir vu ça….

                                            Le -1 je ne sait juste pas où le placer

                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 1 / 4
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB