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

      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;
      }
      

      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

        @‘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;
        }
        

        Il me donne une erreur à

        return i;
        
        1 réponse Dernière réponse Répondre Citer 0
        • 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