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

    Non résolu GUI Button affichant des textures de minecraft

    Support pour les moddeurs
    1.12.2
    3
    6
    232
    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.
    • RayZens
      RayZens dernière édition par RayZens

      J’essaye d’ajouter un bouton à mon GUI, le soucis c’est qu’il y a un gros problème, tout marche sauf que ça affiche des textures de base de minecraft, alors que j’ai bien bind la texture que je voulais.

      6d2e7065-2b37-435b-9bf0-0e7ce794fe55-image.png

      Classe de mon Button:

      package fr.rayzens.newcity.buttons;
      
      import fr.rayzens.newcity.main;
      import net.minecraft.client.Minecraft;
      import net.minecraft.client.gui.Gui;
      import net.minecraft.client.gui.GuiButton;
      import net.minecraft.client.renderer.GlStateManager;
      import net.minecraft.util.ResourceLocation;
      
      public class competenceButton extends GuiButton
      {
          private static final ResourceLocation COMPETENCE_ICON = new ResourceLocation(main.MOD_ID, "textures/gui/competencebutton.png");
          
          public competenceButton(int buttonId, int x, int y)
          {
              super(buttonId, x, y, 256, 256, ""); 
          }
       
          public void drawButton(Minecraft mc, int mouseX, int mouseY)
          {
              if(this.visible)
              {
                  boolean mouseHover = mouseX >= this.x && mouseY >= this.y && mouseX < this.x + this.width && mouseY < this.y + this.height;
                  if(mouseHover)
                  {
                      mc.getTextureManager().bindTexture(COMPETENCE_ICON);
                  }
                  else
                  {
                      mc.getTextureManager().bindTexture(COMPETENCE_ICON);
                  }
                  GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
                  Gui.drawScaledCustomSizeModalRect(this.x, this.y, 0, 0, 256, 256, 256, 256, 256, 256);
              }
          }
      }
      
      

      Classe de mon GUI:

      package fr.rayzens.newcity.gui;
      
      import fr.rayzens.newcity.main;
      import fr.rayzens.newcity.buttons.competenceButton;
      import net.minecraft.client.Minecraft;
      import net.minecraft.client.gui.Gui;
      import net.minecraft.client.gui.GuiButton;
      import net.minecraft.client.gui.GuiScreen;
      import net.minecraft.client.renderer.GlStateManager;
      import net.minecraft.util.ResourceLocation;
      
      public class menuGui extends GuiScreen {
      	
      	private final ResourceLocation background = new ResourceLocation(main.MOD_ID, "textures/gui/menubackground.png");
      	
      	private Minecraft minecraft;
      	
      	public menuGui(Minecraft mc) {
      		minecraft = mc;
      	}
      	
      	public void initGui() {
      	}
      	
      	public void actionPerformed(GuiButton button) {
      		
      	}
      	
      	public void drawScreen(int mouseX, int mouseY, float partialTicks) {
      		
      		drawBackgroundImage();
      		this.buttonList.clear();
      		this.buttonList.add(new competenceButton(156, 0, 0));
      		
      		super.drawScreen(mouseX, mouseY, partialTicks);
      	}
      	
      	public void drawBackgroundImage() {
      		
      		GlStateManager.pushMatrix();
      		GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
      		
              mc.getTextureManager().bindTexture(background);
              GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
              Gui.drawScaledCustomSizeModalRect(0, 0, 0, 0, 1, 1, this.width, this.height, 1, 1);
      		GlStateManager.popMatrix();
      	}
      }
      
      
      Ama 1 réponse Dernière réponse Répondre Citer 0
      • Ama
        Ama @RayZens dernière édition par

        @rayzens a dit dans GUI Button affichant des textures de minecraft :

        Gui.drawScaledCustomSizeModalRect(this.x, this.y, 0, 0, 256, 256, 256, 256, 256, 256);

        Il vient de cette ligne le problème.

        Décomposons les paramètres (De mémoire):

        int posX: Position dans le GUI en X => this.x
        int posY: Position dans le GUI en Y => this.y
        int U: Position à l’horizontale dans l’image => 0
        int V: Position à la verticale dans l’image => 0

        int width: Largeur en pixels de l’élément cible dans l’image => (ex: Bouton avec le cadenas)) => 16

        int height: Hauteur en pixel de l’élément cible dans l’image => (ex: Bouton avec le cadenas)) => 16

        int imageWidth: Largeur de l’image (textures/gui/competencebutton.png) où se trouve tous les éléments => 256

        int imageHeight: Hauteur de l’image (textures/gui/competencebutton.png) où se trouve tous les éléments => `256

        C’est peut être pas complètement vrai comme explications.
        Mais de tête ça ressemble à quelque chose comme ça.

        A Noter:
        drawScaledCustomSizeModalRect n’est pas la fonction que tu recherche, du moins c’est pas la plus adaptée.
        Mais je ne me souviens plus des noms des autres fonctions permettant l’affichage d’une image en 1.12, à toi de chercher.

        Si je t'ai filé un coup de main n'oublie pas le + / -
        Par contre évite les demandes d'aides en MP, tu sera sympa'

        La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

        Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

        RayZens 2 réponses Dernière réponse Répondre Citer 0
        • RayZens
          RayZens @Ama dernière édition par RayZens

          Merci beaucoup pour les explications et ton aide, mais le soucis c’est que ça n’affiche pas la texture que je veux, le jeux affiche des textures issus de base de Minecraft, hors j’ai bien bind la texture de mon bouton…

          int width: Largeur en pixels de l’élément cible dans l’image => (ex: Bouton avec le cadenas)) => 16

          int height: Hauteur en pixel de l’élément cible dans l’image => (ex: Bouton avec le cadenas)) => 16

          Je viens de tout essayer, même en changeant de méthode pour faire un “drawTexturedModalRect(x, y, textureX, textureY, width, height)”

          Le gros gros soucis c’est que ça ne prend pas en compte ma texture, je ne sais quels sorcellerie, mais le jeux utilise la texture de base des GUI de minecraft à la place de celle que je lui donne 😕

          1 réponse Dernière réponse Répondre Citer 0
          • RayZens
            RayZens @Ama dernière édition par

            @ama

            J’ai essayer tout les drawRect mais aucun n’arrive à afficher la texture, comme si la texture n’est pas “draw”, et donc le jeux met à la place la base des GUI Button.

            A 1 réponse Dernière réponse Répondre Citer 1
            • A
              Antotor45 @RayZens dernière édition par

              @rayzens J’ai exactement la même erreur

              A 1 réponse Dernière réponse Répondre Citer 0
              • A
                Antotor45 @Antotor45 dernière édition par

                @antotor45 J’ai enfin trouver il suffit de mettre le bind texture avant le drawTexturedModalRect

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

                MINECRAFT FORGE FRANCE © 2018

                Powered by NodeBB