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.


  • Administrateurs

    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


  • Administrateurs

    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


  • Administrateurs

    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


  • Administrateurs

    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 ?


  • Administrateurs

    @'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


  • Administrateurs

    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 soir

    Sinon 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 clique

    Que 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 :c

    int 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();
                                }
                            }
                        }
                    });


Log in to reply