Fonction des bouton du menu Ingame "GUI"
-
Bonjour / Bonsoir,
Voilà j’ai modif mon GuiIngameMenu mais je n’arrive pas a les faire fonctionner
Je m’explique j’ai créer ça: http://prntscr.com/bhu9n1
Mais quand je clique par exemple sur déconexion il ne se passe rien.Donc j’aimerai si possible une solution pour que les touches et leur fonction.
Le code:
public class ClientProxy extends CommonProxy { public ClientProxy() { MinecraftForge.EVENT_BUS.register(this); } // Gui @SubscribeEvent public void onInitGuiIngameEvent(InitGuiEvent.Post event) { if (event.gui instanceof GuiIngameMenu) { for (Object b : event.buttonList) { if (((GuiButton) b).id == 1) { ((GuiButton) b).visible = false; } } int i = event.gui.height = -16; event.buttonList.add(new GuiButton(40, event.gui.width / 2 + 2, i + 8 * 31, 98, 20, "§6Votez"){ }); if (event.gui instanceof GuiIngameMenu) { for (Object b : event.buttonList) { if (((GuiButton) b).id == 4) { ((GuiButton) b).visible = false; } } int H = event.gui.height = -16; event.buttonList.add(new GuiButton(40, event.gui.width / 2 - 100, H + 8 * 31, 100, 20, "§cDéconnexion"){ }); if (event.gui instanceof GuiIngameMenu) { for (Object b : event.buttonList) { if (((GuiButton) b).id == 0) { ((GuiButton) b).visible = false; } } int Q = event.gui.height = -16; event.buttonList.add(new GuiButton(40, event.gui.width / 2 - 100, H + 8 * 28, 100, 20, "§7Option"){ }); if (event.gui instanceof GuiIngameMenu) { for (Object b : event.buttonList) { if (((GuiButton) b).id == 2) { ((GuiButton) b).visible = false; } } int A = event.gui.height = -16; event.buttonList.add(new GuiButton(40, event.gui.width / 2 + 2, H + 8 * 28, 98, 20, "§2TeamSpeak"){ @Override public void mouseReleased(int x, int y) { if (Desktop.isDesktopSupported()) { try { Desktop.getDesktop().browse(new URI("ts3server://90.11*.**.***")); } catch(IOException e) { e.printStackTrace(); } catch(URISyntaxException e) { e.printStackTrace(); } } } }); int Z = event.gui.height = -16; event.buttonList.add(new GuiButton(40, event.gui.width / 2 + 2, H + 8 * 25, 98, 20, "§3Site"){ @Override public void mouseReleased(int x, int y) { if (Desktop.isDesktopSupported()) { try { Desktop.getDesktop().browse(new URI("https://www.x******.fr")); } catch(IOException e) { e.printStackTrace(); } catch(URISyntaxException e) { e.printStackTrace(); } } } }); if (event.gui instanceof GuiIngameMenu) { for (Object b : event.buttonList) { if (((GuiButton) b).id == 7) { ((GuiButton) b).visible = false; } } } if (event.gui instanceof GuiIngameMenu) { for (Object b : event.buttonList) { if (((GuiButton) b).id == 2) { ((GuiButton) b).visible = false; } } int J = event.gui.height = -16; event.buttonList.add(new GuiButton(40, event.gui.width / 2 - 100, H + 8 * 25, 100, 20, "§5Succès"){ }); if (event.gui instanceof GuiIngameMenu) { for (Object b : event.buttonList) { if (((GuiButton) b).id == 5) { ((GuiButton) b).visible = false; } } int K = event.gui.height = -16; event.buttonList.add(new GuiButton(40, event.gui.width / 2 - 100, H + 8 * 22, "§eRetour au Jeu"){ }); } } } } } } } }
Merci.
-
Salut,
Commences par formater et organiser ton code, car il est illisible. Impossible de se retrouver avec ça.
-
Je te l’es un peut ré-organiser
-
Je crois qu’on a pas la même définition du mot organisé.
Tu as pleins de boucle et de condition répété de façon inutile.
En plus de rendre le code dégueulasse il est aussi lent à être exécuté.public class ClientProxy extends CommonProxy { public ClientProxy() { MinecraftForge.EVENT_BUS.register(this); } // Gui @SubscribeEvent public void onInitGuiIngameEvent(InitGuiEvent.Post event) { if(event.gui instanceof GuiIngameMenu) { // on cache les boutons de base for(Object b : event.buttonList) { int buttonId = ((GuiButton)b).id; if(buttonId == 1 || buttonId == 4 || buttonId == 0 || buttonId == 2 || buttonId == 7 || buttonId == 5) { ((GuiButton)b).visible = false; } } int i = event.gui.height = -16; event.buttonList.add(new GuiButton(40, event.gui.width / 2 + 2, i + 8 * 31, 98, 20, "§6Votez") {}); event.buttonList.add(new GuiButton(41, event.gui.width / 2 - 100, i + 8 * 31, 100, 20, "§cDéconnexion") {}); event.buttonList.add(new GuiButton(42, event.gui.width / 2 - 100, i + 8 * 28, 100, 20, "§7Option") {}); event.buttonList.add(new GuiButton(43, event.gui.width / 2 + 2, i + 8 * 28, 98, 20, "§2TeamSpeak") { @Override public void mouseReleased(int x, int y) { if(Desktop.isDesktopSupported()) { try { Desktop.getDesktop().browse(new URI("ts3server://90.11*.**.***")); } catch(IOException e) { e.printStackTrace(); } catch(URISyntaxException e) { e.printStackTrace(); } } } }); event.buttonList.add(new GuiButton(44, event.gui.width / 2 + 2, i + 8 * 25, 98, 20, "§3Site") { @Override public void mouseReleased(int x, int y) { if(Desktop.isDesktopSupported()) { try { Desktop.getDesktop().browse(new URI("https://www.x******.fr")); } catch(IOException e) { e.printStackTrace(); } catch(URISyntaxException e) { e.printStackTrace(); } } } }); event.buttonList.add(new GuiButton(45, event.gui.width / 2 - 100, i + 8 * 25, 100, 20, "§5Succès") {}); event.buttonList.add(new GuiButton(46, event.gui.width / 2 - 100, i + 8 * 22, "§eRetour au Jeu") {}); } } }
Comme ça c’est déjà beaucoup plus propre.
Ensuite pour les actions il te suffit d’ajouter la fonction mouseReleased comme c’est déjà le cas pour le bouton TeamSpeak -
Ok merci,
Mais le probléme c’est que même le bouton TeamSpeak et site ne marche pas :c -
Dans la fonction mouseReleased, ajoutes :
System.out.println(“test”);
et regardes si test s’affiche dans la console. -
Sa ne fonctionne pas rien ne s’écrit dans la console
-
Utilises l’événement GuiScreenEvent.ActionPerformedEvent alors.
-
C’est pas logique que le code ne soit pas appelé, regarde si le bouton fait du bruit quand tu cliques dessus.
Petite question, pourquoi faire ça : int i = event.gui.height = -16; ?
-
Nan scarex sa fais aucun bruit :c
Je ne sais plus éxactement mais ça c’est pour changer la place du bouton nan ?
-
@‘SCAREX’:
C’est pas logique que le code ne soit pas appelé, regarde si le bouton fait du bruit quand tu cliques dessus.
Petite question, pourquoi faire ça : int i = event.gui.height = -16; ?
Je n’avais même pas vu x)
@‘titoux99’:
Nan scarex sa fais aucun bruit :c
Je ne sais plus éxactement mais ça c’est pour changer la place du bouton nan ?
Non, ça ne sert à rien. Autant mettre directement -16 à la place de i dans le code. Surtout que là tu fais une double initialisation.
-
Et surtout que la taille d’un gui ne peut pas être négative.
(Je vais voir plus tard pourquoi ce n’est pas appelé et j’éditerai mon message)
-
Toujours pas de solution ? :c
-
Je t’ai donné une piste :
@‘robin4002’:Utilises l’événement GuiScreenEvent.ActionPerformedEvent alors.
-
J’ai testé le code, tout marche très bien une fois que tu as changé ceci : int i = event.gui.height = -16; en ceci : int i = -16;
Je suppose donc que tu n’avais pas fait la modification lorsque l’on te l’avait dit.En revanche tu n’as pas caché tous les boutons, si tu veux vraiment retirer tous les boutons je te conseille plutôt de ne pas mettre de condition ou de bien penser à mettre tous les boutons sinon tu auras des problèmes
-
@‘SCAREX’:
J’ai testé le code, tout marche très bien une fois que tu as changé ceci : int i = event.gui.height = -16; en ceci : int i = -16;
Je suppose donc que tu n’avais pas fait la modification lorsque l’on te l’avait dit.En revanche tu n’as pas caché tous les boutons, si tu veux vraiment retirer tous les boutons je te conseille plutôt de ne pas mettre de condition ou de bien penser à mettre tous les boutons sinon tu auras des problèmes
J’ai fais comme tu m’as dit et sa ne marche toujours pas
Pour ce qui est de robin je vais essayer ce soirSinon merci les gars de votre aide.
-
Renvoi le code car chez moi ça marche
-
// Gui @SubscribeEvent public void onInitGuiIngameEvent(InitGuiEvent.Post event) { if(event.gui instanceof GuiIngameMenu) { // on cache les boutons de base for(Object b : event.buttonList) { int buttonId = ((GuiButton)b).id; if(buttonId == 1 || buttonId == 4 || buttonId == 0 || buttonId == 2 || buttonId == 7 || buttonId == 5 || buttonId == 12 || buttonId == 6) { ((GuiButton)b).visible = false; } } int i = -16; event.buttonList.add(new GuiButton(40, event.gui.width / 2 + 2, i + 8 * 31, 98, 20, "§6Votez") {}); int K = -16; event.buttonList.add(new GuiButton(40, event.gui.width / 2 - 100, i + 8 * 25, 98, 20, "§5Succes") {}); int E = -16; event.buttonList.add(new GuiButton(40, event.gui.width / 2 - 100, i + 8 * 31, 98, 20, "§bStatistiques") {}); int R = -16; event.buttonList.add(new GuiButton(40, event.gui.width / 2 - 100, i + 8 * 28, 98, 20, "§7Options") {}); int A = 16; event.buttonList.add(new GuiButton(40, event.gui.width / 2 + 2, i + 8 * 25, 98, 20, "§3Site") { @Override public void mouseReleased(int x, int y) { if (Desktop.isDesktopSupported()) { try { Desktop.getDesktop().browse(new URI("https://www.xerox.fr/")); } catch(IOException e) { e.printStackTrace(); } catch(URISyntaxException e) { e.printStackTrace(); } } } }); int S = 16; event.buttonList.add(new GuiButton(40, event.gui.width / 2 + 2, i + 8 * 28, 98, 20, "§2TeamSpeak") { @Override public void mouseReleased(int x, int y) { if (Desktop.isDesktopSupported()) { try { Desktop.getDesktop().browse(new URI("ts3server://90.113.192.237")); } catch(IOException e) { e.printStackTrace(); } catch(URISyntaxException e) { e.printStackTrace(); } } } }); int D = -16; event.buttonList.add(new GuiButton(40, event.gui.width / 2 - 100, D + 8 * 22, "§e§lRetour au Jeu") { }); int Q = event.gui.height = -16; event.buttonList.add(new GuiButton(40, event.gui.width / 2 - 100, Q + 8 * 34, "§c§lDeconnexion") { }); } }
Voilà SCAREX
J’ai aussi mit a la place de -16, 16 mais marche pas sa modifier juste la position du bouton. -
// Gui @SubscribeEvent public void onInitGuiIngameEvent(InitGuiEvent.Post event) { if(event.gui instanceof GuiIngameMenu) { // on cache les boutons de base for(Object b : event.buttonList) { int buttonId = ((GuiButton)b).id; if(buttonId == 1 || buttonId == 4 || buttonId == 0 || buttonId == 2 || buttonId == 7 || buttonId == 5 || buttonId == 12 || buttonId == 6) // Quand tu commences à en avoir beaucoup l'utilisation d'un bloc switch est conseillée mais sinon ça marche de la même manière c'est juste plus propre { ((GuiButton)b).visible = false; } } int i = -16; event.buttonList.add(new GuiButton(40, event.gui.width / 2 + 2, i + 8 * 31, 98, 20, "§6Votez") {}); int K = -16; // convention java ! K doit être en minuscule, de plus à quoi ça sert de déclarer une nouvelle variable contenant la même chose que i et qui en plus n'est pas utilisée dans ton code, tu peux utiliser i à chaque fois, la variable ne change pas… event.buttonList.add(new GuiButton(40, event.gui.width / 2 - 100, i + 8 * 25, 98, 20, "§5Succes") {}); int E = -16; event.buttonList.add(new GuiButton(40, event.gui.width / 2 - 100, i + 8 * 31, 98, 20, "§bStatistiques") {}); int R = -16; event.buttonList.add(new GuiButton(40, event.gui.width / 2 - 100, i + 8 * 28, 98, 20, "§7Options") {}); int A = 16; event.buttonList.add(new GuiButton(40, event.gui.width / 2 + 2, i + 8 * 25, 98, 20, "§3Site") { @Override public void mouseReleased(int x, int y) { if (Desktop.isDesktopSupported()) { try { Desktop.getDesktop().browse(new URI("https://www.xerox.fr/")); } catch(IOException e) { e.printStackTrace(); } catch(URISyntaxException e) { e.printStackTrace(); } } } }); int S = 16; event.buttonList.add(new GuiButton(40, event.gui.width / 2 + 2, i + 8 * 28, 98, 20, "§2TeamSpeak") { @Override public void mouseReleased(int x, int y) { if (Desktop.isDesktopSupported()) { try { Desktop.getDesktop().browse(new URI("ts3server://90.113.192.237")); } catch(IOException e) { e.printStackTrace(); } catch(URISyntaxException e) { e.printStackTrace(); } } } }); int D = -16; event.buttonList.add(new GuiButton(40, event.gui.width / 2 - 100, D + 8 * 22, "§e§lRetour au Jeu") { }); int Q = event.gui.height = -16; event.buttonList.add(new GuiButton(40, event.gui.width / 2 - 100, Q + 8 * 34, "§c§lDeconnexion") { }); } }
Change tous les ids et mets les à -1 comme ça il n’y aura jamais de problème au niveau des ids
De ce que je vois il n’y a aucun problème, les boutons sont affichés ? Si oui, quand tu cliques sur le bouton du ts ou du site est-ce que le lien s’ouvre ?
PS : Pense à la balise java
-
Merci beaucoup de t’a réponse mais,
Donc oui les bouton sons affichés : http://prntscr.com/bj92i6
Quand je clique sur le bouton ts ou site rien ne s’ouvre et il y a non plus aucun son de cliqueQue se qu’est la balise java ? :c
Merci.
PS:
J’ai fais un test du côte du GuiMainMenu et sa fonctione correctement le lien s’ouvre :cint h = event.gui.height / 4 + 48;
event.buttonList.add(new GuiButton(31, event.gui.width / 2 + 2, h + 24 * 2, 98, 20,“§3Site”){@Override
public void mouseReleased(int x, int y)
{
if (Desktop.isDesktopSupported())
{
try
{
Desktop.getDesktop().browse(new URI(“https://www.*******.net”));
}
catch(IOException e)
{
e.printStackTrace();
}
catch(URISyntaxException e)
{
e.printStackTrace();
}
}
}
});