Résolu 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"); } }
-
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()); } }
-
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…
-
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