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.6k 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.
    • 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 Hors-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 Hors-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 Hors-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 Hors-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 Hors-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 Hors-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 Hors-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 Hors-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