Navigation

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    SOLVED InGameMenu

    1.7.x
    1.7.x
    5
    12
    3180
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      SquizzCraft last edited by

      Bonjour, je voulais savoir s’il y a un moyen pour faire apparaître un aperçu du joueur sur le menu InGame ! Si oui, comment s’il vous plait ? ^^’

      1 Reply Last reply Reply Quote 0
      • Gugu
        Gugu last edited by

        C’est a dire ? Quel menu exactement ?

        Donne plus de précisions si possible 🙂

        1 Reply Last reply Reply Quote 0
        • S
          SquizzCraft last edited by

          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 Reply Last reply Reply Quote 0
          • Ama
            Ama last edited by

            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 !

            1 Reply Last reply Reply Quote 0
            • S
              SquizzCraft last edited by

              @‘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 Reply Last reply Reply Quote 0
              • SCAREX
                SCAREX last edited by

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

                1 Reply Last reply Reply Quote 0
                • robin4002
                  robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

                  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 Reply Last reply Reply Quote 0
                  • S
                    SquizzCraft last edited by

                    @‘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 Reply Last reply Reply Quote 0
                    • robin4002
                      robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

                      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 Reply Last reply Reply Quote 0
                      • S
                        SquizzCraft last edited by

                        @‘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 Reply Last reply Reply Quote 0
                        • robin4002
                          robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

                          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 Reply Last reply Reply Quote 0
                          • S
                            SquizzCraft last edited by

                            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 Reply Last reply Reply Quote 0
                            • 1 / 1
                            • First post
                              Last post
                            Design by Woryk
                            Contact / Mentions Légales / Faire un don

                            MINECRAFT FORGE FRANCE © 2018

                            Powered by NodeBB