• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu Boutons personnalisés dans le menu principal.

    1.7.x
    1.7.10
    2
    3
    419
    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.
    • PikaCube
      PikaCube dernière édition par 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 réponse Dernière réponse Répondre Citer 0
      • SpyMan
        SpyMan dernière édition par

        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 réponse Dernière réponse Répondre Citer 1
        • PikaCube
          PikaCube dernière édition par

          @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 réponse Dernière réponse Répondre Citer 0
          • 1 / 1
          • Premier message
            Dernier message
          Design by Woryk
          Contact / Mentions Légales

          MINECRAFT FORGE FRANCE © 2018

          Powered by NodeBB