Non résolu GUI Button affichant des textures de minecraft
-
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.
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(); } }
-
@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 => `256C’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. -
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
-
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.
-
@rayzens J’ai exactement la même erreur
-
@antotor45 J’ai enfin trouver il suffit de mettre le bind texture avant le drawTexturedModalRect