MFF

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

    problème avec la modification du MainMenu

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    11 Messages 2 Publieurs 567 Vues 2 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.
    • B Hors-ligne
      BlocTox76
      dernière édition par

      Bonjour, j’ai modifier le mainmenu de minecraft mais le problème c’est que quand je lance mon jeu je vois le mainmenu de minecraft pendant 1 secondes environ puis le miens s’affiche, j’aimerai savoir comment je pourrais enlever le fait que le mainmenu de minecraft s’affiche svp ?

      Classe ClientProxy : ( Il y a des commentaires car j’ai essayer différentes façons)

      public class ClientProxy extends CommonProxy
      {
      
          public void registerRender()
          {
              System.out.println("Méthode côté client");
              Display.setTitle("V1");
              FMLCommonHandler.instance().bus().register(this);
      
      
          }
      
          @SubscribeEvent
          @SideOnly(Side.CLIENT)
          public void onTickClient(TickEvent.ClientTickEvent event) {
              Minecraft mc = FMLClientHandler.instance().getClient();
              if ((mc.currentScreen != null) && (mc.currentScreen.getClass().equals(GuiMainMenu.class))) {
                  mc.displayGuiScreen(new GuiCustomMainMenu());
              }
              if ((mc.currentScreen != null) && (mc.currentScreen.getClass().equals(GuiIngameMenu.class))) {
                  mc.displayGuiScreen(new GuiCustomInGameMenu());
              }
              /*if (event.phase == Phase.START) {
                  Minecraft mc = Minecraft.getMinecraft();
                  GuiScreen currentScreen = mc.currentScreen;
                  GuiCustomMainMenu customMenu = new GuiCustomMainMenu();
                  GuiCustomInGameMenu ingameMenu = new GuiCustomInGameMenu();
      
                  if (currentScreen instanceof GuiMainMenu && !currentScreen.equals(customMenu)) {
                      mc.displayGuiScreen(customMenu);
                  }
      
                  if (currentScreen instanceof GuiIngameMenu && !currentScreen.equals(ingameMenu)) {
                      mc.displayGuiScreen(ingameMenu);
                  }
      
              }*/
          }
             /* public void changeGui (GuiOpenEvent e){
      
      
                  Minecraft mc = Minecraft.getMinecraft();
                  GuiScreen currentScreen = mc.currentScreen;
                  GuiCustomMainMenu customMenu = new GuiCustomMainMenu();
                  GuiCustomInGameMenu ingameMenu = new GuiCustomInGameMenu();
      
                  if (currentScreen instanceof GuiMainMenu && !currentScreen.equals(customMenu)) {
                      mc.displayGuiScreen(customMenu);
                  }
      
                  if (currentScreen instanceof GuiIngameMenu && !currentScreen.equals(ingameMenu)) {
                      mc.displayGuiScreen(ingameMenu);
                  }
              }*/
      }
      
      
      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

        Il faut comparer par rapport à e.gui et non mc.currentScreen car le gui n’est pas encore ouvert lors du check.

                if (e.gui.getClass().equals(GuiMainMenu.class)) {
                    e.gui = new GuiCustomMainMenu();
                }
        
        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

          Bonsoir,

          La façon la plus réactif de faire est avec GuiOpenEvent, par contre ton code commenté n’est pas bon, il ne faut pas rouvrir un autre gui mais modifier le gui qui va être ouvert en faisant event.gui = nouveauGui;.

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

            Merci, j’ai fait sa, mais sa ne fonctionne dans aucun des cas, peux-tu me dire comment je peux faire stp car je ne vois pas ?

            Merci

            public class ClientProxy extends CommonProxy
            {
            
                public void registerRender()
                {
                    System.out.println("Méthode côté client");
                    Display.setTitle("V1");
                    FMLCommonHandler.instance().bus().register(this);
            
            
                }
            
                @SubscribeEvent
                @SideOnly(Side.CLIENT)
                public void changeGui (GuiOpenEvent e){
            
            
                    Minecraft mc = Minecraft.getMinecraft();
                    GuiScreen currentScreen = mc.currentScreen;
                    GuiCustomMainMenu customMenu = new GuiCustomMainMenu();
                    GuiCustomInGameMenu ingameMenu = new GuiCustomInGameMenu();
            
                    if (currentScreen instanceof GuiMainMenu && !currentScreen.equals(customMenu)) {
                        e.gui = customMenu;
                    }
            
                    if (currentScreen instanceof GuiIngameMenu && !currentScreen.equals(ingameMenu)) {
                        e.gui = ingameMenu;
                    }
                }
                /*public void changeGui (GuiOpenEvent e){
            
                    Minecraft mc = FMLClientHandler.instance().getClient();
                    if ((mc.currentScreen != null) && (mc.currentScreen.getClass().equals(GuiMainMenu.class))) {
            
                        e.gui = new GuiCustomMainMenu();
                    }
            
                    if ((mc.currentScreen != null) && (mc.currentScreen.getClass().equals(GuiMainMenu.class))) {
                        e.gui = new GuiCustomInGameMenu();
                    }
                }*/
            }
            
            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

              Il faut enregistrer la classe d’event avec MinecraftForge.EVENT_BUS.register(this); et non avec FMLCommonHandler.instance().bus().register(this); pour cette event.

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

                Merci Robin, sa ne m’affiche toujours pas mon main-menu personnaliser, est-ce que tu vois ou est l’erreur stp ?

                public class ClientProxy extends CommonProxy
                {
                
                    public void registerRender()
                    {
                        System.out.println("Méthode côté client");
                        Display.setTitle("V1");
                        MinecraftForge.EVENT_BUS.register(this);
                
                
                    }
                
                    @SubscribeEvent
                    @SideOnly(Side.CLIENT)
                    /*public void changeGui (GuiOpenEvent e){
                
                
                        Minecraft mc = Minecraft.getMinecraft();
                        GuiScreen currentScreen = mc.currentScreen;
                        GuiCustomMainMenu customMenu = new GuiCustomMainMenu();
                        GuiCustomInGameMenu ingameMenu = new GuiCustomInGameMenu();
                
                        if (currentScreen instanceof GuiMainMenu && !currentScreen.equals(customMenu)) {
                            e.gui = customMenu;
                        }
                
                        if (currentScreen instanceof GuiIngameMenu && !currentScreen.equals(ingameMenu)) {
                            e.gui = ingameMenu;
                        }
                    }*/
                    public void changeGui (GuiOpenEvent e){
                
                        Minecraft mc = Minecraft.getMinecraft();
                        if ((mc.currentScreen != null) && (mc.currentScreen.getClass().equals(GuiMainMenu.class))) {
                
                            e.gui = new GuiCustomMainMenu();
                        }
                
                        if ((mc.currentScreen != null) && (mc.currentScreen.getClass().equals(GuiMainMenu.class))) {
                            e.gui = new GuiCustomInGameMenu();
                        }
                    }
                }
                
                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

                  Il manque @SubscribeEvent au-dessus de ta fonction d’event.

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

                    Merci, Sa ne m’affiche toujours pas mon main-menu(Le nom de la fenêtre mis plus haut fonctionne)

                    public class ClientProxy extends CommonProxy
                    {
                    
                        public void registerRender()
                        {
                            System.out.println("Méthode côté client");
                            Display.setTitle("V1");
                            MinecraftForge.EVENT_BUS.register(this);
                    
                    
                        }
                    
                        /*public void changeGui (GuiOpenEvent e){
                    
                    
                            Minecraft mc = Minecraft.getMinecraft();
                            GuiScreen currentScreen = mc.currentScreen;
                            GuiCustomMainMenu customMenu = new GuiCustomMainMenu();
                            GuiCustomInGameMenu ingameMenu = new GuiCustomInGameMenu();
                    
                            if (currentScreen instanceof GuiMainMenu && !currentScreen.equals(customMenu)) {
                                e.gui = customMenu;
                            }
                    
                            if (currentScreen instanceof GuiIngameMenu && !currentScreen.equals(ingameMenu)) {
                                e.gui = ingameMenu;
                            }
                        }*/
                        @SubscribeEvent
                        @SideOnly(Side.CLIENT)
                        public void changeGui (GuiOpenEvent e){
                    
                            Minecraft mc = Minecraft.getMinecraft();
                            if ((mc.currentScreen != null) && (mc.currentScreen.getClass().equals(GuiMainMenu.class))) {
                    
                                e.gui = new GuiCustomMainMenu();
                    
                            }
                    
                            if ((mc.currentScreen != null) && (mc.currentScreen.getClass().equals(GuiMainMenu.class))) {
                                e.gui = new GuiCustomInGameMenu();
                            }
                        }
                    }
                    
                    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

                      Il faut comparer par rapport à e.gui et non mc.currentScreen car le gui n’est pas encore ouvert lors du check.

                              if (e.gui.getClass().equals(GuiMainMenu.class)) {
                                  e.gui = new GuiCustomMainMenu();
                              }
                      
                      1 réponse Dernière réponse Répondre Citer 0
                      • B Hors-ligne
                        BlocTox76
                        dernière édition par BlocTox76

                        Merci mon main-menu s’affiche maintenant , mais quand je vais dans un monde solo mon jeu crash, j’ai compris où se trouve l’erreur mais je ne vois ce qu’elle est , peut-tu m’aider stp ?

                        CrashReport(j’ai pas trouvé la bonne balise) : https://pastebin.com/M6TFXmNC

                        Classe Client :

                        public class ClientProxy extends CommonProxy
                        {
                        
                            public void registerRender()
                            {
                                System.out.println("Méthode côté client");
                                Display.setTitle("V1");
                                MinecraftForge.EVENT_BUS.register(this);
                        
                        
                            }
                            @SubscribeEvent
                            @SideOnly(Side.CLIENT)
                            public void changeGui (GuiOpenEvent e){
                        
                                if (e.gui.getClass().equals(GuiMainMenu.class)) {
                        
                                    e.gui = new GuiCustomMainMenu();
                        
                                }
                        
                                 if (e.gui.getClass().equals(GuiIngameMenu.class)) {
                                    e.gui = new GuiCustomInGameMenu();
                                }
                            }
                        }
                        
                        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

                          Hum tu as modifié le code depuis le rapport de crash, donc les numéros de ligne ne correspondent pas.

                          Mais à mon avis ajouter un null check devrait être suffisant :
                          if (e.gui != null && e.gui.getClass().equals(GuiMainMenu.class)) {

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

                            Merci tout fonctionne bien

                            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