RenderGameOverlayEvent



  • Bonsoir,

    Je sais pas comment vous l'expliquez donc si vous comprenez pas dite le moi!

    J'ai fais un système pour récupéré combien de pomme a le joueur dans son inventaire puis l'afficher à l'écran.

    Le problème et que je vois pas comment faire pour additionner les différente stacksize de pomme par slot.

    Je m'explique par exemple j'ai 64 pommes dans le premier slot et 15 dans le troisième bha moi il me dessiné une fois 64 et une fois 15 x), alors que moi je voudrais 64+15 donc 79 à l'écran.

    Pour se qui est du doublon j'ai juste a placer un break; dans mon for, par contre je vois pas du tout pour additionner les stacksizes.

    Je vous passe mon code:

    
    @SideOnly(Side.CLIENT)
    @SubscribeEvent
    public void onRenderGameOverlay(RenderGameOverlayEvent.Pre event)
    {
    String str;
            Minecraft mc = Minecraft.getMinecraft();
    int i2 = event.resolution.getScaledWidth();
    int j = event.resolution.getScaledHeight();
    
    EntityPlayer player = mc.thePlayer;
    
    if(event.type == RenderGameOverlayEvent.ElementType.TEXT)
            {
    if(player.inventory.hasItemStack(new ItemStack(Items.apple)))
    {
    int number = 0;
    for(int i = 0; i < player.inventory.getSizeInventory(); i++)
       {
              if(player.inventory.getStackInSlot(i) != null && player.inventory.getStackInSlot(i).getItem() == Items.apple)
              {
            number++; 
            System.out.println("Amout: " + player.inventory.getStackInSlot(i).stackSize);
            str = ChatFormatting.WHITE + String.valueOf(player.inventory.getStackInSlot(i).stackSize);
                mc.fontRenderer.drawString(str, i2 - 20 - Minecraft.getMinecraft().fontRenderer.getStringWidth(str), j - 20, 0);
              }
       }
    }
    }
    
    }
    
    

    Log:

    
    [22:43:20] [Client thread/INFO] [STDOUT]: [com.nouvellefrance.fr.Events.Events:onRenderGameOverlay:38]: Amout: 3
    
    [22:43:20] [Client thread/INFO] [STDOUT]: [com.nouvellefrance.fr.Events.Events:onRenderGameOverlay:38]: Amout: 5
    

    Merci d'avance!



  • (je sais pas si c'est possible)

    récupérer les valeurs de chaque stacksize les inserer dans un tableau et additionner chaque case du tableau.



  • Salut, 
    La solution se trouve dans ta question : 
    " je vois pas du tout pour additionner les stacksizes "
    Mise à part le fait que l'addition est un truc de base de la programmation, pour additionner les stacksizes, il suffit de créer un variable entière, parcourir l'inventaire et si l'item est celui de la pomme, ajouter le stacksize de l'item à ta variable. À la fin, tu as la quantité totale d'items que tu as plus qu'à afficher.
    PS : pas besoin de passer par un tableau pour ça.



  • c'est vrai que c'est encore plus simple ^^


  • Correcteurs

    Du code qui avait été donné sur ce forum et donc que revoici:

            InventoryPlayer inv = player.inventory;
    
    for(int i = 0; i < inv.getSizeInventory(); i++)
                {
                    if(inv.getStackInSlot(i) != null && inv.getStackInSlot(i).getItem() == tonItemToussahToussah)
                        size += inv.getStackInSlot(i).stackSize;
                }
    

    size étant ton nombre d'un même item dans l'inventaire



  • C'est tellement con, merci les amis , j'ai pas réfléchi !