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

Comment faire une lance ?

Sans suite
1.7.10
5
73
15.3k
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.
  • robin4002
    robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 15 août 2015, 10:37

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

    1 réponse Dernière réponse Répondre Citer 0
    • QuantumSheep
      QuantumSheep dernière édition par 15 août 2015, 10:48

      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
      • robin4002
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 15 août 2015, 11:02

        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
        • QuantumSheep
          QuantumSheep dernière édition par 15 août 2015, 11:41

          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
          • robin4002
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 15 août 2015, 11:59

            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
            • QuantumSheep
              QuantumSheep dernière édition par 15 août 2015, 12:02

              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
              • robin4002
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 15 août 2015, 12:19

                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
                • QuantumSheep
                  QuantumSheep dernière édition par 15 août 2015, 13:02

                  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
                  • SCAREX
                    SCAREX dernière édition par 15 août 2015, 14:02

                    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
                    • QuantumSheep
                      QuantumSheep dernière édition par 15 août 2015, 14:55

                      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
                      • QuantumSheep
                        QuantumSheep dernière édition par 16 août 2015, 12:31

                        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
                        • robin4002
                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 16 août 2015, 16:20

                          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
                          • QuantumSheep
                            QuantumSheep dernière édition par 16 août 2015, 17:14

                            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
                            • robin4002
                              robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 16 août 2015, 17:57

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

                              1 réponse Dernière réponse Répondre Citer 0
                              • QuantumSheep
                                QuantumSheep dernière édition par 16 août 2015, 20:38

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

                                1 réponse Dernière réponse Répondre Citer 0
                                • SCAREX
                                  SCAREX dernière édition par 16 août 2015, 20:42

                                  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
                                  • QuantumSheep
                                    QuantumSheep dernière édition par 16 août 2015, 20:52

                                    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
                                    • robin4002
                                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 16 août 2015, 20:55

                                      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
                                      • QuantumSheep
                                        QuantumSheep dernière édition par 16 août 2015, 21:01

                                        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
                                        • SCAREX
                                          SCAREX dernière édition par 16 août 2015, 21:02

                                          Voilà

                                          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
                                          • 1
                                          • 2
                                          • 3
                                          • 4
                                          • 2 / 4
                                          21 sur 73
                                          • Premier message
                                            21/73
                                            Dernier message
                                          Design by Woryk
                                          Contact / Mentions Légales

                                          MINECRAFT FORGE FRANCE © 2018

                                          Powered by NodeBB