MFF

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

    [Blur] Effet de sang si vie faible

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.x
    29 Messages 6 Publieurs 6.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.
    • AmaA Hors-ligne
      Ama
      dernière édition par

      Bonjour à tous !

      Il y a de cela un long moment j’ai demander de l’aide pour ’ Un overlay a la “PumpkinBLur” ’

      J’ai voulu améliorer ce système en utilisant OpenGL et GuiMainMenu pour ses “drawGradientRect”,
      et pouvoir par la suite afficher ce dégradé au teint rouge si le joueur à la vie faible

      le problème c’est que le dégradé est opaque on ne peut rien voir dans le jeu, mais !
      Car il y a toujours un Mais, le tchat est un peu visible et les blocs dans la barre d’action le sont bien (visible)

      Screen:

      Pourtant j’ai essayé beaucoup de méthode de transparence glColor4f fut maintes et maintes fois proposé sur Google, mais rien n’y a fait !

      Je vous passe la classe de l’event qui gère ça !

      :::

      package viruz.zeamateis.event;
      
      import java.awt.Color;
      
      import net.minecraft.client.Minecraft;
      import net.minecraft.client.renderer.Tessellator;
      import net.minecraft.util.ResourceLocation;
      import net.minecraftforge.client.event.RenderGameOverlayEvent;
      import net.minecraftforge.event.ForgeSubscribe;
      
      import org.lwjgl.opengl.GL11;
      
      import cpw.mods.fml.client.FMLClientHandler;
      
      public class OverlayEvent
      {
      float zLevel;
      
         @ForgeSubscribe
         public void onRenderGameOverlay(RenderGameOverlayEvent event)
         {
                 if(FMLClientHandler.instance().getClient().thePlayer.getHealth() < 5)
                 {
                     int width = event.resolution.getScaledWidth();
                     int height = event.resolution.getScaledHeight();
      
                     this.drawGradientRect(0, 0, width, height, 1615855616, -1602211792);
                     this.drawGradientRect(0, 0, width, height, 0, Integer.MIN_VALUE);
                 }
         }
      
         protected void drawGradientRect(int par1, int par2, int par3, int par4, int par5, int par6)
         {
             float f = (float)(par5 >> 24 & 255) / 255.0F;
             float f1 = (float)(par5 >> 16 & 255) / 255.0F;
             float f2 = (float)(par5 >> 8 & 255) / 255.0F;
             float f3 = (float)(par5 & 255) / 255.0F;
             float f4 = (float)(par6 >> 24 & 255) / 255.0F;
             float f5 = (float)(par6 >> 16 & 255) / 255.0F;
             float f6 = (float)(par6 >> 8 & 255) / 255.0F;
             float f7 = (float)(par6 & 255) / 255.0F;
             GL11.glDisable(GL11.GL_TEXTURE_2D);
             GL11.glEnable(GL11.GL_BLEND);
             GL11.glDisable(GL11.GL_ALPHA_TEST);
             GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
             GL11.glShadeModel(GL11.GL_SMOOTH);
             Tessellator tessellator = Tessellator.instance;
             tessellator.startDrawingQuads();
             tessellator.setColorRGBA_F(f1, f2, f3, f);
             tessellator.addVertex((double)par3, (double)par2, (double)this.zLevel);
             tessellator.addVertex((double)par1, (double)par2, (double)this.zLevel);
             tessellator.setColorRGBA_F(f5, f6, f7, f4);
             tessellator.addVertex((double)par1, (double)par4, (double)this.zLevel);
             tessellator.addVertex((double)par3, (double)par4, (double)this.zLevel);
             tessellator.draw();
             GL11.glShadeModel(GL11.GL_FLAT);
             GL11.glDisable(GL11.GL_BLEND);
             GL11.glEnable(GL11.GL_ALPHA_TEST);
             GL11.glEnable(GL11.GL_TEXTURE_2D);
         }
      }
      
      

      :::

      J’espère que quelqu’un à la solution, surtout ceux qui gère bien dans l’OpenGL ou le LWGJL je sais plus !

      Merci !

      Si je t'ai filé un coup de main n'oublie pas le + / -
      Par contre évite les demandes d'aides en MP, tu sera sympa'

      La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

      Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

      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

        Essayes avec RenderGameOverlayEvent.Post ?

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

          Même problème

          Si je t'ai filé un coup de main n'oublie pas le + / -
          Par contre évite les demandes d'aides en MP, tu sera sympa'

          La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

          Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

          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

            Enlève les codes qui concerne le alpha ?
            GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
            GL11.glDisable(GL11.GL_ALPHA_TEST);
            GL11.glEnable(GL11.GL_ALPHA_TEST);

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

              Rien de spécial juste une très légère transparence en haut de jeu

              http://puu.sh/azymJ.png

              Si je t'ai filé un coup de main n'oublie pas le + / -
              Par contre évite les demandes d'aides en MP, tu sera sympa'

              La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

              Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

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

                J’ai tester avec une fonction similaire dans le GuiGameOver mais toujours pareil

                Si je t'ai filé un coup de main n'oublie pas le + / -
                Par contre évite les demandes d'aides en MP, tu sera sympa'

                La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

                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

                  Aucune idée là 😕

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

                    :s Bon je vais voir de mon côté donc


                    Mais j’y pense je peu pas faire ça dans un Gui ? Qui s’affiche si le joueur à la vie basse ?
                    Comment on affiche un gui avec cet event ?

                    Si je t'ai filé un coup de main n'oublie pas le + / -
                    Par contre évite les demandes d'aides en MP, tu sera sympa'

                    La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                    Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

                    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

                      J’utiliserai plutôt le tick du joueur dans ce cas, si ça va vie un faible, tu ouvres un autre gui.

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

                        Mais comment je peux faire pour que je puisse faire en sorte de jouer avec le gui ouvert, car là je peux rien faire, comme si j’ouvrais l’inventaire


                        :::

                        package viruz.zeamateis.gui;
                        
                        import java.util.Iterator;
                        
                        import net.minecraft.client.gui.GuiButton;
                        import net.minecraft.client.gui.GuiMainMenu;
                        import net.minecraft.client.gui.GuiScreen;
                        import net.minecraft.client.multiplayer.WorldClient;
                        import net.minecraft.client.resources.I18n;
                        import net.minecraft.util.EnumChatFormatting;
                        
                        import org.lwjgl.opengl.GL11;
                        
                        import cpw.mods.fml.relauncher.Side;
                        import cpw.mods.fml.relauncher.SideOnly;
                        
                        @SideOnly(Side.CLIENT)
                        public class GuiBloodEffect extends GuiScreen
                        {
                        
                        /**
                        * Adds the buttons (and other controls) to the screen in question.
                        */
                        public void initGui() {}
                        
                        /**
                        * Fired when a key is typed. This is the equivalent of KeyListener.keyTyped(KeyEvent e).
                        */
                        protected void keyTyped(char par1, int par2) {}
                        
                        /**
                        * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
                        */
                        protected void actionPerformed(GuiButton par1GuiButton) {}
                        
                        /**
                        * Draws the screen and all the components in it.
                        */
                        public void drawScreen(int par1, int par2, float par3)
                        {
                        this.drawGradientRect(0, 0, this.width, this.height, 1615855616, -1602211792);
                        super.drawScreen(par1, par2, par3);
                        }
                        
                        /**
                        * Returns true if this GUI should pause the game when it is displayed in single-player
                        */
                        public boolean doesGuiPauseGame()
                        {
                        return false;
                        }
                        
                        /**
                        * Called from the main game loop to update the screen.
                        */
                        public void updateScreen() {}
                        }
                        
                        

                        :::

                        Si je t'ai filé un coup de main n'oublie pas le + / -
                        Par contre évite les demandes d'aides en MP, tu sera sympa'

                        La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                        Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

                        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

                          Ah oui merde, aucune idée, donc ouvrir un nouveau gui c’est pas bon non plus 😕

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

                            je vais faire différents tests avec différentes image comme le pumkinBlur.png


                            Mais du coup j’ai un bug là aussi –’

                            :::

                            package viruz.zeamateis.event;
                            
                            import net.minecraft.client.renderer.Tessellator;
                            import net.minecraft.util.ResourceLocation;
                            import net.minecraftforge.client.event.RenderGameOverlayEvent;
                            import net.minecraftforge.event.ForgeSubscribe;
                            
                            import org.lwjgl.opengl.GL11;
                            
                            import cpw.mods.fml.client.FMLClientHandler;
                            
                            public class OverlayEvent
                            {
                            private ResourceLocation liteBloodEffect = new ResourceLocation("viruz:textures/gui/" + "liteBloodEffect" + ".png");
                            
                            @ForgeSubscribe
                            public void playerLowLifeRendering(RenderGameOverlayEvent.Post event)
                            {
                            if(FMLClientHandler.instance().getClient().thePlayer.getHealth() < 5)
                            {
                            int k = event.resolution.getScaledWidth();
                            int l = event.resolution.getScaledHeight();
                            GL11.glDisable(GL11.GL_DEPTH_TEST);
                            GL11.glDepthMask(false);
                            GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
                            GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
                            GL11.glDisable(GL11.GL_ALPHA_TEST);
                            FMLClientHandler.instance().getClient().renderEngine.bindTexture(liteBloodEffect);
                            Tessellator tessellator = Tessellator.instance;
                            tessellator.startDrawingQuads();
                            tessellator.addVertexWithUV(0.0D, (double)l, -90.0D, 0.0D, 1.0D);
                            tessellator.addVertexWithUV((double)k, (double)l, -90.0D, 1.0D, 1.0D);
                            tessellator.addVertexWithUV((double)k, 0.0D, -90.0D, 1.0D, 0.0D);
                            tessellator.addVertexWithUV(0.0D, 0.0D, -90.0D, 0.0D, 0.0D);
                            tessellator.draw();
                            GL11.glDepthMask(true);
                            GL11.glEnable(GL11.GL_DEPTH_TEST);
                            GL11.glEnable(GL11.GL_ALPHA_TEST);
                            GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
                            }
                            }
                            }
                            

                            :::

                            J’ai pas de crash mais j’ai une image horrible ça gère même pas la transparence rien pourtant c’est du .png

                            Si je t'ai filé un coup de main n'oublie pas le + / -
                            Par contre évite les demandes d'aides en MP, tu sera sympa'

                            La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                            Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

                            1 réponse Dernière réponse Répondre Citer 0
                            • RedRelayR Hors-ligne
                              RedRelay Moddeurs confirmés
                              dernière édition par

                              As-tu essayé de faire une image de 256*256 ou tu gères la transparence avec un effet vignette ?

                              –------------------------------------------------------------------------------------
                              Si tu trouves mon intervention pertinente, n'hésite pas a m…

                              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

                                GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
                                ->
                                GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.8F);
                                ?

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

                                  Salut !!

                                  Pour répondre a ton pb en gros minecraft ne gére pas le gui de se type donc pour que ton joueur continu de marché et touts il vas falloir que tu redéfinisse touts les mouvements (sur terre et sous l’eau).

                                  Et si tu veut normalement tu a pas trop besoin de .png mais je ne sais plus comment ont fais.

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

                                    Oula !

                                    Je vais test toutes vos réponses !


                                    Alors

                                    Le 0.8F ne fait rien
                                    Oui mon image est en 256x256 mais rien n’y fait

                                    :S

                                    Si je t'ai filé un coup de main n'oublie pas le + / -
                                    Par contre évite les demandes d'aides en MP, tu sera sympa'

                                    La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                                    Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

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

                                      @‘sisidney’:

                                      Salut !!

                                      Pour répondre a ton pb en gros minecraft ne gére pas le gui de se type donc pour que ton joueur continu de marché et touts il vas falloir que tu redéfinisse touts les mouvements (sur terre et sous l’eau).

                                      Et si tu veut normalement tu a pas trop besoin de .png mais je ne sais plus comment ont fais.

                                      Faux.
                                      Il a utiliser le RenderGameOverlay event qui est appelé dans GuiIngame (du moins, sa copie de Forge (net.minecraftforge.client.event.GuiIngameForge) ), or, GuiIngame n’est pas un gui comme les autres, il est directement dans le jeu et tous les mouvements ont déjà été définis avec ce gui. Il faut redéfinir les mouvement s’il créer un nouveau gui.

                                      Pour la réponse :
                                      Déjà, recherche où RenderGameOverlayEvent est appelé pour regarder si tu n’as pas des fonctions OpenGL ou des condition à appeler, dans ce cas, t’en a aucun à part si tu veux empêcher l’affichage de ton blur à la 3eme personne (comme pour la citrouille).
                                      Le blur est appelé dans “renderHelmet” de GuiIngameForge. Comme tu l’as remarqué, la fonction pre(ElementType e) est appelé à chaque début de fonction et post(ElementType e) à chaque fin. Pour commencer, check dans ton event si l’ElementType correspond à HELMET.

                                      if(RenderGameOverlayEvent.ElementType == RenderGameOverlayEvent.ElementType.HELMET)
                                      

                                      Ensuite, fait appel à ton blur.
                                      Pour ton event tu dois soit utiliser RenderGameOverlayEvent.Pre soit RenderGameOverlayEvent.Post, dans les deux cas, ça ne change rien pour toi 😉
                                      Ta fonction pour afficher ton image en blur doit être un copie de la fonction du blur de la citrouille. (Pour k et l laisse-les, c’est bien ça ;)) (En fait, j’ai vu qu’il te manque OpenGlHelper.glBlendFunc(770, 771, 1, 0); à ton code (après j’ai pas regardé plus bas) ).
                                      Voilà 😉

                                      1 réponse Dernière réponse Répondre Citer 1
                                      • AmaA Hors-ligne
                                        Ama
                                        dernière édition par

                                        Hummm, il me demande de créer la fonction glBlendFunc

                                        Elle existe pas apparemment

                                        Si je t'ai filé un coup de main n'oublie pas le + / -
                                        Par contre évite les demandes d'aides en MP, tu sera sympa'

                                        La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                                        Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

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

                                          Elle a un autre nom sans doute, t’es en quelle version ?

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

                                            Il est en 1.6.4 mais je croix que cette fonction existe pas en 1.6 😕

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

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB