MFF

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

    Update d'une texture sur un GUI

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.2
    20 Messages 4 Publieurs 4.0k 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.
    • Valou3433V Hors-ligne
      Valou3433
      dernière édition par

      Ok mais je met quoi dans la méthode ? Le même code que dans mon drawGuiContainerBackgroundLayer() ?

      ​@Override
      
      public void drawGuiContainerBackgroundLayer(float f, int i, int j) 
      {
      GL11.glColor4f(1F, 1F, 1F, 1F);
      this.mc.getTextureManager().bindTexture(texture);
      int x = (this.width - this.xSize) / 2;
      int y = (this.height - this.ySize) / 2;
      this.drawTexturedModalRect(x, y, 0, 0, this.xSize, this.ySize);
      this.drawTexturedModalRect(x, y, 61, 79, 16, (int) c.MilkLevel/142);
      //TEST d'affichage barre this.drawTexturedModalRect(61, 6, 176, 0, 16, 7);
      }
      

      EDIT : Je viens de tester comme ça et ça ne marche tjrs pas…
      EDIT 2 : J’ai regardé en plus la class GuiFurnace et updateScreen() n’est pas présente…

      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

        drawGuiContainerBackgroundLayer est appelé à chaque tick, donc ce n’est pas ici le problème.
        Il faut regarder dans le container.
        https://github.com/FFMT/Privatizer/blob/master/privatizer_src/fr/mcnanotech/privatizer/common/ContainerPrivateFurnace.java#L44-L98

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

          D’accord merci, j’ai ajouté dans mon container ces trois méthodes là :

          ​@Override
          
          public void addCraftingToCrafters(ICrafting crafting)
          {
          super.addCraftingToCrafters(crafting);
          crafting.sendProgressBarUpdate(this, 0, this.c.MilkLevel);
          }
          public void detectAndSendChanges()
          {
          super.detectAndSendChanges();
          
          for(int i = 0; i < this.crafters.size(); ++i)
          {
          ICrafting icrafting = (ICrafting)this.crafters.get(i);
          
          if(this.lastMilkLevel != this.c.MilkLevel)
          {
          icrafting.sendProgressBarUpdate(this, 0, this.c.MilkLevel);
          }
          }
          
          this.lastMilkLevel = this.c.MilkLevel;
          }
          
          @SideOnly(Side.CLIENT)
          public void updateProgressBar(int id, int value)
          {
          this.c.MilkLevel = value;
          }
          

          Maintenant le texte indiquant la valeur du lait fonctionne, la barre toujours pas (mais je pense que c’est juste une erreur de coordonées dans l’image, puisqu’on en voit un bout sur le côté) mais maintenant on ne peut plus mettre de sceau de lait/ sceau vide dans le container, il ne se passe rien ! Pour voir que le texte marchait, j’ai du regarder sur un que j’avais posé avant et qui avait gardé en NBTTag sa valeur de lait…
          Image :
          :::

          :::

          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 faudrait le code complet (gui + container + tile entity + bloc).
            En passant, respecte la convention Java (pas de majuscule début d’un nom de variable) car c’est plus simple pour les repérer.

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

              Le message est je trouve trop gros ; j’essaierai de poster les classes sur un site externe la prochaine fois mais j’hésite : GitHub mais je n’ai pas de compte et à la base c’est plutôt pour du développement communautaire je trouvais inutile de me créer un compte juste pour ça ou le mettre sur mon site fichiers par exemple mais la coloration du language n’y est pas (http://files.olympe.in/java/GuiMilkContainer.java).

              EDIT : J’ai tout mis sur GitHub, voir le message suivant.
              EDIT 2 : Je n’avais pas remarqué il reste des commentaires dans le code j’ai oublié de les supprimer avant de les poster n’y faites pas attention

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

                GitHub sert à tout le monde. Si ça ne te sert pas pour le dev collaboratif ça te servira au moins comme cloud dédié au code.

                Envoyé de mon iPhone en utilisant Tapatalk


                Über Networking Antennas

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

                  Voila j’ai tout mis sur GitHub. Liens :

                  • ContainerMilkContainer.java
                  • GuiMilkContainer.java
                  • TileEntityMilkContainer.java
                  • MilkContainer.java
                    J’ai également supprimé les codes présents sur l’autre message. Alors , une idée ? J’avoue que là je ne comprends pas en quoi l’ajout de ce code pourrait faire buguer le reste…
                  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

                    Le problème m’a l’air de venir de la fonction transferStackInSlot, regarde dans le coffre ou dans le four.
                    Pour l’affichage, c’est surement la texture comme tu l’as dit.

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

                      J’ai essayé avec ça :

                      ​ @Override
                      
                      public ItemStack transferStackInSlot(EntityPlayer p, int slotN)
                      {
                      ItemStack itemstack = null;
                              Slot slot = (Slot)this.inventorySlots.get(slotN);
                      
                              if (slot != null && slot.getHasStack())
                              {
                                  ItemStack itemstack1 = slot.getStack();
                                  itemstack = itemstack1.copy();
                                  if (itemstack1.stackSize == 0)
                                  {
                                      slot.putStack((ItemStack)null);
                                  }
                                  else
                                  {
                                  this.mergeItemStack(itemstack1, c.getSizeInventory(), this.inventorySlots.size(), true);
                                      slot.onSlotChanged();
                                  }
                              }
                      
                              return itemstack;
                      }
                      

                      Ça marche toujours pas… Et je ne comprend pas pourquoi l’ajout des trois méthodes précédentes aurait pu causer un problème à ce niveau…

                      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 ne vois pas d’où vient le problème dans ce cas 😕

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

                          Ok, pas grave j’essaierai de résoudre ça tout seul, ou si quelqu’un d’autre a une idée qu’il n’hésite pas. :s  Merci quand même  😄

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

                            C’est bon j’ai réussi ! En fait il fallait juste ajouter la méthode :

                            ​c.deleteBucketAndModifyLevel();
                            

                            au milieu de detectAndSendChanges :

                            ​@Override
                            
                            public void detectAndSendChanges()
                            {
                            super.detectAndSendChanges();
                            c.deleteBucketAndModifyLevel();
                            for(int i = 0; i < this.crafters.size(); ++i)
                            {
                            ICrafting icrafting = (ICrafting)this.crafters.get(i);
                            
                            if(this.lastMilkLevel != this.c.milkLevel)
                            {
                            icrafting.sendProgressBarUpdate(this, 0, this.c.milkLevel);
                            }
                            }
                            
                            this.lastMilkLevel = this.c.milkLevel;
                            }
                            

                            Si sa intéresse quelqu’un, les classes sont sur GitHub, à la même adresse. 
                            EDIT : J’ai également résolu le pb de texture, c’est en fait que je ne sais pas faire une addition/soustraction.

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

                            MINECRAFT FORGE FRANCE © 2024

                            Powered by NodeBB