MFF

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

    InGameMenu

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.x
    12 Messages 5 Publieurs 3.5k 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.
    • S Hors-ligne
      SquizzCraft
      dernière édition par

      Bon voilà en fait, j’aimerais mettre un aperçu du joueur comme ceci :

      Mais je ne trouve pas la solution à part des tutos de Minecraft 1.3 qui ne fonctionnent pas vraiment ^^’

      De même pour pouvoir entrer une commande en jeu comme un /time set 0 sur un bouton avec ce genre de code:

      case 7:
      {
      Desktop desktop = null;
      try
      {
      URI url = new URI("http://lesite.com/");
      if(Desktop.isDesktopSupported())
      {
      desktop = Desktop.getDesktop();
      desktop.browse(url);
      }
      }
      catch(Exception ex)
      {}
      }
      

      Ici, ça n’a rien à voir avec une commande en jeu mais pour un site, mais voilà où je veux en venir pour le bouton de commande en jeu !

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

        Tu utilises l’event “RenderGameOverlayEvent”

        Puis tu vas chercher dans GuiInventory la fonction et sa déclaration qui permettent d’afficher le joueur dans l’inventaire,
         tu met toussa’ dans ton évent tu fais les appels qu’ il faut et TA DA ! Le tour est joué !

        Si t’a pas tout compris c’est normal, je te met sur la piste !

        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
        • S Hors-ligne
          SquizzCraft
          dernière édition par

          @‘ZeAmateis’:

          Tu utilises l’event “RenderGameOverlayEvent”

          Puis tu vas chercher dans GuiInventory la fonction et sa déclaration qui permettent d’afficher le joueur dans l’inventaire,
           tu met toussa’ dans ton évent tu fais les appels qu’ il faut et TA DA ! Le tour est joué !

          Si t’a pas tout compris c’est normal, je te met sur la piste !

          Salut! Tout d’abord, merci de ta réponse, et aussi, c’est bien de mettre sur des pistes, ça permet d’apprendre ^^’ Bref, j’ai donc ajouter ça :

          @SubscribeEvent
          
          public void renderGameOverlay(RenderGameOverlayEvent event) {
          }
          
          public static void func_147046_a(int p_147046_0_, int p_147046_1_, int p_147046_2_, float p_147046_3_, float p_147046_4_, EntityLivingBase p_147046_5_)
          {
          GL11.glEnable(GL11.GL_COLOR_MATERIAL);
          GL11.glPushMatrix();
          GL11.glTranslatef((float)p_147046_0_, (float)p_147046_1_, 50.0F);
          GL11.glScalef((float)(-p_147046_2_), (float)p_147046_2_, (float)p_147046_2_);
          GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
          float var6 = p_147046_5_.renderYawOffset;
          float var7 = p_147046_5_.rotationYaw;
          float var8 = p_147046_5_.rotationPitch;
          float var9 = p_147046_5_.prevRotationYawHead;
          float var10 = p_147046_5_.rotationYawHead;
          GL11.glRotatef(135.0F, 0.0F, 1.0F, 0.0F);
          RenderHelper.enableStandardItemLighting();
          GL11.glRotatef(-135.0F, 0.0F, 1.0F, 0.0F);
          GL11.glRotatef(-((float)Math.atan((double)(p_147046_4_ / 40.0F))) * 20.0F, 1.0F, 0.0F, 0.0F);
          p_147046_5_.renderYawOffset = (float)Math.atan((double)(p_147046_3_ / 40.0F)) * 20.0F;
          p_147046_5_.rotationYaw = (float)Math.atan((double)(p_147046_3_ / 40.0F)) * 40.0F;
          p_147046_5_.rotationPitch = -((float)Math.atan((double)(p_147046_4_ / 40.0F))) * 20.0F;
          p_147046_5_.rotationYawHead = p_147046_5_.rotationYaw;
          p_147046_5_.prevRotationYawHead = p_147046_5_.rotationYaw;
          GL11.glTranslatef(0.0F, p_147046_5_.yOffset, 0.0F);
          RenderManager.instance.playerViewY = 180.0F;
          p_147046_5_.renderYawOffset = var6;
          p_147046_5_.rotationYaw = var7;
          p_147046_5_.rotationPitch = var8;
          p_147046_5_.prevRotationYawHead = var9;
          p_147046_5_.rotationYawHead = var10;
          GL11.glPopMatrix();
          RenderHelper.disableStandardItemLighting();
          GL11.glDisable(GL12.GL_RESCALE_NORMAL);
          OpenGlHelper.setActiveTexture(OpenGlHelper.lightmapTexUnit);
          GL11.glDisable(GL11.GL_TEXTURE_2D);
          OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit);
          }
          
          }
          
          

          Désoler d’être aussi nul là mais je ne vois vraiment pas ^^’

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

            Je pense que le initGuiEvent est mieux, à mon avis.

            Site web contenant mes scripts : http://SCAREXgaming.github.io

            Pas de demandes de support par MP ni par skype SVP.
            Je n'accepte sur skype que l…

            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

              Non, puisqu’il ne peux pas toucher au classe de mc.
              Pour avoir l’instance du joueur tu peux utiliser Minecraft.getMinecraft().thePlayer comme ce code s’exécute côté client.

              Il te suffit d’appeler la fonction que tu as copié avec les coordonnés et l’instance du joueur et ça devrait être bon, j’ai quand même un doute car je ne suis pas sûr que la fonction que tu as copié et la bonne.

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

                @‘robin4002’:

                Non, puisqu’il ne peux pas toucher au classe de mc.
                Pour avoir l’instance du joueur tu peux utiliser Minecraft.getMinecraft().thePlayer comme ce code s’exécute côté client.

                Il te suffit d’appeler la fonction que tu as copié avec les coordonnés et l’instance du joueur et ça devrait être bon, j’ai quand même un doute car je ne suis pas sûr que la fonction que tu as copié et la bonne.

                Ben en fait, je pense que ça ne peut être que là dedans car avant c’est des boucles pour l’affichage et l’ajout de quelques boutons de base :```
                /**

                • Draws the screen and all the components in it.
                  */
                  public void drawScreen(int par1, int par2, float par3)
                  {
                  super.drawScreen(par1, par2, par3);
                  this.field_147048_u = (float)par1;
                  this.field_147047_v = (float)par2;
                  }

                protected void func_146976_a(float p_146976_1_, int p_146976_2_, int p_146976_3_)
                {
                GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
                this.mc.getTextureManager().bindTexture(field_147001_a);
                int var4 = this.field_147003_i;
                int var5 = this.field_147009_r;
                this.drawTexturedModalRect(var4, var5, 0, 0, this.field_146999_f, this.field_147000_g);
                func_147046_a(var4 + 51, var5 + 75, 30, (float)(var4 + 51) - this.field_147048_u, (float)(var5 + 75 - 50) - this.field_147047_v, this.mc.thePlayer);
                }

                public static void func_147046_a(int p_147046_0_, int p_147046_1_, int p_147046_2_, float p_147046_3_, float p_147046_4_, EntityLivingBase p_147046_5_)
                {
                GL11.glEnable(GL11.GL_COLOR_MATERIAL);
                GL11.glPushMatrix();
                GL11.glTranslatef((float)p_147046_0_, (float)p_147046_1_, 50.0F);
                GL11.glScalef((float)(-p_147046_2_), (float)p_147046_2_, (float)p_147046_2_);
                GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
                float var6 = p_147046_5_.renderYawOffset;
                float var7 = p_147046_5_.rotationYaw;
                float var8 = p_147046_5_.rotationPitch;
                float var9 = p_147046_5_.prevRotationYawHead;
                float var10 = p_147046_5_.rotationYawHead;
                GL11.glRotatef(135.0F, 0.0F, 1.0F, 0.0F);
                RenderHelper.enableStandardItemLighting();
                GL11.glRotatef(-135.0F, 0.0F, 1.0F, 0.0F);
                GL11.glRotatef(-((float)Math.atan((double)(p_147046_4_ / 40.0F))) * 20.0F, 1.0F, 0.0F, 0.0F);
                p_147046_5_.renderYawOffset = (float)Math.atan((double)(p_147046_3_ / 40.0F)) * 20.0F;
                p_147046_5_.rotationYaw = (float)Math.atan((double)(p_147046_3_ / 40.0F)) * 40.0F;
                p_147046_5_.rotationPitch = -((float)Math.atan((double)(p_147046_4_ / 40.0F))) * 20.0F;
                p_147046_5_.rotationYawHead = p_147046_5_.rotationYaw;
                p_147046_5_.prevRotationYawHead = p_147046_5_.rotationYaw;
                GL11.glTranslatef(0.0F, p_147046_5_.yOffset, 0.0F);
                RenderManager.instance.playerViewY = 180.0F;
                RenderManager.instance.func_147940_a(p_147046_5_, 0.0D, 0.0D, 0.0D, 0.0F, 1.0F);
                p_147046_5_.renderYawOffset = var6;
                p_147046_5_.rotationYaw = var7;
                p_147046_5_.rotationPitch = var8;
                p_147046_5_.prevRotationYawHead = var9;
                p_147046_5_.rotationYawHead = var10;
                GL11.glPopMatrix();
                RenderHelper.disableStandardItemLighting();
                GL11.glDisable(GL12.GL_RESCALE_NORMAL);
                OpenGlHelper.setActiveTexture(OpenGlHelper.lightmapTexUnit);
                GL11.glDisable(GL11.GL_TEXTURE_2D);
                OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit);
                }

                protected void actionPerformed(GuiButton p_146284_1_)
                {
                if (p_146284_1_.id == 0)
                {
                this.mc.displayGuiScreen(new GuiAchievements(this, this.mc.thePlayer.func_146107_m()));
                }

                if (p_146284_1_.id == 1)
                {
                this.mc.displayGuiScreen(new GuiStats(this, this.mc.thePlayer.func_146107_m()));
                }
                }
                }

                
                Et comme je ne trouve pas Minecraft.getMinecraft().thePlayer , je ne sais pas vraiment ou le placer sur mon code de base :/
                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

                  Bon je viens de regarder de mon côté, comme la fonction func_14706_a est static tu peux l’utiliser sans la copier/coller :

                  ​    @SubscribeEvent
                  
                      public void renderGameOverlay(RenderGameOverlayEvent.Post event)
                      {
                          if(event.type != RenderGameOverlayEvent.ElementType.EXPERIENCE)
                          {
                              return;
                          }
                          GuiInventory.func_147046_a(20, 60, 25, -40, 5, Minecraft.getMinecraft().thePlayer);
                      }
                  

                  Dans l’ordre :
                  20 : translation sur l’axe x
                  60 : translation sur l’axe y
                  25 : scale du rendu
                  -40 : rotation du corps sur l’axe z
                  5 : rotation de la tête sur l’axe x

                  Avec ces valeurs il s’affiche en haut à gauche.
                  Si tu veux le mettre en haut à droite, il faut utiliser event.resolution.getScaledWidth() - 20;

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

                    @‘robin4002’:

                    Bon je viens de regarder de mon côté, comme la fonction func_14706_a est static tu peux l’utiliser sans la copier/coller :

                    ​    @SubscribeEvent
                    
                        public void renderGameOverlay(RenderGameOverlayEvent.Post event)
                        {
                            if(event.type != RenderGameOverlayEvent.ElementType.EXPERIENCE)
                            {
                                return;
                            }
                            GuiInventory.func_147046_a(20, 60, 25, -40, 5, Minecraft.getMinecraft().thePlayer);
                        }
                    

                    Dans l’ordre :
                    20 : translation sur l’axe x
                    60 : translation sur l’axe y
                    25 : scale du rendu
                    -40 : rotation du corps sur l’axe z
                    5 : rotation de la tête sur l’axe x

                    Avec ces valeurs il s’affiche en haut à gauche.
                    Si tu veux le mettre en haut à droite, il faut utiliser event.resolution.getScaledWidth() - 20;

                    Alors, j’ai bien fait tout ça mais rien de change, le personnage n’apparait pas sur le menu echap, je ne comprend pas là ^^’ J’ai laisser toutes les valeurs par défaut mais rien n’y fait 😕

                    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

                      Ha, tu veux le mettre sur le menu échappe x)
                      Bon normal que ça fonctionne pas alors, avec le code que je t’ai donné il devrait apparaitre directement en jeu. (tu n’as surement pas enregistré ta classe d’event)

                      Dans ce cas il faut refaire un classe InGameMenu custom et utiliser le même principe d’ouverture d’un autre gui que celui nécessaire pour faire un menu custom.

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

                        Bah j’ai déjà recréer une classe car je recode en forge, mais j’ai voulu utiliser le code vanilla sauf que c’est un peu compliquer ^^’

                        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