MFF

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

    Objet qui s'use

    Planifier Épinglé Verrouillé Déplacé Résolu Anciennes versions
    1.6.4
    18 Messages 3 Publieurs 4.3k 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.
    • EclipseOnFireE Hors-ligne
      EclipseOnFire
      dernière édition par

      Oui évidemment… T_T J’ai bouzillé ma boucle ^^ Essaye ça :

      
      int j = 0;
      for(ItemStack i : player.inventory.mainInventory){
      if(i != null && i.itemID == itemId){
      return j;
      }
      j++;
      }
      return -1;
      
      

      Travaille sur un super serveur, Wirestone.

      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

        @‘EclipseOnFire’:

        Essaye avec le code que j’ai conseillé, l’exception vient du fait que la boucle dépasse la taille de la liste.

        for(ItemStack i : player.inventory.mainInventory){
        if(i != null && i.itemID == itemId){
        return i;
        }
        return -1;
        }
        

        Regarde bien ce que tu fais ici. i est un ItemStack, et tu return i or la fonction est un int. Ça ne peux pas fonctionner …
        Si j’ai utiliser un nombre i c’est pas pour rien, je connais aussi les itérateurs, mais ils ne convient pas dans ce cas.

        Je comprends pas pourquoi il return -1 alors que ton code vérifie que le joueur à bien l’item sur lui, c’est étrange.

        Tu peux faire du debug ?

        private int getItemIntoInventory(EntityPlayer player, int itemId)
        {
        for(int i = 0; i < player.inventory.mainInventory.lenth; i ++)
        {
        if(player.inventory.mainInventory* != null && player.inventory.mainInventory*.itemID == itemId)
        {
        return i;
        System.out.println("l'item se trouve dans le slot : " + i);
        }
        }
        System.out.println("l'item non trouvé");
        return -1;
        }
        

        EDIT : j’ai mit le return -1 au mauvais endroit, c’est pour ça x)

        1 réponse Dernière réponse Répondre Citer 0
        • Nolan-XXN Hors-ligne
          Nolan-XX
          dernière édition par

          Parfait, ça marche, sauf que la boite de munition ne se détruit pas lorsqu’elle est vide.

          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

            Remplace

            player.inventory.mainInventory[getItemIntoInventory(player, EastonIsland.I9mm.itemID)].damageItem(1, player);
            

            par :

            int slotId = getItemIntoInventory(player, EastonIsland.I9mm.itemID);
            player.inventory.mainInventory[slotId].damageItem(1, player);
            if(player.inventory.mainInventory[slotId].getItemDamage == 0)
            {
            player.inventory.mainInventory[slotId] = null;
            }
            
            1 réponse Dernière réponse Répondre Citer 0
            • EclipseOnFireE Hors-ligne
              EclipseOnFire
              dernière édition par

              Je vire mes posts ça va alléger !

              Travaille sur un super serveur, Wirestone.

              1 réponse Dernière réponse Répondre Citer 0
              • Nolan-XXN Hors-ligne
                Nolan-XX
                dernière édition par

                Une erreur a

                int slotId = player.inventory.mainInventory[getItemIntoInventory(player, EastonIsland.I9mm.itemID)];
                

                :```
                Type mismatch: cannot convert from ItemStack to int

                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

                  oups x)
                  int slotId = getItemIntoInventory(player, EastonIsland.I9mm.itemID);

                  1 réponse Dernière réponse Répondre Citer 0
                  • Nolan-XXN Hors-ligne
                    Nolan-XX
                    dernière édition par

                    Parfait, merci.

                    1 réponse Dernière réponse Répondre Citer 0
                    • Nolan-XXN Hors-ligne
                      Nolan-XX
                      dernière édition par

                      En fait non, il m’envoie une erreur à :

                      java.lang.ArrayIndexOutOfBoundsException: -1
                      

                      La classe de l’item

                      
                      package assets.ei.Weapons;
                      
                      import net.minecraft.client.renderer.texture.IconRegister;
                      import net.minecraft.entity.Entity;
                      import net.minecraft.entity.EntityLivingBase;
                      import net.minecraft.entity.player.EntityPlayer;
                      import net.minecraft.item.ItemStack;
                      import net.minecraft.util.MovingObjectPosition;
                      import net.minecraft.world.World;
                      import assets.NolanCore.Data.EntityShoot;
                      import assets.ei.Data.EastonIsland;
                      import assets.ei.Data.EntityBullet;
                      import assets.ei.Data.ItemWeapon;
                      import assets.mgs.common.Main;
                      
                      public class W_GP extends ItemWeapon
                      {
                      
                      private int timer = 0;
                      
                      public W_GP(int par1)
                      {
                      super(par1);
                      this.maxStackSize = 1;
                      this.setCreativeTab(EastonIsland.Ei3);
                      }
                      
                      /*
                      * private int getItemIntoInventory(EntityPlayer player, int itemId)
                      {
                      for(int i = 0; i < player.inventory.mainInventory.lenth; i ++)
                      {
                      if(player.inventory.mainInventory* != null && player.inventory.mainInventory*.itemID == itemId)
                      {
                      return i;
                      }
                      return -1;
                      }
                      }*/
                      
                      public boolean onEntitySwing(EntityLivingBase e, ItemStack s)
                      {
                      if (s.getItemDamage() == 0)
                      if (e instanceof EntityPlayer)
                      {
                      EntityPlayer player = (EntityPlayer) e;
                      boolean flag = false;
                      
                      if (player.capabilities.isCreativeMode)
                      {
                      flag = true;
                      }
                      else
                      {
                      player.inventory.mainInventory[getItemIntoInventory(player, EastonIsland.I9mm.itemID)].damageItem(1, player);
                      
                      }
                      
                      if (flag)
                      {
                      EntityBullet bullet = new EntityBullet(e.worldObj, e, false, "GP", 5, 64);
                      if (!e.worldObj.isRemote)
                      e.worldObj.spawnEntityInWorld(bullet);
                      e.worldObj.playSoundAtEntity(e, "ei:pistol_fire", 0.5f, 1);
                      onUsed(s, e);
                      int slotId = getItemIntoInventory(player, EastonIsland.I9mm.itemID);
                      player.inventory.mainInventory[slotId].damageItem(1, player);
                      if(player.inventory.mainInventory[slotId].getItemDamage() == 0)
                      {
                      player.inventory.mainInventory[slotId] = null;
                      }
                      }
                      else
                      e.worldObj.playSoundAtEntity(e, "ei:ClipEmpty_Pistol",0.5f, 1);
                      
                      }
                      return true;
                      }
                      
                      private int getItemIntoInventory(EntityPlayer player, int itemId)
                      {
                      for(int i = 0; i < player.inventory.mainInventory.length; i ++)
                      {
                      if(player.inventory.mainInventory* != null && player.inventory.mainInventory*.itemID == itemId)
                      {
                      return i;
                      }
                      }
                      System.out.println("l'item non trouvé");
                      return -1;
                      }
                      
                      public boolean onBlockStartBreak(ItemStack s, int x, int y, int z,EntityPlayer player)
                      {
                      return true;
                      }
                      
                      public boolean hitEntity(ItemStack s, EntityLivingBase e, EntityLivingBase source)
                      {
                      if (s.getItemDamage() == 0)
                      if (source instanceof EntityPlayer) {
                      EntityPlayer player = (EntityPlayer) source;
                      boolean flag = false;
                      if (player.capabilities.isCreativeMode)
                      {
                      flag = true;
                      } else
                      {
                      flag = player.inventory
                      .consumeInventoryItem(EastonIsland.I9mm.itemID);
                      }
                      if (flag)
                      {
                      if (!e.worldObj.isRemote)
                      new EntityBullet(source.worldObj, source, false, "GP",5, 64).onImpact(new MovingObjectPosition(e));
                      onUsed(s, source);
                      }
                      else
                      source.worldObj.playSoundAtEntity(source,"ei:ClipEmpty_Pistol", 1, 1);
                      }
                      return false;
                      }
                      
                      private void onUsed(ItemStack s, EntityLivingBase e) {
                      s.setItemDamage(20);
                      }
                      
                      public void onUpdate(ItemStack s, World w, Entity p, int i, boolean flag) {
                      super.onUpdate(s, w, p, i, flag);
                      if (s.getItemDamage() > 0)
                      {
                      s.setItemDamage(s.getItemDamage() - 1);
                      }
                      }
                      
                      @Override
                      public void registerIcons(IconRegister iconRegister)
                      {
                      itemIcon = iconRegister.registerIcon("ei:Pistolet Browning GP");
                      }
                      }
                      
                      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 slotId = getItemIntoInventory(player, EastonIsland.I9mm.itemID);
                        if(slotId >= 0)
                        {
                        player.inventory.mainInventory[slotId].damageItem(1, player);
                        if(player.inventory.mainInventory[slotId].getItemDamage() == 0)
                        {
                        player.inventory.mainInventory[slotId] = null;
                        }
                        }
                        

                        Tu n’avais pas de munition quand tu as eu le crash, si ?

                        1 réponse Dernière réponse Répondre Citer 0
                        • Nolan-XXN Hors-ligne
                          Nolan-XX
                          dernière édition par

                          Non, je n’en n’avais pas

                          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