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

    Résolu Problème de pickup dans inventaire custom

    1.7.x
    1.7.10
    3
    6
    983
    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.
    • Antoine_
      Antoine_ dernière édition par

      Bonjour,

      j’ai un problème de drop sur mon inventaire custom je passe par l’event EntityItemPickupEvent mais ceci ne fonctionne pas tout le temps car par moment le drop passe en priorité sur l’inventaire de base.

      Et le second problème et que je n’arrive pas à trouvé un moyen de vérifié si l’entité que je ramasse est déjà stocké dans un slot pour l’ajouté a celui ci au lieu de remplir a chaque fois un slot vide…

      Voici mon code actuelle

      @SubscribeEvent
       public void Drop(EntityItemPickupEvent event)
       {
         if ((event.entityLiving instanceof EntityPlayer))
         {
           int j = 0;
           for (int i = 11; (i <= 50) && (j == 0); i++)
           {
            EntityPlayer player = (EntityPlayer)event.entity;
            ExtendedEntityPropCaracteristique ext = ExtendedEntityPropCaracteristique.get(player);
      
          if (ext.inventory.getStackInSlot(i) == null)
          {    
               ext.inventory.setInventorySlotContents(i, event.item.getEntityItem());
           event.item.setDead();
                   System.out.println(event.item.getEntityItem().getDisplayName());
                   System.out.println(i);
                   j = 1;
          }
          else
              {
              event.setCanceled(true);
              }
           }
         }
       }
      

      Voila merci d’avance pour votre aide.

      1 réponse Dernière réponse Répondre Citer 0
      • robin4002
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

        Salut,
        Si tu veux que l’inventaire de base soit remplit avant le tient, il faut d’abord vérifier s’il y a de place dans ce dernier.
        Et si oui, il faut rien faire (le code qui remplit l’inventaire de base est appelé après EntityItemPickupEvent).

        Pour stacker avec un item existant, il faut vérifier si l’item en question est déjà présent dans l’inventaire. Rien de compliqué.

        (le mot drop n’est pas du tout adapté à la situation. drop = laisser tomber. Là on parle du ramassage, donc pickup serait plus adapté comme nom de fonction et pour le titre de la discussion).

        1 réponse Dernière réponse Répondre Citer 0
        • Antoine_
          Antoine_ dernière édition par

          Merci mais je voudrais ignoré le pick up dans l’inventaire de base.

          et pour stacker je ne trouve pas la fonction pour vérifier si l’item est déjà présent …

          1 réponse Dernière réponse Répondre Citer 0
          • Deleted
            Deleted dernière édition par

            InventoryPlayer#hasItem, il me semble

            1 réponse Dernière réponse Répondre Citer 0
            • robin4002
              robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

              Ou encore :
              if(ext.inventory.getStackInSlot(i) != null && ext.inventory.getStackInSlot(i).getItem() == event.item.getEntityItem().getItem())

              1 réponse Dernière réponse Répondre Citer 0
              • Antoine_
                Antoine_ dernière édition par

                Merci pour ton aide Robin,

                Je suis vraiment bête je n’avais pas fait attention que  ext.inventory.getStackInSlot(i) avait des sous fonction 😢

                Tout fonctionne merci beaucoup j’ai enfin finit complètement mon inventaire custom !!! et il marche en multijoueur 😄

                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