Problème texture bouton
-
Je crois vraiment que tu ne comprends pas, les tailles de textures possibles sont :
16x16, 32x32, 64x64, 64x64, 128x128, 256x256, 512x512, etc.De plus, tu as supprimé la condition qui fait que lorsque la souris est au-dessus, la texture change.
-
Les textures s’affichent bien cependant elles se dupliquent sur le côté en 512512 et lorsque je change en 128128 elle est coupé.
J’ai également une question si seulement ces formats sont disponible n’est t’il pas possible d’afficher la texture selon la hauteur et la largeur que l’ont veut (car une texture carré pour un bouton n’est pas forcément jolie).
J’ai essayé en faisant varier ces valeur mais ça ne semble pas fonctionner :
this.drawTexturedModalRect(this.xPosition, this.yPosition, 0, k, 128, 128); -
Quoi qu’il arrive, la méthode drawTexturedModalRect assume que la taille de la texture soit de 256 pixels sur 256, ce qui est celle du gui de base
Sent from my GT-I9000 using Tapatalk 2
-
@‘jglrxavpok’:
Quoi qu’il arrive, la méthode drawTexturedModalRect assume que la taille de la texture soit de 256 pixels sur 256, ce qui est celle du gui de base
Sent from my GT-I9000 using Tapatalk 2
Du coup on ne peut pas en mettre d’autre ?
-
Si mais soit:
- Tu fais en sorte que ta texture fasse 256*256 pixels
- Tu utilises une autre méthode pour afficher ton bouton, avec le Tessellator, par exemple.
-
@‘Sebenf0rce’:
@‘jglrxavpok’:
Quoi qu’il arrive, la méthode drawTexturedModalRect assume que la taille de la texture soit de 256 pixels sur 256, ce qui est celle du gui de base
Sent from my GT-I9000 using Tapatalk 2
Du coup on ne peut pas en mettre d’autre ?
Tu as 2 choix :
- technique minecraft, créer un fichier de 512*512 et y mettre toutes tes textures (pas très propre, comme d’habitude avec minecraft)
- Créer un fichier plus petit (comme 128*128) et y mettre tes 2 textures l’une en dessous de l’autre en précisant dans ton code que lorsque le joueur met le curseur dessus, il prend la texture plus bas, exemple :
package fr.scarex.updater.handler; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiMainMenu; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.event.GuiScreenEvent.InitGuiEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import fr.scarex.updater.Updater; import fr.scarex.updater.client.gui.GuiUpdater; public class UpdaterHandler { @SubscribeEvent public void onInitGuiEvent(final InitGuiEvent event) { if (event.gui instanceof GuiMainMenu) event.buttonList.add(new GuiButton(22, event.gui.width / 2 + 108, event.gui.height / 4 + 132, 20, 20, "") { protected final ResourceLocation buttonTexture = new ResourceLocation(Updater.MODID, "textures/gui/button_update_big.png"); // Chemin vers la texture @Override // Ouverture du Gui public void mouseReleased(int mouseX, int mouseY) { event.gui.mc.displayGuiScreen(new GuiUpdater(event.gui)); } @Override // Dessin du bouton public void drawButton(Minecraft mc, int mouseX, int mouseY) { if (this.visible) { mc.getTextureManager().bindTexture(buttonTexture); // On associe la texture GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); boolean flag = mouseX >= this.xPosition && mouseY >= this.yPosition && mouseX < this.xPosition + this.width && mouseY < this.yPosition + this.height; // On regarde si le curseur est au-dessus du bouton int k = 0; if (flag) k += this.height; // Si oui, on décale de la hauteur du bouton (et donc de la texture), mais tu peux utiliser une valeur statique this.drawTexturedModalRect(this.xPosition, this.yPosition, 0, k, 20, 20); // Dessin du bouton } } }); } }
-
La class GuiUpdater correspond à quoi ?
Edit : Pour l’instant ma class est comme ceci :
package com.example.examplemod; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; public class boutique extends GuiButton { public static final ResourceLocation texture = new ResourceLocation("menu", "textures/gui/boutique.png"); public boutique(int par1, int par2, int par3, int par4, int par5, String str) { super(par1, par2, par3, par4, par5, str); } @Override // Dessin du bouton public void drawButton(Minecraft mc, int mouseX, int mouseY) { if (this.visible) { mc.getTextureManager().bindTexture(texture); // On associe la texture GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); boolean flag = mouseX >= this.xPosition && mouseY >= this.yPosition && mouseX < this.xPosition + this.width && mouseY < this.yPosition + this.height; // On regarde si le curseur est au-dessus du bouton int k = 0; if (flag) k += this.height; // Si oui, on décale de la hauteur du bouton (et donc de la texture), mais tu peux utiliser une valeur statique this.drawTexturedModalRect(this.xPosition, this.yPosition, 0, k, 128, 128); // Dessin du bouton } } }
Le rendu comme ceci :
Et la texture comme cela :
En 128*128 -
La classe GuiUpdater est ma propre classe, je te l’ai donné à titre d’exemple.
Comment est appelé ton constructeur ? Quelle taille est donnée à ton bouton ?
-
@‘SCAREX’:
La classe GuiUpdater est ma propre classe, je te l’ai donné à titre d’exemple.
Comment est appelé ton constructeur ? Quelle taille est donnée à ton bouton ?
this.buttonList.add(new boutique(5, width / 2 - 50, height / 4 + 24, 128, 64, “”));
-
Essaie avec çà :
package com.example.examplemod; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; public class boutique extends GuiButton { public static final ResourceLocation texture = new ResourceLocation("menu", "textures/gui/boutique.png"); public boutique(int par1, int par2, int par3, int par4, int par5, String str) { super(par1, par2, par3, par4, par5, str); } @Override public void drawButton(Minecraft mc, int mouseX, int mouseY) { if (this.visible) { mc.getTextureManager().bindTexture(texture); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); boolean flag = mouseX >= this.xPosition && mouseY >= this.yPosition && mouseX < this.xPosition + this.width && mouseY < this.yPosition + this.height; int k = 0; if (flag) k += 64; this.drawTexturedModalRect(this.xPosition, this.yPosition, 0, k, 128, 64); // Dessin du bouton } }
PS : pense à changer le package…
-
Non la texture ne s’affiche toujours pas correctement.
-
Envoi ton code et une screenshot.
-
Class du bouton :
package com.example.examplemod; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; public class boutique extends GuiButton { public static final ResourceLocation texture = new ResourceLocation("menu", "textures/gui/boutique.png"); public boutique(int par1, int par2, int par3, int par4, int par5, String str) { super(par1, par2, par3, par4, par5, str); } @Override public void drawButton(Minecraft mc, int mouseX, int mouseY) { if (this.visible) { mc.getTextureManager().bindTexture(texture); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); boolean flag = mouseX >= this.xPosition && mouseY >= this.yPosition && mouseX < this.xPosition + this.width && mouseY < this.yPosition + this.height; int k = 0; if (flag) k += 64; this.drawTexturedModalRect(this.xPosition, this.yPosition, 0, k, 128, 64); // Dessin du bouton } } }
Class principal :
private void addSingleplayerMultiplayerButtons(int par1, int par2) { this.buttonList.add(new boutique(5, width / 2 - 50, height / 4 + 24, 128, 64, "")); }
Affichage actuel :
-
De quelle taille veux-tu ton bouton ?
PS : les noms de classe commencent par une majuscule
PS 2 : j’ai du modifier ta texture pour qu’elle fasse 512x512.
PS 3 : le blanc dans ton image rend pas terrible et ta texture n’est pas de très bonne qualité, je te conseille de la modifier. -
Je vais refaire les texture, je voudrais que le bouton fasse du 12864 (donc l’image 128128 si il y deux image).
-
J’ai ce résultat, te correspond-t-il ?
-
@‘SCAREX’:
J’ai ce résultat, te correspond-t-il ?
Pour la hauteur oui c’est parfait cepandant est-il possible d’agrandir la largeur (commele bouton singlePlayer) . Désolé je pensais que 128 était plus grand que ça.
-
çà l’est mais après il faut agrandir la texture dans le fichier ou faire la technique de minecraft, c’est-à-dire décomposé le bouton en 2 parties.
-
@‘SCAREX’:
çà l’est mais après il faut agrandir la texture dans le fichier ou faire la technique de minecraft, c’est-à-dire décomposé le bouton en 2 parties.
Si j’agrandis la largeur de l’image il faut aussi que j’agrandisse la hauteur non ?
-
Fait une image de 512x512 et mets la taille que tu veux dedans et laisse le reste vide.