MFF

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

    Inventaire et réduction de slot

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.7.10
    23 Messages 3 Publieurs 6.4k 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.
    • DeletedD Hors-ligne
      Deleted
      dernière édition par

      Sauf que robin ne répond pas à la même question que moi. Moi je te parle d’ajoute les items que tu as par-terre dans tes nouveaux slots. Et l’event est une solution très facile, à moins que tu ne préfères te servir de l’ASM….

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

        Il ne répond pas a la même question, certes

        Mais comme dit dans mon premier poste : Il me faut pas les trois, mais une des trois.

        Une des 3 me suffit 😃

        Celle de Robin m’arrange bien, car, il n’y aura aucun drope, sauf ceux lâcher si le joueur enlève sont sac a dos où sont stocker ses items ^^

        @‘robin4002’:

        Avec PlayerOpenContainerEvent tu peux détecter quand le container est ouvert.
        Puis tu peux récupérer l’instance de ce dernier avec player.openContainer
        La liste des slots est stocké dans inventorySlots qui est une liste public, donc tu peux la clear et remettre les slots que tu veux dedans.
        Ce qui te permet donc de faire ce que tu voulais sans patcher de classe.

        Mais si le Container est fermé ? Où n’a jamais été ouvert, la liste ne sera pas remplacer ? Non ?

        Au final je ne veux utilisé que les 9 slots de la barre en main et complétement supprimer les 27 slots l’inventaire.

        >! Bonjour/Bonsoir,
        >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

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

          @‘robin4002’:

          Avec PlayerOpenContainerEvent tu peux détecter quand le container est ouvert.
          Puis tu peux récupérer l’instance de ce dernier avec player.openContainer
          La liste des slots est stocké dans inventorySlots qui est une liste public, donc tu peux la clear et remettre les slots que tu veux dedans.
          Ce qui te permet donc de faire ce que tu voulais sans patcher de classe.

          Mais si le Container est fermé ? Où n’a jamais été ouvert, la liste ne sera pas remplacer ? Non ?

          Au final je ne veux utilisé que les 9 slots de la barre en main et complétement supprimer l’inventaire.

          >! Bonjour/Bonsoir,
          >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

          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 oui en effet. Dans ce cas il faudrait le modifier une première fois à la connexion. Normalement c’est possible.

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

              Et Ouai 😕

              Du coup je présume que c’est un peu pareil, sauf dans l’event PlayerLoggedInEvent ?

              
                 @SubscribeEvent
                 public void onJoin(PlayerLoggedInEvent event)
                 {
                     if(event.player instanceof EntityPlayer)
                     {
                         event.player.inventoryContainer.inventorySlots.clear();
                     }
              
              }
              
              

              Mais je ne suis pas sur du . clear(), et aucune idée de comment y mettre la new list 😕

              >! Bonjour/Bonsoir,
              >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

              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

                Là tu les as seulement clear, il faudrait aussi remettre quelque chose dedans ^^

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

                  Oui, je sais, comme dit ci haut, je ne sais pas vraiment comment recréer une new liste, avec quel fonction, y’en a pas mal et je ne les comprend pas toute ^^"

                  Sinon, je présume que c’est un truc du genre ?

                  
                     private ItemStack[] inventory = new ItemStack[9];
                  ////////////////////////////////////////////////////
                             event.player.inventoryContainer.inventorySlots.clear();
                             event.player.inventoryContainer.inventorySlots.toArray(inventory);
                  
                  

                  A mon avis, ça dois être qqch comme ça car quand j’ouvre l’inventaire du player en créative ça crash du au java.lang.IndexOutOfBoundsException 😉

                  >! Bonjour/Bonsoir,
                  >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

                  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

                    inventorySlots contient une liste de slot.
                    Donc c’est des slot qu’il faut mettre dedans.

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

                      private Slot[] inventory = new Slot[9]
                      

                      Si c’est le cas, le

                      System.out.println( event.player.inventoryContainer.inventorySlots.size());
                      

                      reste sur 45 ^^’

                      >! Bonjour/Bonsoir,
                      >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

                      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

                        Car il est set sur 45 à chaque ouverture du container. C’est pour ça que je t’ai dit d’utiliser aussi l’event pour l’ouverture du container.

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

                          Mais même sans ouvrir le Container ni rien, elle est égale a 45.

                          
                          public Slot[] inventory = new Slot[9];
                          
                          
                          
                           @SubscribeEvent
                             public void onJoin(PlayerLoggedInEvent event)
                             {
                                 EntityPlayerMP playerMP = (EntityPlayerMP)event.player;
                                 boolean flag = playerMP.theItemInWorldManager.isCreative();
                          
                                 if(event.player instanceof EntityPlayer)
                                 {
                          
                                     if(flag == false)
                                     {
                                         event.player.inventoryContainer.inventorySlots.clear();
                                         event.player.inventoryContainer.inventorySlots.toArray(inventory);
                          
                                     }
                          
                                 }
                          
                             }
                          
                          
                          
                           @SubscribeEvent
                             public void playerOpenContainerEvent(PlayerOpenContainerEvent event)
                             {
                                 EntityPlayer player = (EntityPlayer)event.entity;
                                 int test = player.openContainer.windowId;
                                 EntityPlayerMP playerMP = (EntityPlayerMP)event.entityPlayer;
                                 boolean flag = playerMP.theItemInWorldManager.isCreative();
                          
                                 if(event.entityPlayer instanceof EntityPlayer)
                                 {
                          
                                     if(flag == false)
                                     {
                                         event.entityPlayer.inventoryContainer.inventorySlots.clear();
                                         event.entityPlayer.inventoryContainer.inventorySlots.toArray(inventory);
                          
                                     }
                          
                                 }
                          
                             }
                          
                          
                          
                          [15:43:32] [Server thread/INFO] [STDOUT]: [kujaroth.common.EventHandlerTuto:PlayerTickEvent:101]: taille : 0
                          [15:43:32] [Client thread/INFO] [STDOUT]: [kujaroth.common.EventHandlerTuto:PlayerTickEvent:101]: taille : 45
                          
                          

                          J’ai surement foiré quelque part 😕

                          >! Bonjour/Bonsoir,
                          >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

                          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

                            C’est peut-être remit sur 45 ailleurs alors. Mais je ne sais pas où 😕
                            Par contre ton “public Slot[] inventory = new Slot[9];” c’est une très bonne idée pour causé des npe x)

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

                              Bon, dans PlayerTickEvent  la liste est bien clear, mais impossible de lui affecter l’autre 😕

                              Je crois que le plus simple serait :

                              
                                  @Override
                                  private int storeItemStack(ItemStack itemstack)
                                  {
                                      for (int i = 0; i < neufPourLaBarreEnMain; ++i)
                                      {
                                          if (this.inventory* != null && this.inventory*.getItem() == itemstack.getItem() && this.inventory*.isStackable() && this.inventory*.stackSize < this.inventory*.getMaxStackSize() && this.inventory*.stackSize < this.getInventoryStackLimit() && (!this.inventory*.getHasSubtypes() || this.inventory*.getItemDamage() == itemstack.getItemDamage()) && ItemStack.areItemStackTagsEqual(this.inventory*, itemstack))
                                          {
                                              return i;
                                          }
                                      }
                              
                                      return -1;
                                  }
                              
                              

                              Non ? Bon, bien évidement, il ne veux pas   @Override 😕 Patch ? 😕

                              EDIT : Hum… Sinon… Il ne serais pas plus simple de remplir ses slots avec un objet pour les rendre inaccessible ? Remplir le surplus d’inventaire avec un item quelconque 😉

                              Par contre, aucune idée de comment ajouter un item dans un slot spécifique… (ni enlever un item d’un slot spécifique)

                              Est il possible aussi d’actualisé l’image d’un GUI sans le fermé ouvrir ? Ou Mettre deux texture sur un GUI ?

                              >! Bonjour/Bonsoir,
                              >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

                              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

                                @‘Kujaroth’:

                                Est il possible aussi d’actualisé l’image d’un GUI sans le fermé ouvrir ? Ou Mettre deux texture sur un GUI ?

                                GuiScreenEvent, il y a un event pour le rendu. Suffit de le cancel et de faire ton propre rendu.

                                Par contre je n’ai pas comprit l’intérêt de ta fonction storeItemStack.

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

                                  Merci 😉

                                  storeItemStack pour n’utilisé que la barre en main pour stocker.

                                  Mais ducoup je vais “tricher” en remplissant le surplus d’inventaire avec des items, mais je ne sais pas comment ajouter automatiquement un item dans un slot 😕

                                  >! Bonjour/Bonsoir,
                                  >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

                                  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

                                    Comment ça automatiquement ?

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

                                      @‘robin4002’:

                                      Comment ça automatiquement ?

                                      Dans un event. Avec un code qui ajoute un item dans un spot spécifier.

                                      En faite, j ai juste besoin du code, et j utiliserait 2 boucles for pour les remplir 😉

                                      >! Bonjour/Bonsoir,
                                      >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

                                      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.inventory.setInventorySlotContents(index, stack)

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

                                          Bien ce qu il me semblait, je dois convertir un item en itemstack.

                                          >! Bonjour/Bonsoir,
                                          >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

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

                                          MINECRAFT FORGE FRANCE © 2024

                                          Powered by NodeBB