MFF

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

    Nombre d'items dans l'inventaire

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.7.10
    25 Messages 4 Publieurs 6.8k 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.
    • PlasManiaP Hors-ligne
      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
      • SCAREXS Hors-ligne
        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
        • PlasManiaP Hors-ligne
          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
          • SCAREXS Hors-ligne
            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
            • PlasManiaP Hors-ligne
              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
              • PlasManiaP Hors-ligne
                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
                • PlasManiaP Hors-ligne
                  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
                  • SCAREXS Hors-ligne
                    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
                    • PlasManiaP Hors-ligne
                      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
                      • SCAREXS Hors-ligne
                        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
                        • PlasManiaP Hors-ligne
                          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
                          • SCAREXS Hors-ligne
                            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
                            • PlasManiaP Hors-ligne
                              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
                              • SCAREXS Hors-ligne
                                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
                                • PlasManiaP Hors-ligne
                                  PlasMania
                                  dernière édition par

                                  Non, c’était juste pour testez

                                  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

                                    @‘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
                                    • PlasManiaP Hors-ligne
                                      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
                                      • SCAREXS Hors-ligne
                                        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
                                        • robin4002R Hors-ligne
                                          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
                                          • PlasManiaP Hors-ligne
                                            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
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB