Problème Gui Main Menu



  • Bonjour alors voilà j'ai créé un menu personnalisé, mais le soucis c'est que j'ai 3 boutons qui ne fontionnent pas, hors avant que je les déplace ils fonctionnaient, les 3 boutons en questions sont: Boutique, Serveur Minefus et Site.
    Voilà un screen de mon menu http://puu.sh/g3odP/2bcf663afa.jpg

    Et le code:

    private void addSingleplayerMultiplayerButtons(int x, int y)
       {
    
        this.buttonList.add(new GuiButton(1, this.width / 2 - 50, x, 98, 20, I18n.format("menu.singleplayer")));
           this.buttonList.add(new GuiButton(2, this.width / 2 - 50, 133 + 0, 98, 20, "PuLse"));
           this.buttonList.add(new GuiButton(20, this.width / 2 - 100, 60 + y * 1, "Serveur Minefus"));
           this.buttonList.add(new GuiButton(25, this.width / 2 - 100, 160 + 0, 200, 20, "Boutique"));
           GuiButton webSiteButton = new GuiButton(21, this.width / 2 - 200, 122 + 0, 98, 20, "Site");
           GuiButton fmlModButton = new GuiButton(6, this.width /  2 - 200, 122 + 0, 98, 20, "Teamspeak");
           fmlModButton.xPosition = this.width / 2 + 100;
           webSiteButton.width = 98;
           fmlModButton.width = 98;
           this.buttonList.add(webSiteButton);
           this.buttonList.add(fmlModButton);
       }
    
       /**
        * Ajoute les boutons de démonstration dans le menu principal pour les joueurs qui jouent Démo .
        */
       private void addDemoButtons(int x, int y)
       {
           this.buttonList.add(new GuiButton(11, this.width / 2 - 100, x, I18n.format("menu.playdemo", new Object[0])));
           this.buttonList.add(this.buttonResetDemo = new GuiButton(12, this.width / 2 - 100, x + y * 1, I18n.format("menu.resetdemo", new Object[0])));
           ISaveFormat isaveformat = this.mc.getSaveLoader();
           WorldInfo worldinfo = isaveformat.getWorldInfo("Demo_World");
    
           if(worldinfo == null)
           {
               this.buttonResetDemo.enabled = false;
           }
       }
    
       protected void actionPerformed(GuiButton button)
       {
           if(button.id == 0)
           {
               this.mc.displayGuiScreen(new GuiOptions(this, this.mc.gameSettings));
           }
    
           if(button.id == 5)
           {
               this.mc.displayGuiScreen(new GuiLanguage(this, this.mc.gameSettings, this.mc.getLanguageManager()));
           }
    
           if(button.id == 1)
           {
               this.mc.displayGuiScreen(new GuiSelectWorld(this));
           }
    
           if(button.id == 2)
           {
            try
               {
                   Class oclass = Class.forName("java.awt.Desktop");
                   Object object = oclass.getMethod("getDesktop", new Class[0]).invoke((Object)null, new Object[0]);
                   oclass.getMethod("browse", new Class[] {URI.class}).invoke(object, new Object[] {new URI("http://pulse-gaming.gg")});
               }
               catch(Throwable throwable)
               {
                   logger.error("Couldn\'t open link", throwable);
               }
           }
    
           if(button.id == 4)
           {
               this.mc.shutdown();
           }
    
           if(button.id == 6)
           {
            String ipts3 = "ts.minefus.fr"; // address serveur ts 3
               int portTs3 = 9987; //port ts 3 celui est par defaut
               URI uri = URI.create("ts3server://"+ ipts3 +"?port="+ portTs3);
               try { Desktop.getDesktop().browse(uri);
               } catch (IOException e) {
                   // TODO Auto-generated catch block e.printStackTrace(); } }
           }
    
           if(button.id == 11)
           {
               this.mc.launchIntegratedServer("Demo_World", "Demo_World", DemoWorldServer.demoWorldSettings);
           }
    
           if(button.id == 12)
           {
               ISaveFormat isaveformat = this.mc.getSaveLoader();
               WorldInfo worldinfo = isaveformat.getWorldInfo("Demo_World");
    
               if(worldinfo != null)
               {
                   GuiYesNo guiyesno = GuiSelectWorld.func_152129_a(this, worldinfo.getWorldName(), 12);
                   this.mc.displayGuiScreen(guiyesno);
               }
           }
    
           if(button.id == 20)
           {
               // TODO pour la connexion au serveur
               FMLClientHandler.instance().connectToServerAtStartup("play.minefus.fr", 25565); // ip, port
           }
    
           if(button.id == 21)
           {
               try
               {
                   Class oclass = Class.forName("java.awt.Desktop");
                   Object object = oclass.getMethod("getDesktop", new Class[0]).invoke((Object)null, new Object[0]);
                   oclass.getMethod("browse", new Class[] {URI.class}).invoke(object, new Object[] {new URI("http://minefus.fr/boutique.php")});
               }
               catch(Throwable throwable)
               {
                   logger.error("Couldn\'t open link", throwable);
               }
    
           }
    
           if(button.id == 25)
            try
           {
               Class oclass = Class.forName("java.awt.Desktop");
               Object object = oclass.getMethod("getDesktop", new Class[0]).invoke((Object)null, new Object[0]);
               oclass.getMethod("browse", new Class[] {URI.class}).invoke(object, new Object[] {new URI("http://minefus.fr")});
           }
           catch(Throwable throwable)
           {
               logger.error("Couldn\'t open link", throwable);
           }
           }
    
       }
    
       public void confirmClicked(boolean p_73878_1_, int id)
       {
           if(p_73878_1_ && id == 12)
           {
               ISaveFormat isaveformat = this.mc.getSaveLoader();
               isaveformat.flushCache();
               isaveformat.deleteWorldDirectory("Demo_World");
               this.mc.displayGuiScreen(this);
           }
           else if(id == 13)
           {
               if(p_73878_1_)
               {
                   try
                   {
                       Class oclass = Class.forName("java.awt.Desktop");
                       Object object = oclass.getMethod("getDesktop", new Class[0]).invoke((Object)null, new Object[0]);
                       oclass.getMethod("browse", new Class[] {URI.class}).invoke(object, new Object[] {new URI(this.field_104024_v)});
                   }
                   catch(Throwable throwable)
                   {
                       logger.error("Couldn\'t open link", throwable);
                   }
               }
    
               this.mc.displayGuiScreen(this);
           }
       }
    

  • Administrateurs

    Pourtant il n'y a pas de raison pour que ça ne fonctionne pas ..
    Tu as quelque chose dans les logs lorsque tu clic dessus ?



  • Non rien dans les logs, ce que je trouve bizarre c'est que quand le clique sur ces boutons j'ai bien le son du clic et le bouton se met bien en bleu.



  • @'Degraduck':

    Non rien dans les logs, ce que je trouve bizarre c'est que quand le clique sur ces boutons j'ai bien le son du clic et le bouton se met bien en bleu.

    C'est tout simplement parce que tu utilises les boutons de base, créer ta propre classe de bouton extends GuiButton et réécris la fonction mousReleased


  • Administrateurs

    Normalement il n'y a pas besoin.
    Si tu mets un System.out.println("coucou"); dans les différentes condition de la fonction actionPerformed, est-ce qui ça s'affiche dans la console ?



  • Je viens de le faire et non pas de retour dans la console.


  • Administrateurs

    Ajoute un @Override au dessus de la méthode actionPerformed ?



  • Vérifies si l id de la condition est bien le même quz lorsque tu as déclaré to  bouton.
    Si tu ne vois pas le "coucou" il ne faut pas chercher a aller plus loin c est juste que le jeu ne rentre pas dabs la condition.



  • Mais ce que je ne comprends pas c'est pourquoi certains boutons fonctionnent? et qu'est ce que tu appels actionPerformed ?



  • Deja changes tes id car quand on regarde tes déclarations et tes conditions car

    1)le bouton boutique a l id 25 alors que dans la condition 25 donne accès a l adresse url du SITE et non de la boutique

    2)Pareil, le bouton site a comme id 21 mais dans la conditions l url donne accès a la boutique il faut changer ça c est une inversion tu n a pas du faire gaffe c est tout

    Si sa ne marche toujours pas changes les id peut être qu il y a une confusion mets des ids supérieur a 30



  • Résolu le probleme c'est qu'ici: ```java
    if(button.id == 6)
    {
    String ipts3 = "ts.minefus.fr"; // address serveur ts 3
    int portTs3 = 9987; //port ts 3 celui est par defaut
    URI uri = URI.create("ts3server://"+ ipts3 +"?port="+ portTs3);
    try { Desktop.getDesktop().browse(uri);
    }

    catch (IOException e) {
    // TODO Auto-generated catch block e.printStackTrace(); } }
    }
    }

    
    J'avais oublier ce que j'ai mis en rouge du coup il se fermait avec un accolade situé a la fin de la classe voila ce qui fesait tout bugguer, enfaite les bouton buggués étaient ceux situés en dessous de celui ci, merci a tous et Julot10085 les ids que tu me donnent n'interfèrent en rien avec le restre.