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