MFF

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

    Zoom arc + puissance trop élevé

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    13 Messages 4 Publieurs 2.4k 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.
    • SCAREXS Hors-ligne
      SCAREX
      dernière édition par

      SCAREX - “Je vais utiliser mon pouvoir !”
      SCAREX utilise son pouvoir pour savoir ce qui ne va pas dans le code.
      L’utilisation a échoué.
      SCAREX - “Ah oui c’est vrai, sans le code je peux rien faire.”

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

        Ah oui, mince x/

        Classe principale :
        :::
        erreur sur TickRegistry

        ​TickRegistry.registerTickHandler(new TickClientHandler(), Side.CLIENT);
        

        :::

        Classe TickClientHandler :
        :::
        Partout ou il y a “Tick” et sur getLabel()

        ​package com.heartshadow.mod.renders;
        
        import java.util.EnumSet;
        
        import com.heartshadow.mod.HSMOD;
        
        import cpw.mods.fml.client.FMLClientHandler;
        import cpw.mods.fml.common.ObfuscationReflectionHelper;
        import net.minecraft.client.Minecraft;
        import net.minecraft.client.entity.EntityPlayerSP;
        import net.minecraft.client.renderer.EntityRenderer;
        
        public class TickClientHandler implements ITickHandler {
        
            @Override
            public void tickStart(EnumSet <ticktype>type, Object… tickData) {
                final Minecraft minecraft = FMLClientHandler.instance().getClient();
            }
        
            @Override
            public void tickEnd(EnumSet <ticktype>type, Object... tickData) 
            {
                   final Minecraft minecraft = FMLClientHandler.instance().getClient();
                   final EntityPlayerSP player = minecraft.thePlayer;
                    if (type.equals(EnumSet.of(TickType.CLIENT)))
                    {
                        if(HSMOD.zoom)
                        {
                            if(minecraft.gameSettings.thirdPersonView == 0 && minecraft.currentScreen == null)
                            {
                                zoom(6F);
                            }
                        }else {
                            zoom(1.0F);
                        }
        
                    }
                 }
        
            @Override
            public EnumSet <ticktype>ticks() {
                return EnumSet.of(TickType.RENDER, TickType.CLIENT);
            }
        
            @Override
            public String getLabel() {
                return "TickClientHandler";
            }
        
            public static void zoom(float value)
            {
                ObfuscationReflectionHelper.setPrivateValue(EntityRenderer.class, FMLClientHandler.instance().getClient().entityRenderer, value, "cameraZoom");
            }
        }
        

        :::

        Classe de l’arc (pour la puissance) : 
        :::

        ​package com.heartshadow.mod.tools;
        
        import com.heartshadow.mod.HSMOD;
        
        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;
        
        public class ItemDeldaBow extends ItemBow
        {
            private IIcon[] iconbuffer;
            private static String[] bowpullname = new String[] {"_pull_0", "_pull_1", "_pull_2"};
        
            public ItemDeldaBow()
            {
                super();
                this.maxStackSize = 1;
                this.setMaxDamage(384);
            }
        
            @Override
            public void registerIcons(IIconRegister iconregister)
            {
                iconbuffer = new IIcon[bowpullname.length];
                itemIcon = iconregister.registerIcon(this.getIconString());
                for(int i = 0; i < bowpullname.length; i++)
                {
                    iconbuffer* = iconregister.registerIcon(this.getIconString() + bowpullname*);
                }
            }
        
            @Override
            public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining)
            {
                if(usingItem != null && usingItem.getItem().equals(HSMOD.deldaBow))
                {
                    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 = 20.0F;
        
                    if((double)power < 0.1D)
                    {
                        return;
                    }
        
                    if(power > 1.0F)
                    {
                        power = 1.0F;
                    }
        
                    EntityArrow arrow = new EntityArrow(world, player, power * 4.0F);
        
                    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 1200;
            }
        
            @Override
            public EnumAction getItemUseAction(ItemStack stack)
            {
                return EnumAction.bow;
            }
        
            @Override
            public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
            {
                if(!world.isRemote)
                {
                    HSMOD.zoom = !HSMOD.zoom;
                }
                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;
            }
        }
        

        :::

        Voilà</ticktype></ticktype></ticktype>

        Touches à mes amis et tu me verras comme ça !

        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 faut passer par tick event en 1.7, ITickHandler n’existe plus.

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

            Ouai, je vois pas trop comment faire et sinon pour la puissance de l’arc ?

            Touches à mes amis et tu me verras comme ça !

            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 = 20.0F;
              Ta variable power vaut toujours 20 et ne prends pas en compte la valeur de charge.

              Voici le code de Minecraft :

              float power = (float)charge / 20.0F;
              power = (power * power + power * 2.0F) / 3.0F;
              
              1 réponse Dernière réponse Répondre Citer 0
              • VhakeFXV Hors-ligne
                VhakeFX
                dernière édition par

                ça fonctionne mais j’ai pas réussi pour le zoom 😞

                Touches à mes amis et tu me verras comme ça !

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

                  Tu veux le zoom de base ou tu veux zoomer plus ?

                  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
                  • elias54E Hors-ligne
                    elias54 Administrateurs
                    dernière édition par

                    Pour zoomer + que la normale avec l’arc, faut passer par un TickHandlerEvent.
                    Mais sinon, le EnumAction devrait le faire.

                    Mon site | GitHub

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

                      SCAREX ==> Le même type de zoom que l’on a avec l’arc

                      Elias ==> Euuuh, ouais pas tout compris mais oui ^^’

                      Touches à mes amis et tu me verras comme ça !

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

                        Alors juste mettre çà suffit :

                        @Override
                        public EnumAction getItemUseAction(ItemStack stack)
                        {
                        return EnumAction.bow;
                        }
                        

                        Si tu veux plus, pas besoin de passer par un tick handler, il faut juste modifier la variable dans l’entityRenderer de cette façon :

                        ObfuscationReflectionHelper.setPrivateValue(EntityRenderer.class, Minecraft.getMinecraft().entityRenderer, valeurDuZoom, "cameraZoom", "af", "field_78503_V");
                        

                        et utiliser les events de forge sur l’utilisation des items (PlayerUseItemEvent.leventVoulut, par exemple si tu veux le modifier lorsque le joueur arrête d’utiliser l’item ce sera PlayerUseItemEvent.Stop).

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

                          Alors pour la première chose, il y était déjà et pour la deuxieme, je n’ai pas cette variable nul part.

                          Touches à mes amis et tu me verras comme ça !

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

                            Si tu l’as déjà, çà veut dire que minecraft zoom déjà lorsque tu essaies de tirer.

                            Quelle valeur ? Celle du zoom ? Normal, il faut la mettre, c’est celle que tu veux…

                            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