1.14.4 Changer le menu principal de Minecraft



  • Bonjour, je voudrais changer le menu principal de Minecraft mais quand je démarre le jeu, le nouveau GUI ne s'affiche pas et quand clique sur un bouton puis que je reviens sur le menu, plus aucun bouton ne s'affiche.

    Voici le code:

    @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD, modid = Mod.MOD_ID)
    public class ModGuis {
    		
        public static final ModGuis INSTANCE = new ModGuis();
    	
        @SubscribeEvent
        public void onOpenGuiMainMenu(GuiOpenEvent event) {
            if(event.getGui() != null && event.getGui().getClass() == MainMenuScreen.class) {	
                event.setGui(new GuiMainMenu());   
            }   
        }	
    }
    

    et celui de ma classe principale:

    @Mod(Mod.MOD_ID)
    public class Mod {
    
        public static final String MOD_ID = "mod";
    	
        public static final Logger LOGGER = LogManager.getLogger(MOD_ID);
    	
        public Mod() {
            FMLJavaModLoadingContext.get().getModEventBus().addListener(this::commonSetup);
            FMLJavaModLoadingContext.get().getModEventBus().addListener(this::clientSetup);
            FMLJavaModLoadingContext.get().getModEventBus().addListener(this::serverSetup);		
        }
    
        private void commonSetup(final FMLCommonSetupEvent event) {
            LOGGER.info("Mod common setup");
        }
    
        private void clientSetup(final FMLClientSetupEvent event) {
            LOGGER.info("Mod client setup");
            MinecraftForge.EVENT_BUS.register(ModGuis.INSTANCE);
        }
    
        private void serverSetup(final FMLDedicatedServerSetupEvent event) {
            LOGGER.info("Mod server setup");
        }
    }
    

  • Moddeurs confirmés Rédacteurs Administrateurs

    Bonjour,
    Sur Silvergames j'ai fais ça :

        @SubscribeEvent
        public static void onGuiInit(GuiScreenEvent.InitGuiEvent.Pre event) {
            // GuiOpenEvent is not called for the first main menu open
            if(event.getGui().getClass().equals(MainMenuScreen.class)) {
                SGClient.MC.displayGuiScreen(new SGGuiMainMenu());
            }
        }
    

    Comme indiqué par le commentaire, avec le nouveau système de gui de chargement de Minecraft, l'event GuiOpenEvent n'est plus appelé pour le premier affichage du menu principal. Il faut donc passer par GuiScreenEvent.InitGuiEvent.Pre



  • essaies plus un truc comme ça (c'est du code 1.12 donc pas sur que ça marche mais on sait jamais)

    	@SubscribeEvent
    	@SideOnly(Side.CLIENT)
    	public void initGui(GuiOpenEvent event) {
    		if (event.getGui() instanceof GuiMainMenu) {
    			event.setGui(new MainMenuScreen());
    		}
    }

  • Moddeurs confirmés Rédacteurs Administrateurs

    Bonjour,
    Sur Silvergames j'ai fais ça :

        @SubscribeEvent
        public static void onGuiInit(GuiScreenEvent.InitGuiEvent.Pre event) {
            // GuiOpenEvent is not called for the first main menu open
            if(event.getGui().getClass().equals(MainMenuScreen.class)) {
                SGClient.MC.displayGuiScreen(new SGGuiMainMenu());
            }
        }
    

    Comme indiqué par le commentaire, avec le nouveau système de gui de chargement de Minecraft, l'event GuiOpenEvent n'est plus appelé pour le premier affichage du menu principal. Il faut donc passer par GuiScreenEvent.InitGuiEvent.Pre



  • ah ça change trop le code de minecraft aussi, c'est vraiment chiant à la longue de devoir réapprendre les systèmes en changeant de version



  • C'est bon merci ça fonction maintenant ! Et je suis complètement d'accord avec toi blixow14 à la longue ça commence à devenir chiant...


  • Moddeurs confirmés Rédacteurs Administrateurs

    C'est pas nouveau et ce n'est pas spécifique à Minecraft : Le monde en entier change en permanence. Il faut savoir s'adapter, pas le choix 😉


Log in to reply