• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu Zoom arc + puissance trop élevé

    1.7.x
    1.7.10
    4
    13
    2285
    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.
    • VhakeFX
      VhakeFX dernière édition par

      Bonjour ! Aujourd’hui j’ai crée un arc. Cependant quand je charge, le jeu ne zoom pas. J’ai regardé sur le forum mais le seul tuto que j’ai trouvé c’est en 1.6 et il ne marche pas chez moi 😕

      Egalement la puissance de l’arc est trop élevé, je charge à peine, il tire une flèche comme si j’avais chargé 😕

      Voilà merci 🙂

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

      1 réponse Dernière réponse Répondre Citer 0
      • SCAREX
        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
        • VhakeFX
          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
          • robin4002
            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
            • VhakeFX
              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
              • robin4002
                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
                • VhakeFX
                  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
                  • SCAREX
                    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
                    • elias54
                      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
                      • VhakeFX
                        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
                        • SCAREX
                          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
                          • VhakeFX
                            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
                            • SCAREX
                              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
                              Contact / Mentions Légales

                              MINECRAFT FORGE FRANCE © 2018

                              Powered by NodeBB