Ajouter un bouton à un GUI
-
Ou tu peux faire un GL11.glColor4f pour colorer la texture en jaune.
-
Juste c’est normal qu’avec ça :
@Override public void initGui() { super.initGui(); this.buttonList.add(new GuiButton(0, 0, 0, 50, 20, "Pierre")); }Il n’y a aucun bouton ?
-
Perso, j’utilise ça:
buttonList.add(tradeButton = new GuiButton(0, guiX + 8, guiY + 12 + 5, 98, 20, label));et ça fonctionne parfaitement.
EDIT: mets le super.initGui(); après le add
-
Merci de ton aide et sinon j’ai ça :
@Override public void initGui() { this.buttonList.add(new GuiButton(0, 0, 0, 50, 20, "Pierre")); super.initGui(); }et ça ne marche toujours pas et pour ton code tu mets quoi comme arguments ?
-
Avec les coordonnées que tu as mit ton bouton devrait apparaitre tout en haut à gauche.
-
Bas je peux envoyer un screen à part si les coordonnées sont codés de façon à ce que l’extrémité bas droite est tout en haut à gauche et là il n’est pas sur l’écran mais marche…
Voilà ma classe complète :
package fr.altiscraft.altiscraft.common; import java.util.ArrayList; import java.util.List; import org.lwjgl.opengl.GL11; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiTextField; import net.minecraft.util.ResourceLocation; public class GuiATM extends GuiScreen { int guiWidth = 250; int guiHeight = 250; protected List buttonList = new ArrayList(); private GuiTextField text; int i = this.height / 4 + 48; @Override public void drawScreen(int x, int y, float ticks) { int guix = (width - guiWidth) / 2; int guiy = (height - guiHeight) / 2; mc.renderEngine.bindTexture(new ResourceLocation(ModAltisCraft.MODID, "textures/gui/Fond.png")); drawTexturedModalRect(guix, guiy, 0, 0, guiWidth, guiHeight); GL11.glColor4f(1, 1, 1, 1); fontRendererObj.drawString("ATM", guix + 120, guiy - 10, 0xFFFF00); super.drawScreen(x, y, ticks); } protected void actionPerformed(GuiButton button) { if (button.id == 0) { } } @Override public boolean doesGuiPauseGame() { return false; } @Override public void initGui() { this.buttonList.add(new GuiButton(0, 0, 0, 50, 20, "Pierre")); super.initGui(); } }et voilà mon GUI IG :

-
Surement car ton button est en dehors du gui.
Mets comme coordonnées this.guiLeft et this.guiTop -
this.guiLeft, this.guiTop ne marche pas comme ce n’est pas un GUI container comment le convertir ?
-
Essayes de mettre ton bouton au centre pour voir s’il s’affiche.
-
Toujours rien avec la position de mon texte…
package fr.altiscraft.altiscraft.common; import java.util.ArrayList; import java.util.List; import org.lwjgl.opengl.GL11; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiTextField; import net.minecraft.util.ResourceLocation; public class GuiATM extends GuiScreen { int guiWidth = 140; int guiHeight = 180; protected List buttonList = new ArrayList(); private GuiTextField text; int i = this.height / 4 + 48; @Override public void drawScreen(int x, int y, float ticks) { int guix = (width - guiWidth) / 2; int guiy = (height - guiHeight) / 2; mc.renderEngine.bindTexture(new ResourceLocation(ModAltisCraft.MODID, "textures/gui/Fond.png")); drawTexturedModalRect(guix, guiy, 0, 0, guiWidth, guiHeight); GL11.glColor4f(1, 1, 1, 1); fontRendererObj.drawString("Gestion du Compte Bancaire", guix + 2, guiy + 5, 0xFFFFFF); super.drawScreen(x, y, ticks); } protected void actionPerformed(GuiButton button) { if (button.id == 0) { } } @Override public boolean doesGuiPauseGame() { return false; } @Override public void initGui() { int guix = (width - guiWidth) / 2; int guiy = (height - guiHeight) / 2; this.buttonList.add(new GuiButton(0, guix + 2, guiy + 5, 50, 20, "Cobble")); super.initGui(); } } -
Toujours rien avec la position de mon texte…
package fr.altiscraft.altiscraft.common; import java.util.ArrayList; import java.util.List; import org.lwjgl.opengl.GL11; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiTextField; import net.minecraft.util.ResourceLocation; public class GuiATM extends GuiScreen { int guiWidth = 140; int guiHeight = 180; protected List buttonList = new ArrayList(); private GuiTextField text; int i = this.height / 4 + 48; @Override public void drawScreen(int x, int y, float ticks) { int guix = (width - guiWidth) / 2; int guiy = (height - guiHeight) / 2; mc.renderEngine.bindTexture(new ResourceLocation(ModAltisCraft.MODID, "textures/gui/Fond.png")); drawTexturedModalRect(guix, guiy, 0, 0, guiWidth, guiHeight); GL11.glColor4f(1, 1, 1, 1); fontRendererObj.drawString("Gestion du Compte Bancaire", guix + 2, guiy + 5, 0xFFFFFF); super.drawScreen(x, y, ticks); } protected void actionPerformed(GuiButton button) { if (button.id == 0) { } } @Override public boolean doesGuiPauseGame() { return false; } @Override public void initGui() { int guix = (width - guiWidth) / 2; int guiy = (height - guiHeight) / 2; this.buttonList.add(new GuiButton(0, guix + 2, guiy + 5, 50, 20, "Cobble")); super.initGui(); } } -
Mets le GL11.glColor4f(1, 1, 1, 1); avant la fonction drawTexturedModalRect pour voir ?
-
Aucun changement…
-
Aucune idée dans ce cas

-
tu n’as pas un code d’un GUI avec un bouton ? à part un container… -
Non, pas sur mes projets publics.
-
Quelqu’un d’autre a de l’aide à apporter ? -
Perso, j’utilise ça:
package diabolicatrix.base; import org.lwjgl.opengl.GL11; import ibxm.Player; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiLabel; import net.minecraft.client.gui.GuiScreen; import net.minecraft.util.ResourceLocation; public class GuiMouseOver extends GuiScreen { int guiWidth = 114; int guiHeight = 44; GuiButton tradeButton; String label = "player"; public void drawScreen(int x, int y, float tick) { int guiX = (this.width - guiWidth) / 2; int guiY = (this.height - guiHeight) / 2; GL11.glColor4f(1, 1, 1, 1); drawDefaultBackground(); mc.renderEngine.bindTexture(new ResourceLocation("t4:textures/gui/guiotherplayer.png")); drawTexturedModalRect(guiX, guiY, 0, 0, guiWidth, guiHeight); fontRendererObj.drawString("Player Menu", (int) (guiX + 25), guiY + 6, 0x000000); super.drawScreen(x, y, tick); } @Override public void initGui() { int guiX = (this.width - guiWidth) / 2; int guiY = (this.height - guiHeight) / 2; buttonList.clear(); buttonList.add(new GuiButton(0, guiX + 8, guiY + 12 + 5, 98, 20, label)); super.initGui(); } @Override protected void actionPerformed(GuiButton btn) { switch(btn.id){ case 0: System.out.println("Trade!"); } } } -
C’est bon merci à toi et sinon pour mon bouton orange je fais comment ?
SCAREX avec ta technique,
package fr.altiscraft.altiscraft.common; import org.lwjgl.opengl.GL11; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiTextField; import net.minecraft.util.ResourceLocation; public class GuiATM extends GuiScreen { int guiWidth = 140; int guiHeight = 220; GuiButton tradeButton; String label = "RETIRER"; String labele = "DEPOSER"; String labelee = "TRANSFERER"; String labeleee = "DEPOSER POUR LE GANG"; String labeleeee = "FERMER"; private GuiTextField textfield; private GuiTextField textefield; public void drawScreen(int x, int y, float tick) { int guiX = (this.width - guiWidth) / 2; int guiY = (this.height - guiHeight) / 2; GL11.glColor4f(1, 1, 1, 1); mc.renderEngine.bindTexture(new ResourceLocation(ModAltisCraft.MODID, "textures/gui/Fond.png")); drawTexturedModalRect(guiX, guiY, 0, 0, guiWidth, guiHeight); fontRendererObj.drawString("Gestion du Compte Bancaire", guiX + 2, guiY + 5, 0xFFFFFF); fontRendererObj.drawString("654 346 €", guiX + 45, guiY + 25, 0xFFFFFF); fontRendererObj.drawString("21 838 €", guiX + 45, guiY + 42, 0xFFFFFF); this.textfield.drawTextBox(); this.textefield.drawTextBox(); super.drawScreen(x, y, tick); } @Override public void initGui() { int guiX = (this.width - guiWidth) / 2; int guiY = (this.height - guiHeight) / 2; buttonList.clear(); buttonList.add(new GuiButton(0, guiX + 20, guiY + 72 + 5, 98, 20, label)); GL11.glColor4f(255, 255, 255, 255); buttonList.add(new GuiButton(1, guiX + 20, guiY + 95 + 5, 98, 20, labele)); buttonList.add(new GuiButton(2, guiX + 20, guiY + 138 + 5, 98, 20, labelee)); buttonList.add(new GuiButton(3, guiX + 5, guiY + 165 + 5, 130, 20, labeleee)); buttonList.add(new GuiButton(4, guiX + 5, guiY + 190 + 5, 50, 20, labeleeee)); this.textfield = new GuiTextField(this.fontRendererObj, this.width / 2 - 50, this.height / 2 - 55, 98, 20); textfield.setMaxStringLength(12); textfield.setText(""); ((GuiTextField) this.textfield).setFocused(true); this.textefield = new GuiTextField(this.fontRendererObj, this.width / 2 - 50, this.height / 2 + 12, 98, 20); textefield.setMaxStringLength(20); textefield.setText(""); ((GuiTextField) this.textefield).setFocused(true); super.initGui(); } protected void keyTyped(char par1, int par2) { super.keyTyped(par1, par2); this.textfield.textboxKeyTyped(par1, par2); this.textefield.textboxKeyTyped(par1, par2); } protected void mouseClicked(int x, int y, int btn) { super.mouseClicked(x, y, btn); this.textfield.mouseClicked(x, y, btn); this.textefield.mouseClicked(x, y, btn); } @Override protected void actionPerformed(GuiButton btn) { switch (btn.id) { case 0: System.out.println("Trade !"); } } }et ça donne ce crash-report : http://pastebin.com/yuG0BG6A
EDIT : et pour robin j’ai fais ça :
package fr.altiscraft.altiscraft.common; import org.lwjgl.opengl.GL11; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiTextField; import net.minecraft.util.ResourceLocation; public class GuiATM extends GuiScreen { int guiWidth = 140; int guiHeight = 220; GuiButton tradeButton; String label = "RETIRER"; String labele = "DEPOSER"; String labelee = "TRANSFERER"; String labeleee = "DEPOSER POUR LE GANG"; String labeleeee = "FERMER"; private GuiTextField textfield; private GuiTextField textefield; public void drawScreen(int x, int y, float tick) { int guiX = (this.width - guiWidth) / 2; int guiY = (this.height - guiHeight) / 2; GL11.glColor4f(1, 1, 1, 1); mc.renderEngine.bindTexture(new ResourceLocation(ModAltisCraft.MODID, "textures/gui/Fond.png")); drawTexturedModalRect(guiX, guiY, 0, 0, guiWidth, guiHeight); fontRendererObj.drawString("Gestion du Compte Bancaire", guiX + 2, guiY + 5, 0xFFFFFF); fontRendererObj.drawString("654 346 €", guiX + 45, guiY + 25, 0xFFFFFF); fontRendererObj.drawString("21 838 €", guiX + 45, guiY + 42, 0xFFFFFF); this.textfield.drawTextBox(); this.textefield.drawTextBox(); super.drawScreen(x, y, tick); } @Override public void initGui() { int guiX = (this.width - guiWidth) / 2; int guiY = (this.height - guiHeight) / 2; buttonList.clear(); buttonList.add(new GuiButton(0, guiX + 20, guiY + 72 + 5, 98, 20, label)); mc.renderEngine.bindTexture(new ResourceLocation(ModAltisCraft.MODID, "textures/gui/widgets.png")); buttonList.add(new GuiButton(1, guiX + 20, guiY + 95 + 5, 98, 20, labele)); buttonList.add(new GuiButton(2, guiX + 20, guiY + 138 + 5, 98, 20, labelee)); buttonList.add(new GuiButton(3, guiX + 5, guiY + 165 + 5, 130, 20, labeleee)); buttonList.add(new GuiButton(4, guiX + 5, guiY + 190 + 5, 50, 20, labeleeee)); this.textfield = new GuiTextField(this.fontRendererObj, this.width / 2 - 50, this.height / 2 - 55, 98, 20); textfield.setMaxStringLength(12); textfield.setText(""); ((GuiTextField) this.textfield).setFocused(true); this.textefield = new GuiTextField(this.fontRendererObj, this.width / 2 - 50, this.height / 2 + 12, 98, 20); textefield.setMaxStringLength(20); textefield.setText(""); ((GuiTextField) this.textefield).setFocused(true); super.initGui(); } protected void keyTyped(char par1, int par2) { super.keyTyped(par1, par2); this.textfield.textboxKeyTyped(par1, par2); this.textefield.textboxKeyTyped(par1, par2); } protected void mouseClicked(int x, int y, int btn) { super.mouseClicked(x, y, btn); this.textfield.mouseClicked(x, y, btn); this.textefield.mouseClicked(x, y, btn); } @Override protected void actionPerformed(GuiButton btn) { switch (btn.id) { case 0: System.out.println("Trade !"); } } }mais j’ai ça : http://pastebin.com/u63yRzCt
-
GL11.glColor4f utilise des float, et non des couleurs sur une base 256 mais sur 1. Si tu veux seulement colorier le bouton, tu ne dois pas le mettre dans la méthode du GUI mais dans celle du bouton. Tu as un NPE : vérifie que tes variables soient initialisés correctement, et donne leur un meilleur nom.
PS : penses aux fichiers de traduction pour tes textes.
