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

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

    1.9.x et 1.10.x
    1.10.x
    4
    8
    3052
    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.
    • Gabs
      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
      • jglrxavpok
        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
        • Gabs
          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
          • Sorax
            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
            • robin4002
              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
              • Gabs
                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
                • robin4002
                  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
                  • Gabs
                    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
                    Contact / Mentions Légales

                    MINECRAFT FORGE FRANCE © 2018

                    Powered by NodeBB