MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    GuiTextField password et exécutant une commande

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    21 Messages 2 Publieurs 3.0k Vues 1 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • P Hors-ligne
      PlayFlop_
      dernière édition par

      @‘Plaigon’:

      Salut, c’est encore moi,
      Alors pour ton premier problème, pourrions nous profiter de ta classe du Gui afin de mieux visualiser tes possibles bloquages, merci 😉

      Deuxièmement, pour ton menu login, peut-être en isolant chaque caractère écrit dans un String puis en les remplaçant après par des étoiles, non ?

      Aha merci a toi de me répondre ! 🙂

      Voila la classe du GUI de ma commande:

      package fr.playflop.extania.client.menu;
      
      import java.util.Map.Entry;
      
      import net.minecraft.client.Minecraft;
      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.client.resources.I18n;
      import net.minecraft.util.EnumChatFormatting;
      import net.minecraft.util.ResourceLocation;
      import org.lwjgl.input.Keyboard;
      import org.lwjgl.opengl.GL11;
      import cpw.mods.fml.client.config.GuiSlider;
      
      public class GuiParticules extends GuiScreen
      {
      private GuiTextField textfield;
      int guiWidth= 250; // Taille du gui (largeur)
      int guiHeight= 250;// Taille du gui (hauteur)
      public void initGui() {
      
      int posX = (this.width - guiWidth) / 2;
      int posY = (this.height - guiHeight) / 2;
      this.textfield = new GuiTextField(this.fontRendererObj, this.width / 2 - 78, this.height / 2 - 75, 150, 20);
             this.buttonList.add(new GuiButton(10, this.width / 2 - 80, this.height / 2 - 45, 155, 20, I18n.format(EnumChatFormatting.GOLD + "Valider")));
      
      textfield.setMaxStringLength(25);
      textfield.setText("");
             this.textfield.setFocused(false);
      
          }
      
      protected void actionPerformed(GuiButton button) {
              switch (button.id) {
                  case 10:
                  String mdp = textfield.getText();
                  //Minecraft.getMinecraft().thePlayer.sendChatMessage("/particlemod " + mdp);
                      this.mc.displayGuiScreen((GuiScreen) null);
                      this.mc.setIngameFocus();
                      break;
      
              }
          }
      @Override                                                               
      public void drawScreen(int x, int y, float ticks )
      {
      int guix =(width - guiWidth) /2 ;
      int guiy =(height - guiHeight) /2;
      
      GL11.glColor4f(1,1,1,1);
      //drawDefaultBackground();
      
      mc.renderEngine.bindTexture(new ResourceLocation("extania:textures/gui/guiparticules.png")); // Le chemin de ton GUI
      
      drawTexturedModalRect(guix, guiy, 0, 0, guiWidth, guiHeight);
      
      //this.drawDefaultBackground();
      
      this.textfield.drawTextBox(); // On met ton textfield ici
      
      super.drawScreen(x, y, ticks);
      }
      @Override
      public boolean doesGuiPauseGame()
      {
      return false;
      }
      protected void keyTyped(char par1, int par2)
          {
              super.keyTyped(par1, par2);
              this.textfield.textboxKeyTyped(par1, par2);
          }
      
      public void updateScreen()
          {
              super.updateScreen();
          }
      protected void mouseClicked(int x, int y, int btn) 
      {
             super.mouseClicked(x, y, btn);
             this.textfield.mouseClicked(x, y, btn);
      }
      
          //Minecraft.getMinecraft().displayGuiScreen(null);
      }
      

      et pour les étoiles j’ai trouvé un code mais je n’arrive pas a l’adapter…

      public void drawTextBox() {
      if (this.getVisible()) {
      if (this.getEnableBackgroundDrawing()) {
      drawRect(this.xPosition - 1, this.yPosition - 1, this.xPosition + this.width + 1, this.yPosition + this.height + 1, -6250336);
      drawRect(this.xPosition, this.yPosition, this.xPosition + this.width, this.yPosition + this.height, -16777216);
      }
      
      int i = this.isEnabled ? this.enabledColor : this.disabledColor;
      int j = this.cursorPosition - this.lineScrollOffset;
      int k = this.selectionEnd - this.lineScrollOffset;
      String s = this.fontRendererInstance.trimStringToWidth(this.text.substring(this.lineScrollOffset), this.getWidth());
      boolean flag = j >= 0 && j <= s.length();
      boolean flag1 = this.isFocused && this.cursorCounter / 6 % 2 == 0 && flag;
      int l = this.enableBackgroundDrawing ? this.xPosition + 4 : this.xPosition;
      int i1 = this.enableBackgroundDrawing ? this.yPosition + (this.height - 8) / 2 : this.yPosition;
      int j1 = l;
      
      if (k > s.length()) {
      k = s.length();
      }
      
      if (s.length() > 0) {
      String s1 = flag ? s.substring(0, j) : s;
      if (s1.matches(".*[a-z].*") || s1.matches(".*[A-Z].*") || s1.matches(".*[0-9].*") || s1.matches(".*[^a-zA-Z0-9].*")) {
      j1 = this.fontRendererInstance.drawStringWithShadow(s1.replaceAll(".", "*"), (float) l, (float) i1, i);
      }
      }
      
      boolean flag2 = this.cursorPosition < this.text.length() || this.text.length() >= this.getMaxStringLength();
      int k1 = j1;
      
      if (!flag) {
      k1 = j > 0 ? l + this.width : l;
      } else if (flag2) {
      k1 = j1 - 1;
      –j1;
      }
      
      if (s.length() > 0 && flag && j < s.length()) {
      if (s.matches(".*[a-z].*") || s.matches(".*[A-Z].*") || s.matches(".*[0-9].*") || s.matches(".*[^a-zA-Z0-9].*")) {
      j1 = this.fontRendererInstance.drawStringWithShadow(s.substring(j).replaceAll(".", "*"), (float) j1, (float) i1, i);
      }
      }
      
      if (flag1) {
      if (flag2) {
      Gui.drawRect(k1, i1 - 1, k1 + 1, i1 + 1 + this.fontRendererInstance.FONT_HEIGHT, -3092272);
      } else {
      this.fontRendererInstance.drawStringWithShadow("_", (float) k1, (float) i1, i);
      }
      }
      
      if (k != j) {
      int l1 = l + this.fontRendererInstance.getStringWidth(s.substring(0, k));
      this.drawCursorVertical(k1, i1 - 1, l1 - 1, i1 + 1 + this.fontRendererInstance.FONT_HEIGHT);
      }
      }
      }
      
      1 réponse Dernière réponse Répondre Citer 0
      • DeletedD Hors-ligne
        Deleted
        dernière édition par

        Pourquoi ta commande ne marche pas, ta ligne 45 semblait bon. La console indique-t-elle quelque chose ?
        Et pour ton second problème, tu peux essayer de créer un GuiTextField custom et d’y override cette fonction que tu nous as montrée.

        PS: Pense aussi à renommer le titre de ce topic car pour le moment, c’est trop implicite. Tu pourrais par exemple mettre: “GuiTextField password et exécutant une commande” 😃

        1 réponse Dernière réponse Répondre Citer 0
        • P Hors-ligne
          PlayFlop_
          dernière édition par

          @‘Plaigon’:

          Pourquoi ta commande ne marche pas, ta ligne 45 semblait bon. La console indique-t-elle quelque chose ?
          Et pour ton second problème, tu peux essayer de créer un GuiTextField custom et d’y override cette fonction que tu nous as montrée.

          PS: Pense aussi à renommer le titre de ce topic car pour le moment, c’est trop implicite. Tu pourrais par exemple mettre: “GuiTextField password et exécutant une commande” 😃

          Le debut fonctionne, sa éxécute bien ma commande 😕
          mais en jeu sa dit invalid command fin le texte de minecraft de base alors que la commande fonctionne, c’est pour sa que je comprend pas

          1 réponse Dernière réponse Répondre Citer 0
          • DeletedD Hors-ligne
            Deleted
            dernière édition par

            Essaie de print ta variable mdp, aucune raison qu’une commande envoyée manuellement par ton chat, ne soit également pas envoyable par sendChatMessage.

            PS: Pense aussi à renommer le titre de ce topic car pour le moment, c’est trop implicite. Tu pourrais par exemple mettre: “GuiTextField password et exécutant une commande”.

            1 réponse Dernière réponse Répondre Citer 0
            • P Hors-ligne
              PlayFlop_
              dernière édition par

              @‘Plaigon’:

              Essaie de print ta variable mdp, aucune raison qu’une commande envoyée manuellement par ton chat, ne soit également pas envoyable par sendChatMessage.

              PS: Pense aussi à renommer le titre de ce topic car pour le moment, c’est trop implicite. Tu pourrais par exemple mettre: “GuiTextField password et exécutant une commande”.

              Comment je fais pour modifier le titre ?

              et print comment sa ?
              Quand je print en débug sa fonctionne

              1 réponse Dernière réponse Répondre Citer 0
              • DeletedD Hors-ligne
                Deleted
                dernière édition par

                En éditant ton poste initial

                1 réponse Dernière réponse Répondre Citer 0
                • P Hors-ligne
                  PlayFlop_
                  dernière édition par

                  @‘Plaigon’:

                  En éditant ton poste initial

                  merci et voila je sais pas comment faire du coup pour ma commande 😕

                  1 réponse Dernière réponse Répondre Citer 0
                  • DeletedD Hors-ligne
                    Deleted
                    dernière édition par

                    Envoie la en brute sans variable mdp dans le sendChatMessage. Si elle fonctionne, alors le problème doit venir de ta variable mdp.

                    1 réponse Dernière réponse Répondre Citer 0
                    • P Hors-ligne
                      PlayFlop_
                      dernière édition par

                      @‘Plaigon’:

                      Envoie la en brute sans variable mdp dans le sendChatMessage. Si elle fonctionne, alors le problème doit venir de ta variable mdp.

                      Voila, sa ne marche pas et sa marque Unknown command. Try /help for a list of commands
                      Alors que ma commande existe bien

                      1 réponse Dernière réponse Répondre Citer 0
                      • DeletedD Hors-ligne
                        Deleted
                        dernière édition par

                        Peut-être que les commandes customs ne marchent pas par sendChatMessage, ça m’étonnerait mais bon. Essaie sinon d’envoyer un packet au serveur afin qu’il s’en charge seul.

                        1 réponse Dernière réponse Répondre Citer 0
                        • P Hors-ligne
                          PlayFlop_
                          dernière édition par

                          @‘Plaigon’:

                          Peut-être que les commandes customs ne marchent pas par sendChatMessage, ça m’étonnerait mais bon. Essaie sinon d’envoyer un packet au serveur afin qu’il s’en charge seul.

                          Mais ça a rien avoir coté serveur enfait…

                          1 réponse Dernière réponse Répondre Citer 0
                          • DeletedD Hors-ligne
                            Deleted
                            dernière édition par

                            Tu n’as pas l’air de comprendre. Remonte la fonction sendChatMessage tout seul pour voir d’où vient l’erreur.

                            1 réponse Dernière réponse Répondre Citer 0
                            • P Hors-ligne
                              PlayFlop_
                              dernière édition par

                              @‘Plaigon’:

                              Tu n’as pas l’air de comprendre. Remonte la fonction sendChatMessage tout seul pour voir d’où vient l’erreur.

                              Mais je ne sais pas comment faire ça moi ^^

                              1 réponse Dernière réponse Répondre Citer 0
                              • P Hors-ligne
                                PlayFlop_
                                dernière édition par

                                Quelqu’un pourrais m’aider pour les étoiles dans mon GuiLogin
                                et faire un KeyPress qui a la meme fonction que mon bouton mais que dans le GUI

                                1 réponse Dernière réponse Répondre Citer 0
                                • DeletedD Hors-ligne
                                  Deleted
                                  dernière édition par

                                  Tu as la fonction keyPressed
                                  Pour les étoiles, je t’ai déjà indiqué comment faire. Un peu d’initiative ne serait pas de refus, tu donnes l’impression de mendier du code 😕

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • P Hors-ligne
                                    PlayFlop_
                                    dernière édition par

                                    @‘Plaigon’:

                                    Tu as la fonction keyPressed
                                    Pour les étoiles, je t’ai déjà indiqué comment faire. Un peu d’initiative ne serait pas de refus, tu donnes l’impression de mendier du code 😕

                                    if(Keyboard.isKeyDown(KeyEvent.VK_ENTER))
                                            {
                                            String mdp = textfield.getText();
                                            Minecraft.getMinecraft().thePlayer.sendChatMessage("/login " + mdp);
                                                this.mc.displayGuiScreen((GuiScreen) null);
                                                this.mc.setIngameFocus();
                                            }
                                    

                                    j’ai fait ça mais sa ne fonctionne pas

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • DeletedD Hors-ligne
                                      Deleted
                                      dernière édition par

                                      Qu’est-ce qui ne fonctionne pas, faut détailler.
                                      Par ailleurs où as-tu mis ce code ? Et on avait déjà conclu au bout d’une quinzaine de messages que sendChatMessage avait du mal avec ta commande, pourquoi le remettre alors?

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • P Hors-ligne
                                        PlayFlop_
                                        dernière édition par

                                        @‘Plaigon’:

                                        Qu’est-ce qui ne fonctionne pas, faut détailler.
                                        Par ailleurs où as-tu mis ce code ? Et on avait déjà conclu au bout d’une quinzaine de messages que sendChatMessage avait du mal avec ta commande, pourquoi le remettre alors?

                                        Ce qui ne fonctionne pas c’est que j’ai l’impression que sa ne détecte pas quand j’appuye sur la touche enter, j’ai mit ce code dans la classe du guilogin c’est un autre gui, la je parle pas du sendChatMessage

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • DeletedD Hors-ligne
                                          Deleted
                                          dernière édition par

                                          Pour détecter l’input d’une touche dans un gui, tu dois te placer dans la fonction keyTyped et te servir du second paramètre de type ont représentant le keyCode de la touché pressée.

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • 1
                                          • 2
                                          • 1 / 2
                                          • Premier message
                                            Dernier message
                                          Design by Woryk
                                          ContactMentions Légales

                                          MINECRAFT FORGE FRANCE © 2024

                                          Powered by NodeBB