Menu de chargement



  • Bonjour , j'ai modifier le guiconnecting pour faire un menu de chargement et quand la bar de chargement est à 100% un menu de terre qui apparais sans se connecter au serveur je voudrais faire connecter au serveur sans logging in pouviez vous m'aidez ??

    Voila un screen du menu je suis passer par guiconnecting :

    Ensuite ca fait ca :

    Et après je veut que sa ce connecte au serveur sans le menu de terre et que le menu en haut se connecte directement au serveur .

    Je suis en forge 1.7.10



  • Peux-tu nous passer ton code afin que nous puissions t'aider ?



  • package fr.minecraftforgefrance.client.custommenu;
    
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.gui.GuiButton;
    import net.minecraft.client.gui.GuiDisconnected;
    import net.minecraft.client.gui.GuiMainMenu;
    import net.minecraft.client.gui.GuiScreen;
    import net.minecraft.client.multiplayer.ServerAddress;
    import net.minecraft.client.multiplayer.ServerData;
    import net.minecraft.client.multiplayer.WorldClient;
    import net.minecraft.client.network.NetHandlerLoginClient;
    import net.minecraft.client.renderer.Tessellator;
    import net.minecraft.network.EnumConnectionState;
    import net.minecraft.network.NetworkManager;
    import net.minecraft.network.handshake.client.C00Handshake;
    import net.minecraft.network.login.client.C00PacketLoginStart;
    import net.minecraft.util.ChatComponentTranslation;
    import net.minecraft.util.ResourceLocation;
    
    import java.net.InetAddress;
    import java.net.UnknownHostException;
    import java.util.concurrent.atomic.AtomicInteger;
    
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    import org.lwjgl.opengl.GL11;
    
    import cpw.mods.fml.client.FMLClientHandler;
    import io.netty.util.concurrent.GenericFutureListener;
    
    public class GuiConnecting extends GuiScreen
    {
    
        private static final AtomicInteger field_146372_a = new AtomicInteger(0);
        private static final Logger logger = LogManager.getLogger();
        private NetworkManager field_146371_g;
        private boolean field_146373_h;
        private final GuiScreen field_146374_i;
        private static final String __OBFID = "CL_00000685";
    private final ResourceLocation backGround = new ResourceLocation("textures/gui/title/chargement.png"); // Chargement = Nom de votre image
    private int updateCounter = 0;
    String chargementText = "§6Chargement§f de la porte …"; // A vous de mettre ce que vous voulez !
    String serverName = "§6Nom"; // A vous de mettre ce que vous voulez !
    String texteHaut = "§6Connexion§7 au serveur ! ..."; // A vous de mettre ce que vous voulez !
    String bfsName = "§7Serveur: Faction"; // A vous de mettre ce que vous voulez !      
       public void initGui()
       {
         this.buttonList.add(new GuiButton(9, this.width - 100, this.height - 30, 60, 20, "Annuler"));
       }
    
       public void updateScreen()
       {
         this.updateCounter += 1;
         if (this.updateCounter == 100) {
           this.mc.displayGuiScreen(new GuiConnecting(this, this.mc, "154.49.211.58", 25565)); // Ip = L'ip du serveur ! Port = Port du serveur.
         }
         if (this.updateCounter >= 101) {
           this.mc.displayGuiScreen(new GuiMainMenu());
         }
       }
    
       public void drawBack()
       {
         GL11.glViewport(0, 0, 256, 256);
         this.mc.getTextureManager().bindTexture(this.backGround);
         GL11.glViewport(0, 0, this.mc.displayWidth, this.mc.displayHeight);
         Tessellator tessellator = Tessellator.instance;
         tessellator.startDrawingQuads();
         GL11.glTexParameteri(3553, 10241, 9729);
         GL11.glTexParameteri(3553, 10240, 9729);
         tessellator.setColorRGBA_F(1.0F, 1.0F, 1.0F, 1.0F);
         int k = this.width;
         int l = this.height;
         tessellator.addVertexWithUV(0.0D, 0.0D, this.zLevel, 0.0D, 0.0D);
         tessellator.addVertexWithUV(0.0D, l, this.zLevel, 0.0D, 1.0D);
         tessellator.addVertexWithUV(k, l, this.zLevel, 1.0D, 1.0D);
         tessellator.addVertexWithUV(k, 0.0D, this.zLevel, 1.0D, 0.0D);
         tessellator.draw();
       }
    
       public void drawScreen(int par1, int par2, float par3)
       {
         drawBack();
    
         drawHorizontalLine(0, this.width, this.height - 47, 1426063360);
         drawHorizontalLine(0, this.width, this.height - 46, 1426063360);
         drawRect(0, this.height - 45, this.width, this.height, 1426063360);
    
         drawRect(this.width / 2 - 101, this.height - 28, this.width / 2 + 101, this.height - 15, 489386);
         drawRect(this.width / 2 - 100, this.height - 27, this.width / 2 + 100, this.height - 16, 2013243904);
    
         drawRect(this.width / 2 - 100, this.height - 27, this.width / 2 - 100 + this.updateCounter * 2, this.height - 16, -1996510720);
    
         drawCenteredString(this.fontRendererObj, this.chargementText, this.width / 2, this.height - 40, 16777215);
    
         String percent = this.updateCounter + "§9%";
         drawCenteredString(this.fontRendererObj, percent, this.width / 2, this.height - 10, 16777215);
    
         drawCenteredString(this.fontRendererObj, this.texteHaut, this.width / 2, 1, -1);
    
         drawString(this.fontRendererObj, this.bfsName, 10, this.height - 30, -1);
    
         drawString(this.fontRendererObj, this.serverName, 10, this.height - 19, -1);
    
         super.drawScreen(par1, par2, par3);
       }
    
        public GuiConnecting(GuiScreen p_i1181_1_, Minecraft p_i1181_2_, ServerData p_i1181_3_)
        {
            this.mc = p_i1181_2_;
            this.field_146374_i = p_i1181_1_;
            ServerAddress serveraddress = ServerAddress.func_78860_a(p_i1181_3_.serverIP);
            p_i1181_2_.loadWorld((WorldClient)null);
            p_i1181_2_.setServerData(p_i1181_3_);
            this.func_146367_a(serveraddress.getIP(), serveraddress.getPort());
        }
    
        public GuiConnecting(GuiScreen p_i1182_1_, Minecraft p_i1182_2_, String p_i1182_3_, int p_i1182_4_)
        {
            this.mc = p_i1182_2_;
            this.field_146374_i = p_i1182_1_;
            p_i1182_2_.loadWorld((WorldClient)null);
            this.func_146367_a(p_i1182_3_, p_i1182_4_);
        }
    
        private void func_146367_a(final String p_146367_1_, final int p_146367_2_)
        {
        //logger.info("Connecting to " + p_146367_1_ + ", " + p_146367_2_);
            (new Thread("Server Connector #" + field_146372_a.incrementAndGet())
            {
                private static final String __OBFID = "CL_00000686";
                public void run()
                {
                    InetAddress inetaddress = null;
    
                    try
                    {
                        if (GuiConnecting.this.field_146373_h)
                        {
                            return;
                        }
    
                        inetaddress = InetAddress.getByName(p_146367_1_);
                     // Alkazia - Protocol Login
                        GuiConnecting.this.field_146371_g = NetworkManager.provideLanClient(inetaddress, p_146367_2_);
                        GuiConnecting.this.field_146371_g.setNetHandler(new NetHandlerLoginClient(GuiConnecting.this.field_146371_g, GuiConnecting.this.mc, GuiConnecting.this.field_146374_i));
                        GuiConnecting.this.field_146371_g.scheduleOutboundPacket(new C00Handshake(66, p_146367_1_, p_146367_2_, EnumConnectionState.LOGIN), new GenericFutureListener[0]);
                        GuiConnecting.this.field_146371_g.scheduleOutboundPacket(new C00PacketLoginStart(GuiConnecting.this.mc.getSession().func_148256_e()), new GenericFutureListener[0]);
                    }
                    catch (UnknownHostException unknownhostexception)
                    {
                        if (GuiConnecting.this.field_146373_h)
                        {
                            return;
                        }
    
                        GuiConnecting.logger.error("Couldn\'t connect to server", unknownhostexception);
                        GuiConnecting.this.mc.displayGuiScreen(new GuiDisconnected(GuiConnecting.this.field_146374_i, "connect.failed", new ChatComponentTranslation("disconnect.genericReason", new Object[] {"Unknown host"})));
    
                }
                }
                }).start();
    
            }
    
        {
    
        }
    
         public void actionPerformed(GuiButton button)
         {
           if (button.id == 9) {
             this.mc.displayGuiScreen(new GuiMainMenu());
           }
         }
        }
    


  • @'Infinite':

    Peux-tu nous passer ton code afin que nous puissions t'aider ?

    Perso j'ai le meme probleme ducoup je vais te passer mon code si tu peut m'aider stp :

    package com.mod.exonia.connection;
    
    import net.minecraft.client.gui.GuiButton;
    import net.minecraft.client.gui.GuiMainMenu;
    import net.minecraft.client.gui.GuiScreen;
    import net.minecraft.client.multiplayer.GuiConnecting;
    import net.minecraft.client.renderer.Tessellator;
    import net.minecraft.util.ResourceLocation;
    
    import org.lwjgl.opengl.GL11;
    
    import com.mod.exonia.Reference;
    
    import cpw.mods.fml.client.FMLClientHandler;
    
    public class GuiLoadingScreen extends GuiScreen
    {
     /**
      * L'image à dessiner en arrière plan.
      */
     private static final ResourceLocation backgroundImage = new ResourceLocation(Reference.MOD_ID + ":textures/gui/fond.png");
     private transient long updateCounter = 0;
    
     /**
      * Le nom du serveur.
      */
     public String serverName = "Exonia !";
    
     /**
      * Étiquette affichée au dessus du nom du serveur.
      */
     public String bfsName = "§fServeur:";
    
     /**
      * Message de chargement.
      */
     public String loading = "§aChargement…";
    
     /**
      * L'ip du serveur auquel il faudra se connecter une fois le chargement
      * terminé.
      */
     public String serverIp = "79.137.115.141";
    
     /**
      * Le port du serveur auquel il faudra se connecter une fois le chargement
      * terminé.
      */
     public int serverPort = 25565;
    
     @Override
     public void initGui()
     {
      this.buttonList.add(new GuiButton(0, this.width - 100, this.height - 30, 60, 20, "Annuler"));
     }
    
     public void drawBack()
     {
      // On bind la texture à afficher.
      this.mc.getTextureManager().bindTexture(backgroundImage);
    
      /**
       * Instance du Tessellator, utilisée pour dessiner le carré de fond.
       */
      Tessellator tessellator = Tessellator.instance;
    
      // On va dessiner un rectangle !
      tessellator.startDrawingQuads();
      GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR);
      GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR);
      tessellator.setColorRGBA_F(1.0F, 1.0F, 1.0F, 1.0F);
    
      // On ajoute les vertices et leurs positions sur la texture.
      {
       tessellator.addVertexWithUV(0, 0, this.zLevel, 0, 0);
       tessellator.addVertexWithUV(0, this.height, this.zLevel, 0, 1);
       tessellator.addVertexWithUV(this.width, this.height, this.zLevel, 1, 1);
       tessellator.addVertexWithUV(this.width, 0, this.zLevel, 1, 0);
       tessellator.draw();
      }
     }
    
     @Override
     public void updateScreen()
     {
      super.updateScreen();
      this.updateCounter++;
    
      //Si le pourcentage est à 100, on se connecte au serveur.
      if (this.updateCounter == 100)
      {
          FMLClientHandler.instance().connectToServerAtStartup(serverIp, serverPort);
      }
    
      // Si la connexion est annulée ou n'a pas fonctionné, on renvoie le joueur au menu principal.
      if (this.updateCounter >= 101)
      {
       this.mc.displayGuiScreen(new GuiMainMenu());
      }
     }
    
     @Override
     public void drawScreen(int par1, int par2, float par3)
     {
      this.drawBack();
    
      drawHorizontalLine(0, this.width, this.height - 47, 0xff000000);
      drawHorizontalLine(0, this.width, this.height - 46, 0xff737373);
      this.drawRect(0, this.height - 45, this.width, this.height, 0xff333333);
      this.drawRect(0, 0, this.width, 20, 0x66000000);
    
      // Barre de progression 
      drawRect(this.width / 2 - 101, this.height - 28, this.width / 2 + 101, this.height - 15, 0xfd8d8d80);
      drawRect(this.width / 2 - 100, this.height - 27, this.width / 2 + 100, this.height - 16, 0xf0000000);
      drawRect(this.width / 2 - 100, this.height - 27, width / 2 - 100 + (int) updateCounter * 2, this.height - 16, 0xf00aa000);
      this.drawCenteredString(this.fontRendererObj, loading, this.width / 2, this.height - 40, 16777215);
    
      // Pourcentage 
      String percent = updateCounter + "%";
      this.drawCenteredString(this.fontRendererObj, percent, this.width / 2, this.height - 10, 16777215);
    
      // Avant nom serveur 
      this.drawString(this.fontRendererObj, bfsName, 10, this.height - 22, -1);
    
      // Nom du serveur 
      this.drawString(this.fontRendererObj, serverName, 10, this.height - 12, -1);
    
      // On ouvre la matrice pour ne pas sauvegarger la mise à l'échelle qu'on va faire.
      GL11.glPushMatrix();
      {
       /**
        * Par combien faut-il multiplier la taille du message de bienvenue.
        */
       float scaleFactor = 2.0f;
    
       // On déplace l'origine jusqu'à l'endroit où l'on veut placer le message.
       this.translateToStringPos("§aBienvenue, §b" + this.mc.getSession().getUsername() + " §a!", scaleFactor, this.width / 2, 1);
    
       // On met à l'échelle selon la variable.
       GL11.glScalef(scaleFactor, scaleFactor, 1.0f);
       this.drawString(fontRendererObj, "§aBienvenue, §b" + this.mc.getSession().getUsername() + " §a!", 0, 0, 0xf0c300);
      }
      // On ferme la matrice.
      GL11.glPopMatrix();
    
      // On dessine les boutons.
      super.drawScreen(par1, par2, par3);
     }
    
     /**
      * Déplace l'origine via {@link GL11#glTranslatef(float, float, float)} pour
      * le placer à l'endroit où doit débuter le dessin de la chaîne de
      * caractères passée en argument.
      * 
      * @param text
      *            Le message à dessiner.
      * @param scale
      *            Le nombre de fois qu'il sera plus grand (ex: si ça vaut 2, le
      *            message sera 2 fois plus haut et 2 fois plus large).
      * @param x
      *            Position X souhaitée (avant appel du glScalef).
      * @param y
      *            Position Y souhaitée (avant appel du glScalef).
      */
     protected void translateToStringPos(String text, float scale, int x, int y)
     {
      float stringWidth = this.fontRendererObj.getStringWidth(text) * scale;
      GL11.glTranslatef(x - (stringWidth / 2f), y, 0.0f);
     }
    
     public void actionPerformed(GuiButton button)
     {
      // Si le joueur appuie sur le bouton annuler, on retourne au menu principal.
      if (button.id == 0)
      {
       this.mc.displayGuiScreen(new GuiMainMenu());
      }
     }}
    


  • Ce que vous faites là est totalement inutile, ou vous ne comprenez pas ce que vous faites.

     //Si le pourcentage est à 100, on se connecte au serveur.
     if (this.updateCounter == 100)
     {
         FMLClientHandler.instance().connectToServerAtStartup(serverIp, serverPort);
     }
    

    Ceci ne va lancer la connexion qu'à la fin de votre chargement (enfin "temps d'attente" est plus adapté), le rendant totalement inutile puisque rien ne se passe à part l'affichage d'une barre de progression sans aucune action derrière.
    Donc il faudrait déjà lancer la connection au DEBUT, quand votre gui est affiché, mais de toute manière on ne peut pas mettre un pourcentage sur un temps de connexion, vu qu'on ne PEUT PAS savoir combien de temps il va durer, ça dépend de la qualité de la connection, de votre propre pc, etc.
    Vous pouvez sinon afficher un gui custom à la place du GuiConnecting affiché quand on se connecte à un serveur, mais ça ne sert à rien de faire une barre de progression.



  • @'AymericRed':

    Ce que vous faites là est totalement inutile, ou vous ne comprenez pas ce que vous faites.

     //Si le pourcentage est à 100, on se connecte au serveur.
     if (this.updateCounter == 100)
     {
         FMLClientHandler.instance().connectToServerAtStartup(serverIp, serverPort);
     }
    

    Ceci ne va lancer la connexion qu'à la fin de votre chargement (enfin "temps d'attente" est plus adapté), le rendant totalement inutile puisque rien ne se passe à part l'affichage d'une barre de progression sans aucune action derrière.
    Donc il faudrait déjà lancer la connection au DEBUT, quand votre gui est affiché, mais de toute manière on ne peut pas mettre un pourcentage sur un temps de connexion, vu qu'on ne PEUT PAS savoir combien de temps il va durer, ça dépend de la qualité de la connection, de votre propre pc, etc.
    Vous pouvez sinon afficher un gui custom à la place du GuiConnecting affiché quand on se connecte à  un serveur, mais ça ne sert à rien de faire une barre de progression.

     //Si le pourcentage est à 100, on se connecte au serveur.
     if (this.updateCounter == 100)
     {
         FMLClientHandler.instance().connectToServerAtStartup(serverIp, serverPort);
     }
    

    je doit mettre sa ou ?



  • @'AymericRed':

    Ce que vous faites là est totalement inutile, ou vous ne comprenez pas ce que vous faites.

     //Si le pourcentage est à 100, on se connecte au serveur.
     if (this.updateCounter == 100)
     {
         FMLClientHandler.instance().connectToServerAtStartup(serverIp, serverPort);
     }
    

    Ceci ne va lancer la connexion qu'à la fin de votre chargement (enfin "temps d'attente" est plus adapté), le rendant totalement inutile puisque rien ne se passe à part l'affichage d'une barre de progression sans aucune action derrière.
    Donc il faudrait déjà lancer la connection au DEBUT, quand votre gui est affiché, mais de toute manière on ne peut pas mettre un pourcentage sur un temps de connexion, vu qu'on ne PEUT PAS savoir combien de temps il va durer, ça dépend de la qualité de la connection, de votre propre pc, etc.
    Vous pouvez sinon afficher un gui custom à la place du GuiConnecting affiché quand on se connecte à  un serveur, mais ça ne sert à rien de faire une barre de progression.

    Bh pourtant octonia ou plutonia je ces plus ces le quel il sont réussi ducoup je peut pas moi ?



  • Tu peux, tout est réalisable. On te dit juste que c'est inutile et que ça n'a aucun sens, Mais comme c'est à la mode sur les servs PvP-Fac, j'imagine qu'il sera difficile de te faire changer d'avis.