MFF

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

    Code pour bouton possédant une texture

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.x
    11 Messages 3 Publieurs 3.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.
    • isadorI Hors-ligne
      isador Moddeurs confirmés Modérateurs
      dernière édition par

      quelle sont les dimensions de ton image?

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

        @‘isador34’:

        quelle sont les dimensions de ton image?

        20 x 20

        1 réponse Dernière réponse Répondre Citer 0
        • isadorI Hors-ligne
          isador Moddeurs confirmés Modérateurs
          dernière édition par

          Il faut des dimensions en puissance de deux: 1 2 4 8 16 32 64 etc….

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

            @‘isador34’:

            Il faut des dimensions en puissance de deux: 1 2 4 8 16 32 64 etc….

            Nan pas pour les boutons, et je suis sûr de ce que je dit car je me suis basé sur le bouton de language qui lui aussi a des dimensions de 20 x 20.

            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 fichier doit faire la taille d’un multiple de deux. Après dans ton fichier tu aura que 20x20 en couleur, le reste doit être en transparence.

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

                Sa ne marche toujours pas j’ai crée un .png de 32x32 et j’ai mis mon image de 20x20 en haut à gauche dans l’angle. De plus j’ai bien mis 20x20 et j’ai bien refresh le projet mais rien à faire c’est toujours buggé. Si vous souhaitez les classes ou le fichier.png dites le moi

                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

                  Envoie directement ton dossier src en mp, je fais regarde ça. Mais à mon avis faudrait plutôt une texture 256x256, c’est ce que Minecraft utilise il me semble.


                  Du-coup j’ai reprit le code de base mc :

                  ​package mrplaigon.zombarcraft.customgui.client;
                  
                  import mrplaigon.zombarcraft.customgui.common.CustomGuiMod;
                  import net.minecraft.client.Minecraft;
                  import net.minecraft.client.gui.FontRenderer;
                  import net.minecraft.client.gui.GuiButton;
                  import net.minecraft.client.renderer.OpenGlHelper;
                  import net.minecraft.util.ResourceLocation;
                  
                  import org.lwjgl.opengl.GL11;
                  
                  import cpw.mods.fml.relauncher.Side;
                  import cpw.mods.fml.relauncher.SideOnly;
                  
                  @SideOnly(Side.CLIENT)
                  public class CustomButton extends GuiButton
                  {
                  
                      public CustomButton(int id, int x, int y)
                      {
                          super(id, x, y, 20, 20, "");
                      }
                  
                      public void drawButton(Minecraft mc, int x, int y)
                      {
                          if (this.visible)
                          {
                              FontRenderer fontrenderer = mc.fontRenderer;
                              mc.getTextureManager().bindTexture(new ResourceLocation(CustomGuiMod.MODID, "textures/gui/test.png"));
                              GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
                              this.field_146123_n = x >= this.xPosition && y >= this.yPosition && x < this.xPosition + this.width && y < this.yPosition + this.height;
                              int k = this.getHoverState(this.field_146123_n);
                              System.out.println(k);
                              GL11.glEnable(GL11.GL_BLEND);
                              OpenGlHelper.glBlendFunc(770, 771, 1, 0);
                              GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
                              this.drawTexturedModalRect(this.xPosition, this.yPosition, 0, 46 + k * 20, this.width / 2, this.height);
                              this.drawTexturedModalRect(this.xPosition + this.width / 2, this.yPosition, 200 - this.width / 2, 46 + k * 20, this.width / 2, this.height);
                              this.mouseDragged(mc, x, y);
                              int l = 14737632;
                  
                              if (packedFGColour != 0)
                              {
                                  l = packedFGColour;
                              }
                              else if (!this.enabled)
                              {
                                  l = 10526880;
                              }
                              else if (this.field_146123_n)
                              {
                                  l = 16777120;
                              }
                  
                              this.drawCenteredString(fontrenderer, this.displayString, this.xPosition + this.width / 2, this.yPosition + (this.height - 8) / 2, l);
                          }
                      }
                  }
                  

                  Et la texture de mc modifiée :
                  http://i.imgur.com/QrJorgY.png

                  Pour le fonctionnement :
                  En fait le bouton est draw en deux morceaux :
                              this.drawTexturedModalRect(this.xPosition, this.yPosition, 0, 46 + k * 20, this.width / 2, this.height);
                              this.drawTexturedModalRect(this.xPosition + this.width / 2, this.yPosition, 200 - this.width / 2, 46 + k * 20, this.width / 2, this.height);
                  La première ligne fait la première moitié du bouton, celle de gauche. On commence donc au coordonné du bouton (this.xPosition, this.yPosition) le premier 0 c’est la coordonné x dans le fichier de texture, 46 + k * 20 c’est la coordonné y (k vaut 0 si le bouton est off, 1 si il est activé mais que la souris n’est pas dessus et 2 si il est activé et que la souris est dessus). Si tu compares avec le fichier de texture le 46 correspond aux autres textures qui sont au dessus, donc si tu vire les cases d’inventaire et que tu mets les boutons tout en haut du fichier de texture il faudra enlever ce 46. Ensuite on précise sur combien de pixel on affiche (ici this.width / 2, this.height, donc sur toute la hauteur du bouton et sur la moitié de la largeur).
                  La deuxième ligne c’est le même principe mais pour la moitié de droite, donc les coordonnés changent.

                  1 réponse Dernière réponse Répondre Citer 1
                  • DeletedD Hors-ligne
                    Deleted
                    dernière édition par

                    Merci beaucoup Robin mais y’a pas moyen que je fasse ça dans une texture individuelle car j’ai masse boutons à rajouter et y’en a seront bien + gros que 20x20 et ça ne tiendra jamais là dedans. Je peux pas faire ça autre part ? Le mod thirst mod il rajoute une barre de soif, c’est le même principe ?

                    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

                      ça fonctionne avec des fichiers de 256x256, je ne sais pas pour le reste. Après tu peux très bien faire un fichier par bouton, mais regrouper éviterai de charger 50 fichier.

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

                        @‘robin4002’:

                        ça fonctionne avec des fichiers de 256x256, je ne sais pas pour le reste. Après tu peux très bien faire un fichier par bouton, mais regrouper éviterai de charger 50 fichier.

                        Ok je vais essayer de faire une texture de 256 x 256 et de placer un de mes boutons dedans. Ensuite je me servirai de tes explications sur la méthode pour draw, si j’ai des questions je n’hésiterai pas comme d’habitude xD

                        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