MFF

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

    Ne pas avoir 2backpack dans l'inv

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    35 Messages 7 Publieurs 4.7k 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

      Pour savoir s’il y a plus de deux fois l’item dans l’inventaire il faut parcourir tout l’inventaire avec une boucle for et compter.

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

        https://pastebin.com/Bk5xmb19 euh je pense avoir fait n’importe quoi… des que j’ai un backpack ca m’affiche le message

        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

          Tu es assez bien partie.
          Au dessus de la for ajoutes :
          int count = 0;
          dans la condition if(player.inventory.getStackInSlot(i).getItem() instanceof ItemBackPack à la place de :
          if(i >= 2)
          {
          player.addChatComponentMessage(new ChatComponentText(“Interdit”).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.DARK_RED)));
          }
          mets :
          count ++;

          enfin, à la fin de la boucle for mets le if d’avant en remplaçant i >= 2 par count >= 2

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

            merci beaucoup, est-il possible de faire la même chose pour l’ender-chest et la mon backpack?


            de plus je veux faire drop mon item, j’utilise cette ligne player.dropItem(ItemMod.backpack, count); sauf que ca me drop des items a l’infinie x)

            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

              player.dropItem(ItemMod.backpack, count - 1); pour en regarder un dans l’inventaire non ?
              Pour éviter qu’il le ramasse à nouveau, il faut passer par l’event PickupItemEvent et le cancel si le joueur a déjà un sac dans l’event.

              Pour le back pack dans l’enderchest ça me semble plus compliqué …

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

                bonjour, pour le drop ca me drop toujours un backpack a l’infini même en survival x)

                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

                  Quand tu dis à l’infini, c’est que tu le drop puis le ramasse à nouveau, etc . ou qu’il se drop sans se retirer de l’inventaire ?

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

                    il se drop sans se retirer de l’inv et du coup ca drop des milliers de backpack

                    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

                      Et tu arrives à ramasser les backpack ?

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

                        oui, dans tout les cas ça drop a l’infinie donc ça en crée à l’infinie


                        et l’event de pickup n’est pas reconnu

                        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

                          Faudrait voir s’il y a autre chose pour le dropper, car la clairement la fonction ne fonctionne pas comme prévu.

                          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

                            En c’est normal, dropItem fait apparaitre un nouvel item.
                            Il faudrait faire comme ça :

                            @SubscribeEvent
                            public void tickEvent(PlayerTickEvent event)
                            {
                            EntityPlayer player = event.player; // Tu récupères le player par l'event
                            int count = 0;
                            for(int i = 0; i < player.inventory.getSizeInventory(); i++) // Boucle ou l'on crée une variable i qui représente les slots de l'inventaire du joueur
                            {
                            if(player.inventory.getStackInSlot(i) != null) // Si le slot n'est pas null alors on passe au prochain
                            {
                            if(player.inventory.getStackInSlot(i).getItem() instanceof ItemBackPack) // Si l'item dans le slot est l'instance de ton item alors tu exécutes quelque chose
                            {
                            count++;
                            if(count >= 2)
                            {
                            player.inventory.setStackInSlot(i, null);
                            player.drop(ItemMod.backpack, 1);
                            player.addChatComponentMessage(new ChatComponentText("Interdit").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.DARK_RED)));
                            }
                            }
                            }
                            }
                            }
                            
                            1 réponse Dernière réponse Répondre Citer 0
                            • Z Hors-ligne
                              Zoulette
                              dernière édition par

                              merci beaucoup robin, mais j’ai un probleme, http://prntscr.com/g4qizt

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

                                Essaye avec

                                player.inventory.setInventorySlotContents(i, null);
                                
                                1 réponse Dernière réponse Répondre Citer 0
                                • Z Hors-ligne
                                  Zoulette
                                  dernière édition par

                                  merci, ca marche comme ca a part que ca fait un bug graphique ou ca fait des fake bag au sol x) mais des que je deco reco le truc reviens a la normal


                                  et du coup est-il possible de le faire pour mon backpack (interdire des items dedans de la même maniere) et dans l’enderchest?

                                  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

                                    Remplaces if(count >= 2)
                                    par
                                    if(count >= 2 && !player.worldObj.isRemote)
                                    pour éviter l’item buggué au sol.

                                    Pour l’ender chest je ne sais pas comment faire 😕

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

                                      si je refais un enderchest c’est possible?


                                      de plus ton event pour ne pas recup ne marche pas

                                      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

                                        Je pense avoir une idée.
                                        Toujours dans le tick event, lorsque le joueur a un enderchest ouvert (ou n’importe quel autre container) la variable player.openContainer vaut le container ouvert.
                                        Donc tu vérifies que player.openContainer instanceof ContainerChest (ou ContainerEnderChest, je ne sais plus si l’enderchest à son propre container, mais il me semble que non) et depuis ça tu pourra get le TileEntityChest. à ce moment tu pourra vérifier contenu et le modifier si besoin, de la même façon que pour l’inventaire du joueur.

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

                                          ok je vais essayer, merci 😄


                                          bon bah a chaque fois je dois rajouter des cast x)

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • BrokenSwingB Hors-ligne
                                            BrokenSwing Moddeurs confirmés Rédacteurs
                                            dernière édition par

                                            Le TileEntity de l’enderchest n’est utilsé que pour le rendu du coffre. Tu peux accéder à l’inventaire de l’enderchest d’un joueur grâce à l’instance d’un joueur.
                                            Je ne sais pas si il y a un getter en 1.7.10 (sûrement pas) mais en 1.11.2 la fonction est :

                                            player.getInventoryEnderChest();
                                            

                                            Après tu as toutes les fonctions de IInventory à ta disposition et même peut-être plus. Tu as juste à utiliser la même technique que pour l’inventaire de base du joueur mais en testant pour l’inventaire de l’enderchest

                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 1 / 2
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB