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 796 Vues 2 Abonné
    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.
    • 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