MFF

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

    Tu n'arrives pas a faire les arcs

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.7.x
    20 Messages 3 Publieurs 2.8k 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.
    • S Hors-ligne
      sventus
      dernière édition par

      salut les amis, c’est encore moi pour un nouvel épisode de : tu n’arrives pas a faire les arcs.

      Donc lors de cette épisode vous l’aurez compris, j’ai un soucis d’arc, mais non pas un soucis venant de l’animation ou autre, mais un soucis par rapport à la portée,  j’ai le code ci -dessous

      
       if(creativeOrInfinity || player.inventory.hasItem(Items.arrow))
              {
                  float power = (float)charge / 1.0F;
                  power = (power* power + power * 2.0F) / 3.0F;
      
                  if ((double)power < 1.0D)
                  {
                      return;
                  }
      
                  if (power > 1.0F)
                  {
                      power = 1.0F;
                  }
                  EntityArrow arrow = new EntityArrow(world, player, power * 0.5F);
      
                  if(power == 1.0F)
                  {
                      arrow.setIsCritical(true);
                  }
      
      

      donc en réalité  l’arc ne charge pas, ou presque pas et je ne comprend pas quel valeur il faut changer pour réussir cette exploit …

      j’espère qu’on pourra m’éclairer sur cela.
      cordialement,
      Sventus

      1 réponse Dernière réponse Répondre Citer 0
      • FolganskyF Hors-ligne
        Folgansky Correcteurs
        dernière édition par

        %(#000000)[[font=monospace]EntityArrow]%(#000000)[[font=monospace] arrow ]%(#666600)[[font=monospace]=] %(#7f0055)[[font=monospace]**new**] %(#000000)[[font=monospace]EntityArrow]%(#666600)[[font=monospace](]%(#000000)[[font=monospace]world]%(#666600)[[font=monospace],]%(#000000)[[font=monospace] player]%(#666600)[[font=monospace],]%(#000000)[[font=monospace] power ]%(#666600)[[font=monospace]*] %(#646464)[[font=monospace]0.5F]%(#666600)[[font=monospace]);]
        

        C’est le 0.5F qui règle la portée et la puissance à la fois.

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

          oui mais ça ne change pas entre les différentes charges

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

            Ce qui serait bien c’est d’avoir la classe complète …

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

              
              package fr.craftesys.craftesys.items;
              
              import net.minecraft.client.renderer.texture.IIconRegister;
              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.init.Items;
              import net.minecraft.item.EnumAction;
              import net.minecraft.item.ItemBow;
              import net.minecraft.item.ItemStack;
              import net.minecraft.util.IIcon;
              import net.minecraft.world.World;
              import net.minecraftforge.common.MinecraftForge;
              import net.minecraftforge.event.entity.player.ArrowLooseEvent;
              import net.minecraftforge.event.entity.player.ArrowNockEvent;
              import fr.craftesys.craftesys.common.Mods;
              
              public class CobaltBow extends ItemBow
              {
              private IIcon[] iconbuffer;
              private static String[] cobaltbow = new String[] {"_pull1", "_pull2", "_pull3"};
              
              public CobaltBow()
              {
              super();
              this.maxStackSize = 1;
              this.setMaxDamage(384);
              }
              
              @Override
              public void registerIcons(IIconRegister iconregister)
              {
              iconbuffer = new IIcon[cobaltbow.length];
              itemIcon = iconregister.registerIcon(this.getIconString());
              for(int i = 0; i < cobaltbow.length; i++)
              {
              iconbuffer* = iconregister.registerIcon(this.getIconString() + cobaltbow*);
              }
              }
              
              @Override
              public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining)
              {
              if(usingItem != null && usingItem.getItem().equals(Mods.cobaltbow))
              {
              int k = usingItem.getMaxItemUseDuration() - useRemaining;
              if(k >= 18)
              return iconbuffer[2];
              if(k > 13)
              return iconbuffer[1];
              if(k > 0)
              return iconbuffer[0];
              }
              return getIconIndex(stack);
              }
              
              @Override
              public void onPlayerStoppedUsing(ItemStack stack, World world, EntityPlayer player, int itemInUseCount)
              {
              int charge = this.getMaxItemUseDuration(stack) - itemInUseCount;
              
              ArrowLooseEvent event = new ArrowLooseEvent(player, stack, charge);
              MinecraftForge.EVENT_BUS.post(event);
              if(event.isCanceled())
              {
              return;
              }
              charge = event.charge;
              
              boolean creativeOrInfinity = player.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0;
              
              if(creativeOrInfinity || player.inventory.hasItem(Items.arrow))
              {
              float power = (float)charge / 1.0F;
              power = (power* power + power * 2.0F) / 3.0F;
              
              if ((double)power < 1.0D)
              {
              return;
              }
              
              if (power > 1.0F)
              {
              power = 3.0F;
              }
              EntityArrow arrow = new EntityArrow(world, player, power * 0.5F);
              
              if(power == 1.0F)
              {
              arrow.setIsCritical(true);
              }
              
              int var9 = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, stack);
              
              if(var9 > 0)
              {
              arrow.setDamage(arrow.getDamage() + (double)var9 * 0.5D + 0.5D);
              }
              
              int var10 = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, stack);
              
              if(var10 > 0)
              {
              arrow.setKnockbackStrength(var10);
              }
              
              if(EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, stack) > 0)
              {
              arrow.setFire(100);
              }
              
              stack.damageItem(1, player);
              world.playSoundAtEntity(player, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + power * 0.5F);
              
              if(creativeOrInfinity)
              {
              arrow.canBePickedUp = 2;
              }
              else
              {
              player.inventory.consumeInventoryItem(Items.arrow);
              }
              
              if(!world.isRemote)
              {
              world.spawnEntityInWorld(arrow);
              }
              }
              }
              
              @Override
              public ItemStack onEaten(ItemStack stack, World world, EntityPlayer player)
              {
              return stack;
              }
              
              @Override
              public int getMaxItemUseDuration(ItemStack stack)
              {
              return 72000;
              }
              
              @Override
              public EnumAction getItemUseAction(ItemStack stack)
              {
              return EnumAction.bow;
              }
              
              @Override
              public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
              {
              ArrowNockEvent event = new ArrowNockEvent(player, stack);
              MinecraftForge.EVENT_BUS.post(event);
              if(event.isCanceled())
              {
              return event.result;
              }
              
              if(player.capabilities.isCreativeMode || player.inventory.hasItem(Items.arrow))
              {
              player.setItemInUse(stack, this.getMaxItemUseDuration(stack));
              }
              return stack;
              }
              
              @Override
              public int getItemEnchantability()
              {
              return 1;
              }
              }
              
              1 réponse Dernière réponse Répondre Citer 0
              • robin4002R En ligne
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                dernière édition par

                int charge = this.getMaxItemUseDuration(stack) - itemInUseCount;
                Cette variable est bonne, tu devrais avoir plus de puissance. Étrange.
                print la valeur pour voir ce que ça donne.

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

                  2
                  2
                  1
                  1
                  2
                  2
                  2
                  2
                  24
                  24
                  7
                  7
                  2
                  2
                  17
                  17
                  25
                  25

                  on voit bien que la valeur change, pourtant la flèche arrive toujours à la même distance

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

                    if (power > 1.0F)
                    {
                    power = 3.0F;
                    }
                    …
                    Je viens de voir ça. Tu réaffecte la valeur 3 à chaque fois. Donc normal que ça va toujours à la même distance.

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

                      puis aussi c’est la charge que je dois regarder, pas la force xD

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

                        float power = (float)charge / 1.0F;
                        La force est définie en fonction de la charge. C’est comme ça que la flèche fonctionne …

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

                          oué j’ai fait comme ça du coup (c’est pas beau, je préviens) :

                          
                          if(creativeOrInfinity || player.inventory.hasItem(Items.arrow))
                          {
                          float power = (float)charge / 1.0F;
                          power = (power* power + power * 2.0F) / 3.0F;
                          
                          if ((double)power < 0.01D)
                          {
                          return;
                          }
                          if (charge == 1F)
                          {
                          power = 0.2F;
                          }
                          if (charge == 2F)
                          {
                          power = 0.3F;
                          }
                          if (charge == 3F)
                          {
                          power = 0.6F;
                          }
                          if (charge == 4F)
                          {
                          power = 0.7F;
                          }
                          if (charge == 5F)
                          {
                          power = 0.9F;
                          }
                          if (charge == 6F)
                          {
                          power = 1.1F;
                          }
                          if (charge == 7F)
                          {
                          power = 1.3F;
                          }
                          if (charge == 8F)
                          {
                          power = 1.5F;
                          }
                          if (charge == 9F)
                          {
                          power = 1.7F;
                          }
                          if (charge == 10F)
                          {
                          power = 1.9F;
                          }
                          if (charge == 11F)
                          {
                          power = 2.1F;
                          }
                          if (charge == 12F)
                          {
                          power = 2.3F;
                          }
                          if (charge == 13F)
                          {
                          power = 2.5F;
                          }
                          if (charge == 14F)
                          {
                          power = 2.7F;
                          }
                          if (charge == 15F)
                          {
                          power = 2.7F;
                          }
                          if (charge == 16F)
                          {
                          power = 3.1F;
                          }
                          if (charge == 17F)
                          {
                          power = 3.3F;
                          }
                          if (charge == 18F)
                          {
                          power = 3.5F;
                          }
                          if (charge == 19F)
                          {
                          power = 3.7F;
                          }
                          if (charge == 20F)
                          {
                          power = 3.8F;
                          }
                          if (charge == 21F)
                          {
                          power = 3.9F;
                          }
                          if (charge == 22F)
                          {
                          power = 4.0F;
                          }
                          if (charge == 23F)
                          {
                          power = 4.05F;
                          }
                          if (charge == 24F)
                          {
                          power = 4.1F;
                          }
                          if(charge >24F)
                          {
                          power = 4.15F;
                          }
                          
                          

                          il y a donc diverses portées mais les dégâts fait sont toujours identiques et pourtant j’ai changé la valeur la :

                          this.setMaxDamage(1000);

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

                            Des idées sur le souci du coup ?

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

                              Le setMaxDamage dans le constructeur de l’item c’est pour la durabilité de l’arc –’

                              Pour les dégâts de la flèche :
                              arrow.setDamage(2.0D); <- valeur par défaut

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

                                Et le D correspond à quoi ? Ainsi que le F. C’est quoi la valeur de base ?

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

                                  J’abandonne …

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • FolganskyF Hors-ligne
                                    Folgansky Correcteurs
                                    dernière édition par

                                    Oublie le D et le F, ce qui compte c’est la valeur.

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

                                      pourtant même en mettant cela :

                                      if(var9 > 0)
                                      {
                                      arrow.setDamage(2000D);
                                      }

                                      les dégâts restent inchangés

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

                                        il sort d’où ce var9 ?

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

                                          int var9 = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, stack);

                                          bon je crois avoir compris 😛

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

                                            Du-coup c’est résolu ?

                                            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