Minecraft Forge - Demande d'aide pour les GUI's



  • Bonsoir!

    Après énormément de recherche sur le net, je ne trouve toujours pas le moyen de rajouter des gui personnalisé IG…. 😞

    J'ai tenté de prendre des codes sources du jeu et de les modifier pour que ca se lise avec Forge, mais au bout du compte, je me rend compte que j'écris du code qui ramene a rien.....
    J'ai également cherché chez les anglais, mais je trouve pas grand chose non plus!

    Alors, cette fois, je fais appel a vous car je ne comprend absolument rien à la manière dont fonctionne ses interfaces graphiques....

    Si quelqu'un peut me donner un tuto, en faire un, ou rien que m'expliquer un peu la manière dont ça fonctionne et tout ça, je lui en serai vraiment très reconnaissant! 🙂

    Cordialement,
    RageAgain


  • Administrateurs

    Mauvais section, je déplaces dans la section support pour les moddeurs.

    Tu cherche à faire quoi comme gui ? Un gui sur un container (exemple le coffre, le four) ? Un gui de type menu ?



  • Aah bah voila, j'étais hésitant quant à la section!

    Un gui comme sur le post que j'ai posté ici :
    http://www.minecraftforgefrance.fr/showthread.php?tid=1716

    Ca serait IG, et pas avec une histoire de container et tout ça!
    juste un panel d'administration!


  • Administrateurs

    En effet dans ce cas c'est un gui comme le livre sur lequel on peut écrire, il a juste l'action pour ouvrir ce gui qui va être différent. Ce n'est pas trop compliqué, il faut juste faire une classe extends GuiScreen, simplement en regardant les classes de Minecraft tu devrais comprendre comme ça fonctionne puisque c'est fait de façon assez intuitive.



  • J'ai déjà fais une classe extends de GuiScreen, mais par la suite, je ne sais pas exactement quoi appeler! Je sais par exemple pour le drawscreen, et tout…mais j'avais lu que pour appeler le keyTyped, il fallait utiliser handleKeyboardInput...et là je coince...
    Depuis mon class, je ne peux pas simplement faire ca par exemple ?

    GuiScreen.keyTyped('m', 69);
    

    En faites, vu comme ça, c'est assez logique...je m'en rend compte même en écrivant...mais j'ai quand même encore du mal!

    EDIT: J'ai encore testé hier, et j'arrive même pas a faire apparaitre le GUI....pourtant j'appelle les méthodes correctement d'apres moi......



  • up? 😞


  • Administrateurs

    Si tu veux ouvrir le gui quand on appuie sur une touche ce n'est pas du tout comme ça qu'il faut faire.
    Il faut passer par l'event InputEvent et utiliser la méthode Minecraft.getMinecraft().displayGuiScreen(new GuiBlaBla());
    Il faut aussi créer une touche custom.



  • Bon, je répond vraiment fort tard! Je suis assez chargé ces temps-ci.. 😕

    Donc, là, je capte pas….je fais un event et j'appelle l'event??

    Pourquoi créer une touche custom si mon but est d'appuyer sur un bouton?



  • ALLELUJAAAHHHHH!
    J'ai enfin trouvé un tuto explicant bien comment créer sa propre interface graphique!  :rolleyes:

    Seul soucis encore….comment faire interagir des boutons avec des évenements?
    Et surtout, existe-t-il une liste en francais expliquant bien chaque evenement et comment il s'utilise?


  • Administrateurs

    Blackout a commencer une liste des event ici : http://www.minecraftforgefrance.fr/showthread.php?tid=1814
    Tous les événements s'utilisent de la même façon.

    Pour effectuer des actions lorsque le joueur clic sur le bouton, il faut utiliser la fonction actionPerformed



  • Super!
    Merci beaucoup! 🙂

    Ce code ne fonctionne pas, pourquoi?
    Je veux que lorsqu'il clique sur infos, ca affiche des infos dans le même gui!

    
    @Override
    protected void actionPerformed(GuiButton button){
    switch(button.id)
       {
        case 31:
               fontRendererObj.drawString("Nom du mod: Gui Admin Mod", 350, 70, 0xBFBFBF);
               fontRendererObj.drawString("version: 1.0.0", 320, 80, 0xBFBFBF);
               button.enabled = false;
       }
    
    }
    

    Il m'éxecute bien l'action

    button.enable = false
    

    mais pas les deux autres qui sont juste avant! 😞


  • Administrateurs

    Surement car le draw n'est que exécuté une fraction de seconde. Si tu veux draw du texte il faut le faire dans la fonction drawScreen. Donc ce qu'il faudrait faire, c'est mettre une condition dans la fonction drawScreen en fonction de si oui ou non le bouton est appuyé.



  • Je tente depuis tantot, mais impossible de comprendre comment mettre une condition sur le bouton dans la fonction drawScreen… O.o
    Si tu pouvais un peu m'aider.? 🙂


  • Administrateurs

    if(tonBouton.mousePressed(mc, mouseX, mouseY))
    {
        System.out.println("test");
      fontRendererObj.drawString("Nom du mod: Gui Admin Mod", 350, 70, 0xBFBFBF);
    }
    

    mouseX et mouseY tu les as en argument de la fonction :

    ​    public void drawScreen(int mouseX, int mouseY, float partialRenderTick)
    

    mc c'est l'instance de Minecraft, tu devrais l'avoir normalement puisqu'elle est dans GuiScreen.



  • Et ben, zut….je l'avais fais tantot mais j'avais pas mis le nomDuBouton, mais son id...et ca ma rapporté une erreur!

    Merci beaucoup!

    Je peux enfin mettre en résolu!