MFF

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

    Problème affichage texture

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.6.4
    10 Messages 3 Publieurs 2.9k 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.
    • J Hors-ligne
      jesuismoi
      dernière édition par

      Bonjour,

      J’ai un soucis avec l’affichage d’une texture sur l’écran de jeu, en effet les couleurs ne sont pas correct.
      Voici à quoi ressemble la texture :

      et le rendu que j’ai :

      Voici le code que j’utilise :

      %(#000000)[ @SideOnly(Side.CLIENT)
      public void drawNewElement(RenderGameOverlayEvent.Post event) {
      
      Minecraft mc = Minecraft.getMinecraft();
      Utilitaire utilitaire = new Utilitaire(mc);
      
             ScaledResolution scaledresolution = new ScaledResolution(mc.gameSettings, mc.displayWidth, mc.displayHeight);
      int k = scaledresolution.getScaledWidth();
             int l = scaledresolution.getScaledHeight();
      
             GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
             GL11.glEnable (GL11.GL_BLEND);
             mc.getTextureManager().bindTexture(guiCustom);
      
             //affichage de la hotbar
             InventoryPlayer inventoryplayer = mc.thePlayer.inventory;
             this.zLevel = -90.0F;
             this.drawTexturedModalRect(k / 2-112, l - 22, 0, 102, 235, 22);
      
             //affichage des item
             for (int i1 = 0; i1 < 9; ++i1)
             {
                 int j1 = k / 2 - 72 + i1 * 20 + 2;
                 int k1 = l - 16 - 3;
                 this.renderInventorySlot(i1, j1, k1, 0.6F, mc);
             }
             RenderHelper.disableStandardItemLighting();
             GL11.glDisable(GL12.GL_RESCALE_NORMAL);
             this.mc.mcProfiler.endSection();
      
             mc.getTextureManager().bindTexture(guiCustom);
      
             //affichage curseur sélection
             this.drawTexturedModalRect(k / 2 - 64 - 1 + inventoryplayer.currentItem * 20, l - 4 - 1, 23, 57, 9, 4);      
      }]
      

      Avez vous une idée ?

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

        Salut,
        Sans la boucle for en dessous de //affichage des item ça donne quoi ?

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

          @‘robin4002’:

          Salut,
          Sans la boucle for en dessous de         //affichage des item ça donne quoi ?

          Pareil 😞

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

            Alors il y a plusieurs problèmes, déjà ce code est appelé plusieurs fois à chaque draw de la fenêtre, il est tout le temps appelé que ce soit au moment de la vie, de la croix pour viser, ou de la hotbar, ensuite tu ne cancel pas l’event vanilla et tu as à la fin “this.mc.mcProfiler.endSection();” mais aucun code qui commence une section au début, donc retire ça.
            Ensuite pour le problème que tu as essaye de mettre “RenderHelper.enableStandardItemLighting();” avant le premier bind de texture.

            Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk

            Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

            AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

            Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
            Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

              @‘AymericRed’:

              Alors il y a plusieurs problèmes, déjà ce code est appelé plusieurs fois à chaque draw de la fenêtre, il est tout le temps appelé que ce soit au moment de la vie, de la croix pour viser, ou de la hotbar, ensuite tu ne cancel pas l’event vanilla et tu as à la fin “this.mc.mcProfiler.endSection();” mais aucun code qui commence une section au début, donc retire ça.
              Ensuite pour le problème que tu as essaye de mettre “RenderHelper.enableStandardItemLighting();” avant le premier bind de texture.

              Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk

              Je cancel les event juste au dessus :

              public void clean(RenderGameOverlayEvent.Pre event) {
              Minecraft mc = Minecraft.getMinecraft();
              if (event.type == RenderGameOverlayEvent.ElementType.ARMOR) {
              //on efface ?
              event.setCanceled(true);
              }
              if(event.type == RenderGameOverlayEvent.ElementType.EXPERIENCE) {
              event.setCanceled(true);
              }
              if(event.type == RenderGameOverlayEvent.ElementType.FOOD) {
              event.setCanceled(true);
              }
              if(event.type == RenderGameOverlayEvent.ElementType.HEALTH) {
              event.setCanceled(true);
              }
              if(event.type == RenderGameOverlayEvent.ElementType.HOTBAR) {
              event.setCanceled(true);
              }
              
              }
              

              Pour l’appel à chaque draw de la fenêtre je vois pas trop comment faire car quand je rajoute par exemple “if(event.type == RenderGameOverlayEvent.ElementType.HOTBAR)” mes éléments ne s’affichent plus.

              Pour “RenderHelper.enableStandardItemLighting();” il n’y a aucun changement 😞

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

                Ah d’accord ^^
                Bah du coup c’est pas un problème comme tu cancel tout c’est pas draw à chaque fois, mais sinon le if(c’est la hotbar) marche pas comme il est cancel juste avant.

                Essaye de mettre cela (RenderHelper.enableStandardItemLighting();) juste avant le for pour voir, sinon je comparerais avec mon code demain si toujours pas résolu 🙂

                Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk

                Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                  @‘AymericRed’:

                  Ah d’accord ^^
                  Bah du coup c’est pas un problème comme tu cancel tout c’est pas draw à chaque fois, mais sinon le if(c’est la hotbar) marche pas comme il est cancel juste avant.

                  Essaye de mettre cela (RenderHelper.enableStandardItemLighting();) juste avant le for pour voir, sinon je comparerais avec mon code demain si toujours pas résolu 🙂

                  Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk

                  Quand je le mets avant le for c’est toujours pareil. Mais même quand j’enlève totalement ce qui est dans le for la texture de la hotbar s’affiche avec les carrés noirs.

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

                    Alors selon mon code et celui de Minecraft, voici la structure de code pour le rendu d’une hotbar :

                           GL11.glEnable(GL11.GL_BLEND);
                           GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
                           GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
                    
                           InventoryPlayer inv = mc.thePlayer.inventory;
                    //Rendu de l'image de la hotbar
                    
                           GL11.glDisable(GL11.GL_BLEND);
                           GL11.glEnable(GL12.GL_RESCALE_NORMAL);
                           RenderHelper.enableGUIStandardItemLighting();
                    
                    //Rendu des items dans les slots (le for)
                    
                           RenderHelper.disableStandardItemLighting();
                           GL11.glDisable(GL12.GL_RESCALE_NORMAL);
                    

                    Il fallait donc bien utiliser le RenderHelper sauf que je t’ai donné “RenderHelper.enableStandardItemLighting();” au lieu de “RenderHelper.enableGUIStandardItemLighting();” mais il y aussi des fonctions de blend qui peuvent améliorer le rendu.

                    Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                    AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                    Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                    Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                      @‘AymericRed’:

                      Alors selon mon code et celui de Minecraft, voici la structure de code pour le rendu d’une hotbar :

                             GL11.glEnable(GL11.GL_BLEND);
                             GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
                             GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
                      
                             InventoryPlayer inv = mc.thePlayer.inventory;
                      //Rendu de l'image de la hotbar
                      
                             GL11.glDisable(GL11.GL_BLEND);
                             GL11.glEnable(GL12.GL_RESCALE_NORMAL);
                             RenderHelper.enableGUIStandardItemLighting();
                      
                      //Rendu des items dans les slots (le for)
                      
                             RenderHelper.disableStandardItemLighting();
                             GL11.glDisable(GL12.GL_RESCALE_NORMAL);
                      

                      Il fallait donc bien utiliser le RenderHelper sauf que je t’ai donné “RenderHelper.enableStandardItemLighting();” au lieu de “RenderHelper.enableGUIStandardItemLighting();” mais il y aussi des fonctions de blend qui peuvent améliorer le rendu.

                      Salut, merci pour ta réponse mais j’ai fait exactement ce que tu as dis mais j’ai toujours le même problème 😞

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

                        up, personne n’a la solution ?

                        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