MFF

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

    Supprimer un certain nombre d'item dans l'inventaire du joueur

    Planifier Épinglé Verrouillé Déplacé Résolu 1.9.x et 1.10.x
    1.10.x
    8 Messages 4 Publieurs 3.5k 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.
    • GabsG Hors-ligne
      Gabs
      dernière édition par

      Bonsoir,
      Comme vous l’avez lu, j’aimerais pouvoir supprimé par exemple 9 items de l’inventaire du joueur.

      J’ai la base de mon code mais je bloque, je ne vois pas comment faire du tout, si vous pouvez me donner un petit coup de pousse ça serrait super sympa 😉

      Code:

      
      if(player.inventory.hasItemStack(new ItemStack(CSCItems.item_lingottraite)))
                  {
                  for(int i = 0; i < player.inventory.getSizeInventory(); i++)
                  {
                  if(player.inventory.getStackInSlot(i) != null && player.inventory.getStackInSlot(i).getItem() == CSCItems.item_lingottraite)
                  {
                  System.out.println(i);
                  player.inventory.removeStackFromSlot(i);//La ça supprime tout les items :/
                  }
                  }
                  }
      
      

      Après ça je vois pas du tout j’ai tout essayer je galère depuis 2 heures sur un truc tout con j’en suis sur.

      1 réponse Dernière réponse Répondre Citer 0
      • jglrxavpokJ Hors-ligne
        jglrxavpok Modérateurs
        dernière édition par

        Les objets ItemStack ont une méthode pour changer la taille du stack (setStackSize surement), utilise ça plutôt.

        Et c’est normal que tous les items soient supprimés si tu dis au jeu de retirer le stack entier.

        Modérateur sur MFF. 
        Mon Github: http://github.com/jglrxavpok
        Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

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

          Bah il y stacksize mais je vois pas comment l"utiliser en fait ^^
          je sais que on peut faire: player.inventory.getStackInSlot(i).stacksize– ou ++ mais c’est pareil ça change tout les items ce qui est normal.

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

            A mon avis, le problème viens du ==, utilise la méthode .equals(Object o) qui est plus approprié lorsqu’on travaille avec des objets.

            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 mettre un break à la fin de la condition si tu veux que ça retire les items sur seulement un stack et pas sur tous ceux de l’inventaire.

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

                @‘robin4002’:

                Il faut mettre un break à la fin de la condition si tu veux que ça retire les items sur seulement un stack et pas sur tous ceux de l’inventaire.

                En fait, les items que j’utilise ne se stack pas, mais tu penses que le break je peux le mettre après 8 slots parcourus ?

                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

                  Ah, dans ce cas faut faire comme ça :

                  
                  if(player.inventory.hasItemStack(new ItemStack(CSCItems.item_lingottraite)))
                  
                  {
                      int count = 0;
                      for(int i = 0; i < player.inventory.getSizeInventory(); i++)
                      {
                             if(player.inventory.getStackInSlot(i) != null && player.inventory.getStackInSlot(i).getItem() == CSCItems.item_lingottraite)
                             {
                                  player.inventory.removeStackFromSlot(i);
                                  count++;
                                  if(count > 8)
                                  {
                                       break;
                                  }
                  
                             }
                       }
                  }
                  

                  Ce genre d’information, ça serait bien de le préciser directement dans le premier message au lieu d’attendre 3 réponses …

                  1 réponse Dernière réponse Répondre Citer 1
                  • GabsG Hors-ligne
                    Gabs
                    dernière édition par

                    Oui désolé… merci!

                    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