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

    Nombre d'items dans l'inventaire

    Sans suite
    1.7.10
    4
    25
    6310
    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.
    • PlasMania
      PlasMania dernière édition par

      Bonjour, je suis en train de développer un petit mod pour minecraft, je voudrais qu’il affiche sur l’écran constamment le nombre d’émeraudes dans l’inventaire du joueur un peu comme cela: 

      Ici, c’est un screen où j’ai prédéfinis le nombre d’émeraudes cependant, je voudrais que ça soit automatique, pour ceux que ça intéresse voici le code que j’utilise:

      @EventHandler
      public void init(FMLInitializationEvent event)
      {
      MinecraftForge.EVENT_BUS.register(new EventManager());
      }
      
      public class EventManager
      {
      public int emeraldNumber = 25;
      
      @SubscribeEvent
      public void renderEmeraldsNumber(RenderGameOverlayEvent event)
      {
      if(event.type == ElementType.JUMPBAR || event.type == ElementType.EXPERIENCE)
      {
      Minecraft.getMinecraft().fontRenderer.drawString("Emeralds: " + emeraldNumber, 2, 2, 0xFFFFFF);
      }
      }
      }
      

      Merci d’avance.

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

        Tu peux utiliser une boucle for en accédant à l’inventaire du joueur avec Minecraft.getMinecraft().thePlayer.

        PS : penses à utiliser les balises java pour que l’on puisse voir les lignes plus facilement.

        Site web contenant mes scripts : http://SCAREXgaming.github.io

        Pas de demandes de support par MP ni par skype SVP.
        Je n'accepte sur skype que l…

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

          C’est ce à quoi j’avais penser, une boucle for qui test pour chaque slot si l’item est de l’emeraude, et si oui ajouter à une variable le nombre d’émeraudes, mais comment testez si l’item est de l’émeraude et savoir le nombre d’item dans un slot ?

          [EDIT]:
          J’ai trouver ça:

          ​emeraldNumber = Minecraft.getMinecraft().thePlayer.inventory.getStackInSlot(3);
          

          Si je m’et dans mon 4ème slot 5emeraudes j’ai:
          5xitem.emerald@0, y a t’il moyen de n’obtenir que le 5 ?

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

            Essaie avec çà :

            int size = 0; // On initialise la variable
            InventoryPlayer inv = Minecraft.getMinecraft().thePlayer.inventory; // On récupère l'inventaire du joueur
            for (int i = 0; i < inv.getSizeInventory; i++) { // Boucle for
            if (inv.getStackInslot(i) != null && inv.getStackInSlot(i).getItem() == Items.emerald) size += inv.getStackInSlot(i).stackSize; // Si l'ItemStack à l'index n'est pas nul et que c'est bien une émeraude, alors on l'ajoute
            }
            
            

            Site web contenant mes scripts : http://SCAREXgaming.github.io

            Pas de demandes de support par MP ni par skype SVP.
            Je n'accepte sur skype que l…

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

              Merci, ça marche a peu prés sauf que le nombre n’arrête pas d’augmenter tant que j’ai une émeraude dans l’inventaire 😕

              [EDIT]:
              C’est bon j’ai tous simplement réinitialiser la valeur à 0 à la fin de la fonction 😉

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

                Juste, si quelqu’un sais comment faire pour utiliser

                InventoryPlayer inv = Minecraft.getMinecraft().thePlayer.inventory;
                

                avec l’ender Chest ?

                [EDIT]:
                J’ai trouver:

                ​InventoryEnderChest invEnderChest = Minecraft.getMinecraft().thePlayer.getInventoryEnderChest();
                
                1 réponse Dernière réponse Répondre Citer 0
                • PlasMania
                  PlasMania dernière édition par

                  Je voudrais faire la même chose mais avec l’ender chest cependant quand je met:

                  public int invEmeraldNumber;
                  public int bankEmeraldNumber;
                  
                  @SubscribeEvent
                  public void renderEmeraldsNumber(RenderGameOverlayEvent event)
                  {
                  InventoryPlayer inv = Minecraft.getMinecraft().thePlayer.inventory;
                  InventoryEnderChest bank = Minecraft.getMinecraft().thePlayer.getInventoryEnderChest();
                  
                  for (int i = 0; i < inv.getSizeInventory(); i++) 
                  {
                  if (inv.getStackInSlot(i) != null && inv.getStackInSlot(i).getItem() == Items.emerald)
                  bankEmeraldNumber += (inv.getStackInSlot(i).stackSize);
                  }
                  
                  for (int i = 0; i < bank.getSizeInventory(); i++) 
                  {
                  if (bank.getStackInSlot(i) != null && bank.getStackInSlot(i).getItem() == Items.emerald)
                  bankEmeraldNumber += (bank.getStackInSlot(i).stackSize);
                  }
                  
                  Minecraft.getMinecraft().fontRenderer.drawString("Emeralds: " + invEmeraldNumber + " (" + bankEmeraldNumber + ")", 2, 2, 0xFFFFFF);
                  
                  invEmeraldNumber = 0;
                  bankEmeraldNumber = 0;
                  }
                  }
                  

                  Ca ne marche pas :/, j’ai beau  avoir des emeraudes dans mon enderchest, le nombre entre parenthèse, reste à 0.

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

                    Je comprends pas trop ce que tu veux faire, tu veux faire la même chose mais avec l’enderchest ?

                    Site web contenant mes scripts : http://SCAREXgaming.github.io

                    Pas de demandes de support par MP ni par skype SVP.
                    Je n'accepte sur skype que l…

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

                      Oui exactement, j’ai mis mon code au dessus.

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

                        La fonction getInventoryEnderChest est publique, je vois pas où est le problème, mis à part qu’il faudrait utiliser un autre nom de variable dans la 2ème boucle.

                        Site web contenant mes scripts : http://SCAREXgaming.github.io

                        Pas de demandes de support par MP ni par skype SVP.
                        Je n'accepte sur skype que l…

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

                          Normalement non, la variable de la boucle est seulement utilisé dans la boucle, donc ça devrais aller.

                          J’ai aussi testez la fonction:

                          ​inv.setInventorySlotContents();
                          ​bank.setInventorySlotContents();
                          

                          et dans l’inventaire, elle marche mais pas dans l’ender chest

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

                            Il me semble qu’il faut mettre à jour l’inventaire après avoir modifié des slots, car le joueur est seulement côté client.

                            Site web contenant mes scripts : http://SCAREXgaming.github.io

                            Pas de demandes de support par MP ni par skype SVP.
                            Je n'accepte sur skype que l…

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

                              Sauf que je ne veut pas modifier les slots moi, je veut juste savoir les items dans les slots dans l’ender chest

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

                                alors pourquoi tu veux utiliser setInventorySlotContents ?

                                Site web contenant mes scripts : http://SCAREXgaming.github.io

                                Pas de demandes de support par MP ni par skype SVP.
                                Je n'accepte sur skype que l…

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

                                  Non, c’était juste pour testez

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

                                    @‘PlasMania’:

                                    Je voudrais faire la même chose mais avec l’ender chest cependant quand je met:

                                    public int invEmeraldNumber;
                                    public int bankEmeraldNumber;
                                    
                                    @SubscribeEvent
                                    public void renderEmeraldsNumber(RenderGameOverlayEvent event)
                                    {
                                    InventoryPlayer inv = Minecraft.getMinecraft().thePlayer.inventory;
                                    InventoryEnderChest bank = Minecraft.getMinecraft().thePlayer.getInventoryEnderChest();
                                    
                                    for (int i = 0; i < inv.getSizeInventory(); i++)
                                    {
                                    if (inv.getStackInSlot(i) != null && inv.getStackInSlot(i).getItem() == Items.emerald)
                                    bankEmeraldNumber += (inv.getStackInSlot(i).stackSize);
                                    }
                                    
                                    for (int i = 0; i < bank.getSizeInventory(); i++)
                                    {
                                    if (bank.getStackInSlot(i) != null && bank.getStackInSlot(i).getItem() == Items.emerald)
                                    bankEmeraldNumber += (bank.getStackInSlot(i).stackSize);
                                    }
                                    
                                    Minecraft.getMinecraft().fontRenderer.drawString("Emeralds: " + invEmeraldNumber + " (" + bankEmeraldNumber + ")", 2, 2, 0xFFFFFF);
                                    
                                    invEmeraldNumber = 0;
                                    bankEmeraldNumber = 0;
                                    }
                                    }
                                    

                                    Ca ne marche pas :/, j’ai beau  avoir des emeraudes dans mon enderchest, le nombre entre parenthèse, reste à 0.

                                    Utilise des variables local au lieu de reset sur 0 …

                                    @SubscribeEvent
                                    public void renderEmeraldsNumber(RenderGameOverlayEvent event)
                                    {
                                    int invEmeraldNumber = 0;
                                    int bankEmeraldNumber = 0;
                                    InventoryPlayer inv = Minecraft.getMinecraft().thePlayer.inventory;
                                    InventoryEnderChest bank = Minecraft.getMinecraft().thePlayer.getInventoryEnderChest();
                                    
                                    for (int i = 0; i < inv.getSizeInventory(); i++)
                                    {
                                    if (inv.getStackInSlot(i) != null && inv.getStackInSlot(i).getItem() == Items.emerald)
                                    bankEmeraldNumber += (inv.getStackInSlot(i).stackSize);
                                    }
                                    
                                    for (int i = 0; i < bank.getSizeInventory(); i++)
                                    {
                                    if (bank.getStackInSlot(i) != null && bank.getStackInSlot(i).getItem() == Items.emerald)
                                    bankEmeraldNumber += (bank.getStackInSlot(i).stackSize);
                                    }
                                    
                                    Minecraft.getMinecraft().fontRenderer.drawString("Emeralds: " + invEmeraldNumber + " (" + bankEmeraldNumber + ")", 2, 2, 0xFFFFFF);
                                    }
                                    }
                                    

                                    à mon avis pour l’enderchest, ça ne fonctionne pas car temps que tu ne l’ouvre pas il est considéré comme vide côté client. Ouvre-le et regardes si la valeur change.

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

                                      Okai, merci pour la correction, et l’ouvrir ne change rien 😕

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

                                        Envoi le code de ton block + GuiHandler.

                                        Site web contenant mes scripts : http://SCAREXgaming.github.io

                                        Pas de demandes de support par MP ni par skype SVP.
                                        Je n'accepte sur skype que l…

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

                                          Il y a au moins des émeraudes dans le coffre x) ?

                                          @‘SCAREX’:

                                          Envoi le code de ton block + GuiHandler.

                                          fail ?

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

                                            http://puu.sh/iG5hZ/18fdcb12fc.jpg

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

                                            MINECRAFT FORGE FRANCE © 2018

                                            Powered by NodeBB