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