MFF

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

    Image fixe menu minecraft

    Planifier Épinglé Verrouillé Déplacé Résolu 1.8.x
    1.8
    18 Messages 3 Publieurs 3.7k 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.
    • robin4002R Hors-ligne
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
      dernière édition par

      event.gui.getTextureManager().bindTexture(backGround);
      ->
      Minecraft.getMinecraft().getTextureManager().bindTexture(backGround);

      Pour le Tessellator, en 1.8 c’est WorldRenderer.

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

        @‘robin4002’:

        event.gui.getTextureManager().bindTexture(backGround);
        ->
        Minecraft.getMinecraft().getTextureManager().bindTexture(backGround);

        Pour le Tessellator, en 1.8 c’est WorldRenderer.

        Du coup j’ai remplacé par : WorldRenderer worldRenderer = new WorldRenderer( valeur A mettre);
        A quoi correspond la valeur en paramètre ?

        Sinon la méthode draw n’existe plus, j’ai donc cherché un méthode correspondante et je suis tombé sur ça : startDrawingQuads
        Est ce que c’est bien ce que je cherche ?

        1 réponse Dernière réponse Répondre Citer 0
        • robin4002R Hors-ligne
          robin4002 Moddeurs confirmés Rédacteurs Administrateurs
          dernière édition par

          Il faut faire comme ça :

          Tessellator tessellator = Tessellator.getInstance();
          WorldRenderer worldrenderer = tessellator.getWorldRenderer();
          worldrenderer.startDrawingQuads();
          worldrenderer.addVertexWithUV(0, 0, event.gui.zLevel, 0, 0);
          worldrenderer.addVertexWithUV(0, l, event.gui.zLevel, 0, 1);
          worldrenderer.addVertexWithUV(k, l, event.gui.zLevel, 1, 1);
          worldrenderer.addVertexWithUV(k, 0, event.gui.zLevel, 1, 0);
          tessellator.draw();
          
          1 réponse Dernière réponse Répondre Citer 0
          • S Hors-ligne
            Sebenf0rce
            dernière édition par

            @‘robin4002’:

            Il faut faire comme ça :

            Tessellator tessellator = Tessellator.getInstance();
            WorldRenderer worldrenderer = tessellator.getWorldRenderer();
            worldrenderer.startDrawingQuads();
            worldrenderer.addVertexWithUV(0, 0, event.gui.zLevel, 0, 0);
            worldrenderer.addVertexWithUV(0, l, event.gui.zLevel, 0, 1);
            worldrenderer.addVertexWithUV(k, l, event.gui.zLevel, 1, 1);
            worldrenderer.addVertexWithUV(k, 0, event.gui.zLevel, 1, 0);
            tessellator.draw();
            

            Ah d’accord autant pour moi.
            Dernière petite chose event.gui.zLevel n’est pas reconnu. Dois-je  créer la variable moi même et l’appelé directement ?

            1 réponse Dernière réponse Répondre Citer 0
            • robin4002R Hors-ligne
              robin4002 Moddeurs confirmés Rédacteurs Administrateurs
              dernière édition par

              Remplaces par 0 ou 1 sinon.

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

                @‘robin4002’:

                Remplaces par 0 ou 1 sinon.

                Ok donc je viens de tester et malheuresement le background de base est toujours présent, ou ai-je pu me tromper ?

                Voici mon code :

                public class ClientProxy extends CommonProxy
                {
                
                private final ResourceLocation backGround = new ResourceLocation("menu", "textures/gui/menu.png");
                
                public ClientProxy() {
                // registering the PROXY to use events from MinecraftForge
                MinecraftForge.EVENT_BUS.register(this);
                }
                
                /**
                * Suppression du background
                * @param event
                */
                public void cancelBg(GuiScreenEvent.DrawScreenEvent.Pre event) {
                event.setCanceled(true);
                }
                /**
                * This function is called when the init method of a GuiScreen is called and
                * modify the current buttons and the splash text
                */
                
                @SubscribeEvent
                public void onInitGuiEvent(final InitGuiEvent.Post event) {
                
                if (event.gui instanceof GuiMainMenu) { // On regarde si le gui est bien le menu principal
                
                GL11.glViewport(0, 0, 256, 256);
                Minecraft.getMinecraft().getTextureManager().bindTexture(backGround); 
                       GL11.glDisable(GL11.GL_TEXTURE_2D);
                       GL11.glEnable(GL11.GL_TEXTURE_2D);
                       GL11.glViewport(0, 0, event.gui.width, event.gui.height);
                       Tessellator tessellator = Tessellator.getInstance();
                       WorldRenderer worldrenderer = tessellator.getWorldRenderer();
                       worldrenderer.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);
                
                       int k = event.gui.width;
                       int l = event.gui.height;
                       worldrenderer.addVertexWithUV(0, 0, 1, 0, 0);
                       worldrenderer.addVertexWithUV(0, l, 1, 0, 1);
                       worldrenderer.addVertexWithUV(k, l, 1, 1, 1);
                       worldrenderer.addVertexWithUV(k, 0, 1, 1, 0);
                       tessellator.draw();
                
                1 réponse Dernière réponse Répondre Citer 0
                • Superloup10S Hors-ligne
                  Superloup10 Modérateurs
                  dernière édition par

                  La méthode cancelBg n’est pas reconnu en tant qu’event, car il manque l’annotation @SubscribeEvent

                  Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

                  Je suis un membre apprécié et joueur, j'ai déjà obtenu 17 points de réputation.

                  1 réponse Dernière réponse Répondre Citer 0
                  • robin4002R Hors-ligne
                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                    dernière édition par

                    De plus le rendu doit aussi être fait dans l’event GuiScreenEvent.DrawScreenEvent.Pre.

                    @SubscribeEvent
                    public void cancelBg(GuiScreenEvent.DrawScreenEvent.Pre event)
                    {
                    if (event.gui instanceof GuiMainMenu)
                    {
                    event.setCanceled(true);
                    GL11.glViewport(0, 0, 256, 256);
                    Minecraft.getMinecraft().getTextureManager().bindTexture(backGround);
                    GL11.glDisable(GL11.GL_TEXTURE_2D);
                    GL11.glEnable(GL11.GL_TEXTURE_2D);
                    GL11.glViewport(0, 0, event.gui.width, event.gui.height);
                    Tessellator tessellator = Tessellator.getInstance();
                    WorldRenderer worldrenderer = tessellator.getWorldRenderer();
                    worldrenderer.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);
                    
                    int k = event.gui.width;
                    int l = event.gui.height;
                    worldrenderer.addVertexWithUV(0, 0, 1, 0, 0);
                    worldrenderer.addVertexWithUV(0, l, 1, 0, 1);
                    worldrenderer.addVertexWithUV(k, l, 1, 1, 1);
                    worldrenderer.addVertexWithUV(k, 0, 1, 1, 0);
                    tessellator.draw();
                    
                    List buttonList = ObfuscationReflectionHelper.getPrivateValue(GuiScreen.class, event.gui, "buttonList", "field_146292_n");
                    for(k = 0; k < buttonList.size(); ++k)
                    {
                    ((GuiButton)buttonList.get(k)).drawButton(Minecraft.getMinecraft(), event.mouseX, event.mouseY);
                    }
                    
                    List labelList = ObfuscationReflectionHelper.getPrivateValue(GuiScreen.class, event.gui, "labelList", "field_146293_o");
                    for(k = 0; k < labelList.size(); ++k)
                    {
                    ((GuiLabel)labelList.get(k)).drawLabel(Minecraft.getMinecraft(), event.mouseX, event.mouseY);
                    }
                    }
                    }
                    
                    1 réponse Dernière réponse Répondre Citer 0
                    • S Hors-ligne
                      Sebenf0rce
                      dernière édition par

                      J’ai modifié tout ça, le background est désormais bien cancel par contre j’ai un petit problème au niveau du rendu de mon background.

                      Voici l’affichage obtenu (le background est affiché en tout petit en bas à gauche de l’interface) :

                      1 réponse Dernière réponse Répondre Citer 0
                      • robin4002R Hors-ligne
                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                        dernière édition par

                        Je pense qu’il y a un problème avec la texture ou le code de rendu.

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

                          @‘robin4002’:

                          Je pense qu’il y a un problème avec la texture ou le code de rendu.

                          La texture est bonne je l’ai utilisé dans mon menu en 1.7. Ce que je ne comprends pas c’est que le code aussi, la seule chose changé est l’ajout du WorldRenderer.
                          J’ai essayé de testé différente valeurs à la place du zLevel mais ça ne semble avoir aucun effet sur le rendu.

                          1 réponse Dernière réponse Répondre Citer 0
                          • robin4002R Hors-ligne
                            robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                            dernière édition par

                            Essaies de retirer les lignes suivantes :
                                  GL11.glViewport(0, 0, 256, 256);
                                  GL11.glDisable(GL11.GL_TEXTURE_2D);
                                  GL11.glEnable(GL11.GL_TEXTURE_2D);
                                  GL11.glViewport(0, 0, event.gui.width, event.gui.height);
                                  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);

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

                              @‘robin4002’:

                              Essaies de retirer les lignes suivantes :
                                    GL11.glViewport(0, 0, 256, 256);
                                    GL11.glDisable(GL11.GL_TEXTURE_2D);
                                    GL11.glEnable(GL11.GL_TEXTURE_2D);
                                    GL11.glViewport(0, 0, event.gui.width, event.gui.height);
                                    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);

                              En enlevant ces lignes j’obtiens un écran blanc.
                              Cependant après quelques test j’ai remarqué que c’est cette ligne qui pose problème : GL11.glViewport(0, 0, event.gui.width, event.gui.height);
                              En l’enlevant l’image s’affiche bien mais ne s’adapte pas à l’écran. Ce que je veux dire par là c’est que l’image est affiché avec sa dimension il y a donc des bordure noires.

                              Pourquoi ici (0, 0, event.gui.width, event.gui.height) les coordonnées ne sont pas bien reconnu ? (quand je fais un println de la largeur et de la hauteur ça m’affiche 667 ce qui n’est pas du tout bon)

                              1 réponse Dernière réponse Répondre Citer 0
                              • robin4002R Hors-ligne
                                robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                dernière édition par

                                Le problème vient de la alors.
                                Maintenant il faut comprendre pourquoi les valeurs ne sont pas bonne …
                                Franchement je ne sais pas du tout d’où ça peut venir.

                                Sinon modifies le menu par remplacement de classe (ouvrir un menu custom lorsque le menu de base est ouvert via l’event GuiOpenEvent) ça sera bien plus simple.

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

                                  J’ai opté pour cette solution, c’est moins contraignant, merci pour ton aide 😉

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

                                  MINECRAFT FORGE FRANCE © 2024

                                  Powered by NodeBB