Launcher perso



  • Bonjour ,

    J'aimerais savoir créer un launcher qui télécharge les dossiers :
    mods
    coremods
    config
    texturepacks
    et le fichier "bin/minecraft.jar"

    et , falcutatif bien sur , l'ajout de bouton dans le menu 🙂

    On me la déjà expliqué mais je n'étais pas dans un état potable x)



  • Salut,
    Pour ce qui est du launcher je ne suis pas tout à fait calé dans le sujet. J'en ai déja fait mais avec l'aide de sources deja existantes.
    Mais pour ce qui est du menu modifié je prévois de faire un tuto d'ici une à deux semaines car je suis en train de m' appronfondir dans le sujet (Créer de nouvelles gui, news en ligne etc. ). Il te servira peut-être.

    Je vais essayer de t'expliquer un minimum ici.

    Voila pour rajouter simplement un bouton dans le menu principal pour faire par exemple une conexion a un serveur ( Attention cela va modifier directement minecraft et le mod ne sera pas reconnu comme tel par forge. Il te faut un environement de modding forge operationnel)

    Rendez-vous dans la classe du menu principal (Minecraft/src/net.minecraft.client.gui/GuiMainMenu)
    Le but est d'ajouter physiquement le bouton et de lui assigner une action.

    1. Ajouter le bouton

    Commence par ajouter dans "public void initGui()":

    this.buttonList.add(new GuiButton(30, this.width / 2 - 100, 206, 62, 20, ("nom du boutton")));
    

    (Le tout est de la forme int par1, int par2, int par3, int par4, int par5, String)

    -30, est l'id de l'action qui servira plus tard
    -this.width / 2 - 100 est le placement horizontal du bouton
    -206 est le placement vertical du boutton (Tu peux comme au-dessus t'aider de this.height pour le guidage en fonction de la taille de ta fenêtre)
    -62 est la largeur du bouton lui-même
    -20 est sa hauteur

    PS : ces valeurs ne sont pas opérationnelle, c'est à toi de trouver les tienne, elles viennent de mes tests.

    1. lui donner une action

    Ajoute dans protected void actionPerformed(GuiButton par1GuiButton) :

    if (par1GuiButton.id == 30)
    {
    this.mc.displayGuiScreen(new GuiConnecting(new GuiMainMenu(), mc, "127.0.0.1", 25565));
    }
    

    Ici on va faire un raccourci vers un serveur. Concrètement cette partie signifie que " si l'id
    30 est reçu, connexion au serveur d'ip 127.0.0.1 de port 25565.

    Voila normalement tout marche. Ce n'est absolument pas un tuto digne de ce nom mais j'espère que cela t'aura aidé ou du moins fais patienter. D'ailleurs si quelqu un pouvant éditer ce message sais faire la mise en forme je lui laisse carte blanche.
    @+



  • Voilou mais j'ai fait comme ceci

    Les boutons (je me suis inspiré des bouton single et multiplayer :

    
    private void addEsc90Buttons(int par1, int par2, StringTranslate par3StringTranslate)
    {
    this.controlList.add(new GuiButton(8, this.width / 2 +2, par1, par3StringTranslate.translateKey("Site")));
    this.controlList.add(new GuiButton(7, this.width / 2 +2, par1 + par2 * 1, par3StringTranslate.translateKey(".:ESC90:.")));
    }
    
    

    Pour la connection au site j'ai choper une methode sur le net :

    
    public static void openWebpage(String urlString) {
    Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null;
    if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
    try {
    Desktop.getDesktop().browse(new URL(urlString).toURI());
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
    
    

    Et pour l'accés au serveur j'ai laisser eclipse corrigé et ca à donné ça :

    
    if (par1GuiButton.id == 7)
    {
    this.mc.displayGuiScreen(new GuiConnecting(mc, "minecraft.esc90.fr", 25566));
    }
    
    

    Dans la connection au serveur a quoi sert la valeur mc?
    Je tourne sous 1.4.7 pour le moment

    Et merci 🙂


  • Administrateurs

    mc est l'instance de Minecraft.java, c'est nécéssaire pour toutes les méthodes de Gui. new GuiMainMenu() est nécéssaire à partir de la 1.5.



  • Je me doutais qu'il y avait un truc du genre


  • Administrateurs

    Pour ton nouveau bouton, (esc:blablabla) tu as fait une nouvelle méthode. Ce n'est pas nécessaire, car là, le code n'est pas optimisé.



  • Je me suis dit que ça pourrait peut-être utile plus tard , ça ne rajoute qu'une ligne dans tout le code , c'est vraiment important?


  • Administrateurs

    Noon, je ne fais que dire que le code est moins optimiser, et cela ne rajoute pas qu'une ligne 😛



  • Beh je le mettrais direct dans la condition alors ^^ je suis pas trop doué en programmation ^^
    Je connais les principe mais a par du lua sur computercraft j'ai pas fait grand chose 😕



  • Le placement du code de définition des boutons fonctionne mais si tu essaie de bien comprendre la classe, tu verras qu´elle contiens pleins de choses inutile comme les spécification pour le changement de menu pour une version d´essaie etc. Par exemple la tu as mis tes bouton dans la partie qui cache ou affiche les boutons solo et multi en fonction du type de version de minecraft.
    ++



  • Oki , donc a la place de ma methode addEsc90Button

    je mais ca :

    /**
    * Adds esc90s button
    */
    
    this.controlList.add(new GuiButton(8, this.width / 2 +2, var4, ("Site")));
    this.controlList.add(new GuiButton(7, this.width / 2 +2, var4 + 24 * 1, (".:ESC90:.")));
    
    

    Dans le guiMainMenu , c'est mieux?



  • du moment qu'elle se trouve dans " initGui() { }" c'est bon.



  • Je m'amuse encore avec les boutons ( en attendant le tuto sur le launcher :p) et j'ai trouvé ce code pour une connection a un ts ,
    Je suppose que si l'on peut se connecter a mumble par une url ca doit fonctionné aussi

    {
    String ipts3 = "ts.ip.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(); } }
    }
    
    

    Et pour ce connecter avec les identifiants minecraft il faut mettre ca dans uri :

    
    URI uri = URI.create("ts3server://"+ ipts3 +"?port="+ portts3 +"&nickname="+ this.mc.session.username)
    
    

    source : http://www.youtube.com/watch?v=W0cjA7LekeU



  • Se message risque d’être inutile mais bon x):
    La je ne pourrai pas t'aidai, sur se genre de chose je suis pas du tout calé la dessus, désolé.
    Mais si j'apprend qu'elle que chose je te tien au courent 😉


  • Administrateurs

    Si personne ne fait de tuto sur la création de launcher, je m'en chargerais peut être 🙂



  • Alors sa c'est cool, merci ^^.
    Car si je veux faire un mod pack sa serai intéressent que je fasse un launcher XD.


  • Administrateurs

    @'elias54':

    Si personne ne fait de tuto sur la création de launcher, je m'en chargerais peut être 🙂

    On bossera dessus ensemble, de toute façon il faut que je refasse le launcher Nanotech avec la 1.6, donc je vais faire une version "public" des sources



  • Merci les copains , Si je peux être utile a quelque-chose



  • @'Bialeck':

    Je m'amuse encore avec les boutons ( en attendant le tuto sur le launcher :p) et j'ai trouvé ce code pour une connection a un ts ,
    Je suppose que si l'on peut se connecter a mumble par une url ca doit fonctionné aussi

    {
    String ipts3 = "ts.ip.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(); } }
    }
    
    

    Et pour ce connecter avec les identifiants minecraft il faut mettre ca dans uri :

    
    URI uri = URI.create("ts3server://"+ ipts3 +"?port="+ portts3 +"&nickname="+ this.mc.session.username)
    
    

    source : http://www.youtube.com/watch?v=W0cjA7LekeU

    Ce code est juste epic.
    Je te conseille de faire un tutoriel dessus, bien expliquer etc…
    Si c'est bien rédigé, tu sera validé tout de suite, car c'est la première fois que je vois un code pour ça.
    Ajoute des exemples d'utilisations autres aussi ( Genre se connecter au serveur TF2 si y'en a un avec steam:// etc.. )



  • Bonne idée,
    Dans ce cas je te propose de le fusionner avec celuit sur lequel je suis en tains de travailler (sur toutes les GUI de type menu etc.) Vu le rapport.
    @+


Log in to reply