Navigation

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

    SOLVED Boutons personnalisés dans le menu principal.

    1.7.x
    1.7.10
    2
    3
    274
    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.
    • PikaCube
      PikaCube last edited by robin4002

      Bonjour, mon titre est assez explicite mais je vais tout de même vous expliquez.
      Je suis entrain de créer un mod qui créer un mod qui change le menu principal, néanmoins mes boutons personnalisez ne s’affiche pas dans le menu.
      Voici mes classes:

      Class du bouton en question:

      public class LaunchButton extends GuiButton
      {
      	
          public LaunchButton(int id, int x, int y)
          {
              super(id, x, y, 100, 100, ""); //Taille de 100 par 100 pas de nom.
          }
          
          public void drawButton(Minecraft mc, int mouseX, int mouseY)
          {
          	this.visible = true;
              if(this.visible)
              {
                  boolean mouseHover = mouseX >= this.xPosition && mouseY >= this.yPosition && mouseX < this.xPosition + this.width && mouseY < this.yPosition + this.height;
                  
                  mc.getTextureManager().bindTexture(ResourcesManager.getResource("lancer"));
                  
                  Gui.func_152125_a(this.xPosition, this.yPosition, 0, 0, 128, 128, 100, 100, 128, 128);
              }
          }
      }
      

      Class principal:

      public class ModMenu 
      {
      	@Instance("modmenu")
      	public static ModMenu instance;
      	public static final String MODID = "modmenu";
      	
      	@SidedProxy(clientSide = "fr.pikacube.menu.proxy.ClientProxy", serverSide = "fr.pikacube.menu.proxy.CommonProxy")
      	public static ClientProxy proxy;
      	
      	
      	@EventHandler
          public void preInit(FMLPreInitializationEvent event)
          {
      		
          }
          	
          @EventHandler
          public void init(FMLInitializationEvent event)
          {
          	MinecraftForge.EVENT_BUS.register(new Events());
          }
          	
          @EventHandler
          public void postInit(FMLPostInitializationEvent event)
          {
          	
          }
      }
      

      Et enfin la class avec le menu personnalisé:

      @SideOnly(Side.CLIENT)
      public class UnicornMainMenu extends GuiScreen
      {   
          protected void actionPerformed(GuiButton button)
          {
             
          }
          
          @Override
          public void initGui()
          {
          	LaunchButton launchbutton = new LaunchButton(21, 100, 100);
              this.buttonList.add(launchbutton);
          }
          
          /**
           * Draws the screen and all the components in it.
           */
          
          private void renderBackGround()
          {
          GL11.glViewport(0, 0, 256, 256);
          this.mc.getTextureManager().bindTexture(ResourcesManager.getResource("background"));
          GL11.glDisable(GL11.GL_TEXTURE_2D);
          GL11.glEnable(GL11.GL_TEXTURE_2D);
          GL11.glViewport(0, 0, this.mc.displayWidth, this.mc.displayHeight);
          Tessellator tessellator = Tessellator.instance;
          tessellator.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);
          tessellator.setColorRGBA_F(1.0F, 1.0F, 1.0F, 1.0F);
          int k = this.width;
          int l = this.height;
          tessellator.addVertexWithUV(0, 0, this.zLevel, 0, 0);
          tessellator.addVertexWithUV(0, l, this.zLevel, 0, 1);
          tessellator.addVertexWithUV(k, l, this.zLevel, 1, 1);
          tessellator.addVertexWithUV(k, 0, this.zLevel, 1, 0);
          tessellator.draw();
          }
          
          public void drawScreen(int p_73863_1_, int p_73863_2_, float p_73863_3_)
          {
          	renderBackGround();
          	
          	this.mc.getTextureManager().bindTexture(ResourcesManager.getResource("logo"));
          	GL11.glEnable(GL11.GL_BLEND);
              Gui.func_152125_a(this.width-180, 8, 0, 0, 1, 1, 471/3, 105/3, 1, 1);
              GL11.glDisable(GL11.GL_BLEND);
          }
      }
      

      Je précise que mon menu s’affiche bien à la place du menu du jeu lors du lancement, mais c’est juste le bouton qui ne s’affiche pas. (Je dois certainement oublié quelque chose, quelque part mais ça fait 2 heures que je cherche quoi et je ne trouve pas).

      Merci d’avance pour toute aide et sachez que je ne veut pas d’un code tout fait, je voudrais si possible des explications et éventuellement le code qui va avec.

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

        yo, dans la fonction drawScreen tu n’a pas appelé le super.drawScreen(…);

        public void drawScreen(int p_73863_1_, int p_73863_2_, float p_73863_3_)
            {
            	renderBackGround();
        
            	super.drawScreen(p_73863_1_, p_73863_2_, p_73863_3_);
        
            	this.mc.getTextureManager().bindTexture(ResourcesManager.getResource("logo"));
            	GL11.glEnable(GL11.GL_BLEND);
                Gui.func_152125_a(this.width-180, 8, 0, 0, 1, 1, 471/3, 105/3, 1, 1);
                GL11.glDisable(GL11.GL_BLEND);
            }
        

        => la fonction drawScreen s’occupe de rendre les boutons mais si tu appel pas cette fonction dans la superclass<GuiScreen> alors le code de cette fonction dans la class GuiScreen ne sera pas a appelé

        1 Reply Last reply Reply Quote 1
        • PikaCube
          PikaCube last edited by

          @spyman a dit dans Boutons personnalisés dans le menu principal. :

          yo, dans la fonction drawScreen tu n’a pas appelé le super.drawScreen(…);

          public void drawScreen(int p_73863_1_, int p_73863_2_, float p_73863_3_)
              {
              	renderBackGround();
          
              	super.drawScreen(p_73863_1_, p_73863_2_, p_73863_3_);
          
              	this.mc.getTextureManager().bindTexture(ResourcesManager.getResource("logo"));
              	GL11.glEnable(GL11.GL_BLEND);
                  Gui.func_152125_a(this.width-180, 8, 0, 0, 1, 1, 471/3, 105/3, 1, 1);
                  GL11.glDisable(GL11.GL_BLEND);
              }
          

          => la fonction drawScreen s’occupe de rendre les boutons mais si tu appel pas cette fonction dans la superclass<GuiScreen> alors le code de cette fonction dans la class GuiScreen ne sera pas a appelé

          Merci, sa fonctionne, je met en résolu ^^

          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