MFF

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

    Problème arc rendu 3D et dégâts flèches

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.x
    16 Messages 7 Publieurs 2.7k Vues 1 Abonné
    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.
    • leo01418L Hors-ligne
      leo01418
      dernière édition par

      Pour les dégâts c’est simple ils sont ici

       EntityArrow entityarrow = new EntityArrow(p_77615_2_, p_77615_3_, f * 3.0F); /*le 3.0F*/
      

      Mais tu va me dire où ???
      dans cette méthode 🙂

        public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_)
          {
              int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_;
      
              ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j);
              MinecraftForge.EVENT_BUS.post(event);
              if (event.isCanceled())
              {
                  return;
              }
              j = event.charge;
      
              boolean flag = p_77615_3_.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0;
      
              if (flag || p_77615_3_.inventory.hasItem(Items.arrow))
              {
                  float f = (float)j / 20.0F;
                  f = (f * f + f * 2.0F) / 3.0F;
      
                  if ((double)f < 0.1D)
                  {
                      return;
                  }
      
                  if (f > 1.0F)
                  {
                      f = 1.0F;
                  }
      
                  EntityArrowDeath entityarrow = new EntityArrowDeath(p_77615_2_, p_77615_3_, f * 3.0F); /**/
      
                  if (f == 1.0F)
                  {
                      entityarrow.setIsCritical(true);
                  }
      
                  int k = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, p_77615_1_);
      
                  if (k > 0)
                  {
                      entityarrow.setDamage(entityarrow.getDamage() + (double)k * 1.50D + 1.50D);
                  }
      
                  int l = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, p_77615_1_);
      
                  if (l > 0)
                  {
                      entityarrow.setKnockbackStrength(l);
                  }
      
                  if (EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, p_77615_1_) > 0)
                  {
                      entityarrow.setFire(700);
                  }
      
                  p_77615_1_.damageItem(1, p_77615_3_);
                  p_77615_2_.playSoundAtEntity(p_77615_3_, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F);
      
                  if (flag)
                  {
                      entityarrow.canBePickedUp = 2;
                  }
                  else
                  {
                      p_77615_3_.inventory.consumeInventoryItem(Items.arrow);
                  }
      
                  if (!p_77615_2_.isRemote)
                  {
                      p_77615_2_.spawnEntityInWorld(entityarrow);
                  }
              }
          }
      

      Ps Utilise les balises java 😉
      Edit ATTENTION dans la méthode que je t’ai donné c’est une autre entity bow (pour donné des effet de potion) Donc enlève Death et tu import 😉

      Encore Edit j’avais pas vu ta réponse donc sa prend en compte le chargement de l’arc

      Voila ma signature

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

        Ah ok merci donc ce n’était pas du tout dans la class de la flèche comme je le pensais ^^

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

          Alors je viens de testé et sa me fait pareil pour l’arc mais il me semble qu’il à des sujets qui traite ceci je vais regardé et je te donnerais la réponse 😉

          Voila ma signature

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

            Ah je me disais aussi que ça ne venait pas que de moi ! Merci mais j’ai déjà fait plein de recherches sans aucunes réponses à mon problème donc si tu trouve GG 😛

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

              @‘ErkoZ’:

              Ah je me disais aussi que ça ne venait pas que de moi ! Merci mais j’ai déjà fait plein de recherches sans aucunes réponses à mon problème donc si tu trouve GG 😛

              J’ai trouvé cela 😛
              https://www.minecraftforgefrance.fr/showthread.php?tid=2593

              Voila ma signature

              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

                https://www.minecraftforgefrance.fr/showthread.php?tid=2593&pid=30130#pid30130
                pour être plus précis.

                Le placement de l’arc est hardcodé dans le jeu, du-coup faut faire tout un bordel pour reproduire.

                En 1.8 et + comme il y a les jsons il suffit de modifier une petite valeur dans le json (ou reprendre le même json que l’arc).

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

                  Merci pour toutes vos réponses mais est ce que vous savez ou est la classe du rendu de l’arc ? Si il y en a une ?

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

                    Il n’y a pas de classe spéciale, c’est dans la classe qui s’occupe de rendre ce qu’on a en main.

                    Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                    AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                    Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                    Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                      Bon après quelques recherches et graçe à vous j’ai finalement résolu mon problème du coup je vais partager la solution à ceux qui auront ou ont le même problème que moi 😉

                      Il suffit de créer une classe ModBowRenderer et d’y mettre ça:

                      
                      package com.google.akinarutv.akimod.common.renderer;
                      
                      import org.lwjgl.opengl.GL11;
                      
                      import org.lwjgl.opengl.GL12;
                      
                      import net.minecraft.client.Minecraft;
                      
                      import net.minecraft.client.entity.EntityClientPlayerMP;
                      
                      import net.minecraft.client.renderer.ItemRenderer;
                      
                      import net.minecraft.client.renderer.Tessellator;
                      
                      import net.minecraft.client.renderer.texture.TextureManager;
                      
                      import net.minecraft.item.ItemStack;
                      
                      import net.minecraft.util.IIcon;
                      
                      import net.minecraft.util.ResourceLocation;
                      
                      import net.minecraftforge.client.IItemRenderer;
                      
                      public class BowRenderer implements IItemRenderer {
                      
                      private Minecraft mc;
                      
                      private TextureManager texturemanager;
                      
                      public BowRenderer() {
                      
                      this.mc = Minecraft.getMinecraft();
                      
                      this.texturemanager = this.mc.getTextureManager();
                      
                      }
                      
                      @Override
                      
                      //HandleRenderType lets forge know if it will render the item in the requested view.
                      
                      public boolean handleRenderType(ItemStack item, ItemRenderType type) {
                      
                      //You can remove everything after "EQUIPPED" if you only want this class to render the third person item.
                      
                      return type == ItemRenderType.EQUIPPED || type == ItemRenderType.EQUIPPED_FIRST_PERSON;
                      
                      }
                      
                      @Override
                      
                      //RenderHelpers I don't fully understand, I'd assume they are modifiers, but I've never looked into it.
                      
                      public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
                      
                      return false;
                      
                      }
                      
                      @Override
                      
                      //This function decides what to do in rendering an item, whether it's first or third person.
                      
                      //Credit to SanAndreasP on minecraftforge forums for this code.
                      
                      public void renderItem(ItemRenderType type, ItemStack item, Object… data) {
                      
                      EntityClientPlayerMP entity = (EntityClientPlayerMP)data[1];
                      
                      GL11.glPopMatrix(); // prevents Forge from pre-translating the item
                      
                      if(type == ItemRenderType.EQUIPPED_FIRST_PERSON) {
                      
                      this.renderItem(entity, item, 0);
                      
                      } else {
                      
                      GL11.glPushMatrix();
                      
                      // contra-translate the item from it's standard translation
                      
                      // also apply some more scale or else the bow is tiny
                      
                      float f2 = 3F - (1F/3F);
                      
                      GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F);
                      
                      GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F);
                      
                      GL11.glRotatef(-60.0F, 0.0F, 0.0F, 1.0F);
                      
                      GL11.glScalef(f2, f2, f2);
                      
                      GL11.glTranslatef(-0.25F, -0.1875F, 0.1875F);
                      
                      // render the item as 'real' bow
                      
                      //This is pulled from RenderBiped
                      
                      float f3 = 0.625F;
                      
                      GL11.glTranslatef(0.0F, 0.125F, 0.3125F);
                      
                      GL11.glRotatef(-20.0F, 0.0F, 1.0F, 0.0F);
                      
                      GL11.glScalef(f3, -f3, f3);
                      
                      GL11.glRotatef(-100.0F, 1.0F, 0.0F, 0.0F);
                      
                      GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F);
                      
                      this.renderItem(entity, item, 0);
                      
                      GL11.glPopMatrix();
                      
                      }
                      
                      GL11.glPushMatrix(); // prevents GL Underflow errors
                      
                      }
                      
                      //This actually renders an Icon to be worked with.
                      
                      //All of this code is directly pulled from ItemRenderer.class
                      
                      private void renderItem(EntityClientPlayerMP par1EntityLiving, ItemStack par2ItemStack, int par3) {
                      
                      {
                      
                      //If you for whatever reason aren't registering icons with iconRegister, I'm assuming you'll need to change the code below.
                      
                      IIcon iicon = par1EntityLiving.getItemIcon(par2ItemStack, par3);
                      
                      if (iicon == null)
                      
                      {
                      
                      GL11.glPopMatrix();
                      
                      return;
                      
                      }
                      
                      texturemanager.bindTexture(texturemanager.getResourceLocation(par2ItemStack.getItemSpriteNumber()));
                      
                      Tessellator tessellator = Tessellator.instance;
                      
                      float f = iicon.getMinU();
                      
                      float f1 = iicon.getMaxU();
                      
                      float f2 = iicon.getMinV();
                      
                      float f3 = iicon.getMaxV();
                      
                      float f4 = 0.0F;
                      
                      float f5 = 0.3F;
                      
                      GL11.glEnable(GL12.GL_RESCALE_NORMAL);
                      
                      GL11.glTranslatef(-f4, -f5, 0.0F);
                      
                      float f6 = 1.5F;
                      
                      GL11.glScalef(f6, f6, f6);
                      
                      GL11.glRotatef(50.0F, 0.0F, 1.0F, 0.0F);
                      
                      GL11.glRotatef(335.0F, 0.0F, 0.0F, 1.0F);
                      
                      GL11.glTranslatef(-0.9375F, -0.0625F, 0.0F);
                      
                      ItemRenderer.renderItemIn2D(tessellator, f1, f2, f, f3, iicon.getIconWidth(), iicon.getIconHeight(), 0.0625F);
                      
                      //This checks for enchantments.
                      
                      if (par2ItemStack.hasEffect(par3))
                      
                      {
                      
                      GL11.glDepthFunc(GL11.GL_EQUAL);
                      
                      GL11.glDisable(GL11.GL_LIGHTING);
                      
                      texturemanager.bindTexture(new ResourceLocation("textures/misc/enchanted_item_glint.png"));
                      
                      GL11.glEnable(GL11.GL_BLEND);
                      
                      GL11.glBlendFunc(GL11.GL_SRC_COLOR, GL11.GL_ONE);
                      
                      float f7 = 0.76F;
                      
                      GL11.glColor4f(0.5F * f7, 0.25F * f7, 0.8F * f7, 1.0F);
                      
                      GL11.glMatrixMode(GL11.GL_TEXTURE);
                      
                      GL11.glPushMatrix();
                      
                      float f8 = 0.125F;
                      
                      GL11.glScalef(f8, f8, f8);
                      
                      float f9 = (float)(Minecraft.getSystemTime() % 3000L) / 3000.0F * 8.0F;
                      
                      GL11.glTranslatef(f9, 0.0F, 0.0F);
                      
                      GL11.glRotatef(-50.0F, 0.0F, 0.0F, 1.0F);
                      
                      ItemRenderer.renderItemIn2D(tessellator, 0.0F, 0.0F, 1.0F, 1.0F, 256, 256, 0.0625F);
                      
                      GL11.glPopMatrix();
                      
                      GL11.glPushMatrix();
                      
                      GL11.glScalef(f8, f8, f8);
                      
                      f9 = (float)(Minecraft.getSystemTime() % 4873L) / 4873.0F * 8.0F;
                      
                      GL11.glTranslatef(-f9, 0.0F, 0.0F);
                      
                      GL11.glRotatef(10.0F, 0.0F, 0.0F, 1.0F);
                      
                      ItemRenderer.renderItemIn2D(tessellator, 0.0F, 0.0F, 1.0F, 1.0F, 256, 256, 0.0625F);
                      
                      GL11.glPopMatrix();
                      
                      GL11.glMatrixMode(GL11.GL_MODELVIEW);
                      
                      GL11.glDisable(GL11.GL_BLEND);
                      
                      GL11.glEnable(GL11.GL_LIGHTING);
                      
                      GL11.glDepthFunc(GL11.GL_LEQUAL);
                      
                      }
                      
                      GL11.glDisable(GL12.GL_RESCALE_NORMAL);
                      
                      }
                      
                      }
                      
                      }
                      

                      J’ai trouvé cette classe ici: https://www.minecraftforgefrance.fr/archive/index.php?thread-726-2.html#

                      Ensuite vous enregistrez votre item avec le rendu dans votre ClientProxy voila 🙂

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

                        Résolu ?

                        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
                        • ErkoZE Hors-ligne
                          ErkoZ
                          dernière édition par

                          Oui, résolu.

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

                            Alors rajoute la balise en éditant ton premier message

                            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 / 1
                            • Premier message
                              Dernier message
                            Design by Woryk
                            ContactMentions Légales

                            MINECRAFT FORGE FRANCE © 2024

                            Powered by NodeBB