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.
    • 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 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