• Récent
  • Mots-clés
  • Populaire
  • Utilisateurs
  • Groupes
  • S'inscrire
  • Se connecter
  • S'inscrire
  • Se connecter
  • Recherche
  • Récent
  • Mots-clés
  • Populaire
  • Utilisateurs
  • Groupes

Créer une GUI simple

Les interfaces (GUI) et les container
1.12.2
9
19
4.9k
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.
  • Pchom
    Pchom dernière édition par robin4002 29 nov. 2021, 00:37 5 mai 2018, 18:04

    Sommaire

    • Introduction
    • Pré-requis
    • Code
      • TutorialGui
      • Le Keybind
    • Résultat
    • Crédits

    Introduction

    Vous avez toujours rêvé de faire un mod pour votre petit(e) ami(e) en affichant un joli cœur en plein milieu de l’écran sur un fond noir transparent ? Que c’est mignon !
    Eh bien aujourd’hui, je vais vous apprendre à le faire !

    Pré-requis

    • Ajouter des touches personnalisées (nous allons dans ce tutoriel ouvrir le GUI à l’appui d’une touche)

    Code

    TutorialGui :

    Créez une classe héritant de GuiScreen (net.minecraft.client.gui.GuiScreen), la mienne se nommera TutorialGui.
    Il y a trois méthodes de GuiScreen à connaitre : initGui(), drawScreen(int mouseX, int mouseY, float partialTicks) et updateScreen().

    La première est appelée lors de l’initialisation de la GUI, ce qui est assez évident. Nous ne l’utiliserons pas dans ce tutoriel car nous n’en aurons pas besoin, mais ne l’oubliez pas.
    La seconde est appelée à chaque frame, c’est dans celle-ci que vous mettrez tout ce qui doit être affiché à l’écran. Nous en aurons besoin dans ce tutoriel.
    La dernière est appelée à chaque tick. Nous n’en aurons pas besoin.

    Nous allons donc nous intéresser à la méthode drawScreen, c’est dans celle-ci que nous allons afficher notre image.
    Il est important de bien comprendre les trois arguments pour pouvoir utiliser au mieux la méthode.

    • mouseX est la position de la souris sur l’axe horizontal.
    • mouseY est la position de la souris sur l’axe vertical.
    • partialTicks vous permet de savoir à quel moment du tick vous êtes. Comme vous devez le savoir, il y a 20 ticks par seconde, mais le jeu peut tourner à 60, 120, 1000 fps, ce qui fait que la méthode drawScreen sera peut-être appelée plusieurs fois par tick. Pour avoir une animation fluide, il faut donc savoir à quel moment du tick actuel on est, et partialTicks nous donne cette information.

    On va faire quatre appels dans cette méthode.
    Le premier va être drawDefaultBackground() qui va, comme son nom l’indique, afficher le fond par défaut (un gris foncé transparent). Si vous voulez afficher une couleur différente, vous devrez utiliser this.drawGradientRect(0, 0, this.width, this.height, int startColor, int endColor); en mettant des nombres au format 0xAARRGGBB où AA est la valeur alpha, RR la valeur rouge, GG la valeur verte et BB la valeur bleue.

    Vous allez ensuite devoir créer un ResourceLocation(String domaine, String chemin). Par exemple, avoir comme domaine minecraft et comme chemin textures/items/diamond_pickaxe.png ira chercher dans le dossier resources/assets/minecraft/textures/items/diamond_pickaxe.png. Vous devez ensuite bind cette texture à l’aide de la méthode bindTexture(ResourceLocation) que vous pourrez appeler grâce à la méthode getTextureManager() de Minecraft (GuiScreen possède un attribut mc par défaut).

    Vous devez enfin appeler drawModalRectWithCustomSizedTexture(int x, int y, float u, float v, int width, int height, float textureWidth, float textureHeight) pour afficher votre image sur votre GUI.

    • x, y sont les coordonnées en x et en y sur l’écran de la texture que vous souhaitez afficher.
    • u, v sont les coordonnées de x et en y sur la texture.
    • width et height sont les dimensions de la partie de la texture qui sera affichée.
    • textureWidth et textureHeight sont les dimensions de la texture.

    Pour vous aider à comprendre, voici une explication graphique :

    Attention, si width est supérieur à textureWidth ou que height est supérieur à textureHeight, la texture sera répétée !

    Pour terminer, n’oubliez pas l’appel à super.drawScreen(mouseX, mouseY, partialTicks) !
    Nous en avons terminé avec notre GUI !

    Le Keybind :

    Dans la méthode qui gère l’appui sur la touche que vous voulez attribuer à votre GUI, vous devrez simplement l’afficher. Pour ce faire, vous devez en créer une nouvelle (avec new) et la passer à la méthode getDisplayScreen() de Minecraft.

    Résultat

    Si vous vous êtes bien débrouillé, vous aurez un résultat similaire :

    Crédits

    Rédaction :

    • Pchom

    Correction :

    • DiabolicaTrix

    Autres remerciements :

    • Merci à BrokenSwing pour son aide sur la compréhension de certains arguments :x
    • Merci à robin4002 pour ses corrections ^^


    Ce tutoriel de Minecraft Forge France est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International

    Retour vers le sommaire des tutoriels

    > *Si vous ne pouvez expliquer un concept à un enfant de six ans, c’est que vous ne le comprenez pas c…

    1 réponse Dernière réponse Répondre Citer 4
    • Ciolgaming
      Ciolgaming dernière édition par 11 mars 2019, 19:02

      GG pour le tuto qui est très complet, j’en ai pas besoin mais ça peut être top pour les débutants

      1 réponse Dernière réponse Répondre Citer 0
      • N
        N0tFound_404 dernière édition par 18 avr. 2019, 14:28

        Bonjour le tuto est sur le GitHub ?
        Merci

        1 réponse Dernière réponse Répondre Citer 0
        • robin4002
          robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 18 avr. 2019, 18:41

          Bonsoir,

          Non il n’y a pas de commit github pour ce tutoriel.

          1 réponse Dernière réponse Répondre Citer 0
          • N
            N0tFound_404 dernière édition par 18 avr. 2019, 19:53

            Ok merci

            1 réponse Dernière réponse Répondre Citer 0
            • D
              Driss2003 dernière édition par 19 mai 2019, 21:02

              Pourrai-je avoir un petit exemple car dans ton tuto tu nous montre comment faire en mettant les commandes principales, mais je n’arrives pas a les placer sa me fait une erreur. sa serait tres gentil de votre part

              Si cela ne vous derange pas bien evidemment.

              Rappelle je suis un gros noob poyur le codage ^^

              Merci d’avance ;D

              1 réponse Dernière réponse Répondre Citer 0
              • robin4002
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 19 mai 2019, 21:42

                Salut,

                Peux-tu détailler quel point de cause problème ?

                1 réponse Dernière réponse Répondre Citer 0
                • D
                  Driss2003 dernière édition par 20 mai 2019, 05:05

                  Si tu veux j’ai essayé de de decrypter un peu comment ca marche le GUI simple mais je n’y arrive pas, il me faut un petit exemple (une photo source du codage de Gui simple) si possible, je n’arrive vraiment pas a placer les drawdefaultbackground etc…
                  il me faut le codage de base du GUI Merci.

                  1 réponse Dernière réponse Répondre Citer 0
                  • robin4002
                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par robin4002 20 mai 2019, 08:11 20 mai 2019, 08:11

                    Si tu veux des examples de gui, il y en a sur ce mod que je matiens : https://github.com/kevin68/The-Spotlight-Mod/tree/master/src/fr/mcnanotech/kevin_68/thespotlightmod/client/gui

                    pazzazzo 1 réponse Dernière réponse 29 août 2020, 14:09 Répondre Citer 0
                    • D
                      Driss2003 dernière édition par 20 mai 2019, 12:44

                      Merci beaucoup

                      1 réponse Dernière réponse Répondre Citer 0
                      • N
                        N0tFound_404 dernière édition par N0tFound_404 25 sept. 2019, 18:40 25 sept. 2019, 14:15

                        Bonjour j’aurais besoin d’aide je n’arrive pas a ouvrir mon gui avec un clique droit
                        je me suis aider du book and quill qui lui utilise la méthode playerIn.openBook(itemstack, handIn); donc je pense que je doit me servir de la méthode playerIn.openGui(mod, modGuiId, world, x, y, z); mais je ne comprend pas trop les paramètres et je me demande si il me faut un gui handler merci

                        1 réponse Dernière réponse Répondre Citer 0
                        • robin4002
                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 25 sept. 2019, 19:38

                          Bonsoir,

                          Si tu utilises la fonction openGui de la classe EntityPlayer il faut en effet un gui handler.
                          Ce tutoriel sur la création d’un four parle du fonctionnement du gui handler : https://www.minecraftforgefrance.fr/topic/4114/1-12-créer-un-four

                          1 réponse Dernière réponse Répondre Citer 0
                          • N
                            N0tFound_404 dernière édition par 25 sept. 2019, 20:08

                            Parfait merci pour ta réponse j’avais déjà fouiller un peux mais je n’était pas sur
                            Bonne soirée !

                            1 réponse Dernière réponse Répondre Citer 0
                            • S
                              Sterll dernière édition par 30 juin 2020, 04:03

                              Ce message a été supprimé !
                              1 réponse Dernière réponse Répondre Citer 1
                              • pazzazzo
                                pazzazzo dernière édition par 23 juil. 2020, 07:36

                                je n’ai rien compris, c’est possible de me donner le code exacte SVP

                                Clique sur ^ en bas a droite de de mon message s'il te plait

                                1 réponse Dernière réponse Répondre Citer 1
                                • En0ri4n
                                  En0ri4n dernière édition par 23 juil. 2020, 21:48

                                  Ca ne sert a rien de juste avoir le code, l’essentiel c’est de le comprendre et de savoir comment il marche

                                  Le java c'est comme une boîte de chocolat, on sait jamais sur quoi on va tomber !

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • pazzazzo
                                    pazzazzo dernière édition par 24 juil. 2020, 09:23

                                    @Eno_gamer10 oui mais je comprend rien

                                    Clique sur ^ en bas a droite de de mon message s'il te plait

                                    1 réponse Dernière réponse Répondre Citer 1
                                    • pazzazzo
                                      pazzazzo @robin4002 dernière édition par 29 août 2020, 14:09

                                      @robin4002 oui mais il est tout sauf en 1.12.2

                                      Clique sur ^ en bas a droite de de mon message s'il te plait

                                      1 réponse Dernière réponse Répondre Citer 2
                                      • G
                                        gugus dernière édition par 2 nov. 2022, 20:16

                                        salut, j’ai une question,
                                        je veut appeler mon gui depuis une commande je peut faire avec getDisplayScreen() ou je doit passer par un player.openGui ? et comment je doit le formuler dans ma classe ICommand

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • 1 / 1
                                        7 sur 19
                                        • Premier message
                                          7/19
                                          Dernier message
                                        Design by Woryk
                                        Contact / Mentions Légales

                                        MINECRAFT FORGE FRANCE © 2018

                                        Powered by NodeBB