Menu pause | Menu Chat



  • Bonjours  Comment je fait pour rajouter un bouton dans le MENU CHAT est qu'il exécute une commande ?
    comment je fait pour créer des bouton ext s'il vous plait quand je fait échap ? VOIR IMAGE



  • C'est le menu du chat ou le menu échap ?



  • @'lapourgagner':

    C'est le menu du chat ou le menu échap ?

    Bh je demende les 2 est limage que ta vue ces echap



  • Salut, Robin avait fait un tutoriel pour modifier le menu echap ainsi qu'une grande partie des menus  mais c'est en 1.11.x même si je pense pas que ce soit si modifier entre les deux versions, faut voir

    https://www.minecraftforgefrance.fr/showthread.php?tid=4480

    Pour afficher l'éntité du player c'est assez facile puisque mojang le fait déjà dans le gui de l'inventaire avec drawEntityOnScreen dans le GuiInventory

    🙂



  • @'Fifou_BE':

    Salut, Robin avait fait un tutoriel pour modifier le menu echap ainsi qu'une grande partie des menus  mais c'est en 1.11.x même si je pense pas que ce soit si modifier entre les deux versions, faut voir

    https://www.minecraftforgefrance.fr/showthread.php?tid=4480

    Pour afficher l'éntité du player c'est assez facile puisque mojang le fait déjà dans le gui de l'inventaire avec drawEntityOnScreen dans le GuiInventory

    🙂

    J'ai déja regarder mais ces pas pareil..



  • Au lieu de tous nous faire tourner autour du pot, ne penses-tu pas qu'il serait judicieux de nous montrer ton bout de code, si peu qu'il y en ait un ?!



  • @'Plaigon':

    Au lieu de tous nous faire tourner autour du pot, ne penses-tu pas qu'il serait judicieux de nous montrer ton bout de code, si peu qu'il y en ait un ?!

    Bh non il y en a pas j'arrive pas a faire se que je vous est demender en gros ajouter des bouton sur le chat et faire un nouveau menu echap
    Ou j'es sa

    package com.mod.exonia.gui;
    
    import cpw.mods.fml.client.FMLClientHandler;
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import net.minecraft.client.gui.GuiButton;
    import net.minecraft.client.gui.GuiIngameMenu;
    import net.minecraft.client.gui.GuiMainMenu;
    import net.minecraft.client.gui.GuiOptions;
    import net.minecraft.client.gui.GuiScreen;
    import net.minecraft.client.gui.GuiShareToLan;
    import net.minecraft.client.gui.achievement.GuiAchievements;
    import net.minecraft.client.gui.achievement.GuiStats;
    import net.minecraft.client.multiplayer.WorldClient;
    import net.minecraft.client.resources.I18n;
    
    @SideOnly(Side.CLIENT)
    public class GuiIngame extends GuiIngameMenu
    {
        private int field_146445_a;
        private int field_146444_f;
        private static final String __OBFID = "CL_00000703";
    
        /**
         * Adds the buttons (and other controls) to the screen in question.
         */
        public void initGui()
        {
            this.field_146445_a = 0;
            this.buttonList.clear();
            byte b0 = -16;
            boolean flag = true;
            this.buttonList.add(new GuiButton(1, this.width / 2 - 100, this.height / 4 + 120 + b0, I18n.format("menu.returnToMenu", new Object[0])));
    
            if (!this.mc.isIntegratedServerRunning())
            {
                ((GuiButton)this.buttonList.get(0)).displayString = I18n.format("menu.disconnect", new Object[0]);
            }
    
            this.buttonList.add(new GuiButton(4, this.width / 2 - 100, this.height / 4 + 24 + b0, I18n.format("menu.returnToGame", new Object[0])));
            this.buttonList.add(new GuiButton(0, this.width / 2 - 100, this.height / 4 + 96 + b0, 98, 20, I18n.format("menu.options", new Object[0])));
            this.buttonList.add(new GuiButton(12, this.width / 2 + 2, this.height / 4 + 96 + b0, 98, 20, "Mod Options…"));
            GuiButton guibutton;
            this.buttonList.add(guibutton = new GuiButton(7, this.width / 2 - 100, this.height / 4 + 72 + b0, 200, 20, I18n.format("menu.shareToLan", new Object[0])));
            this.buttonList.add(new GuiButton(5, this.width / 2 - 100, this.height / 4 + 48 + b0, 98, 20, I18n.format("gui.achievements", new Object[0])));
            this.buttonList.add(new GuiButton(6, this.width / 2 + 2, this.height / 4 + 48 + b0, 98, 20, I18n.format("gui.stats", new Object[0])));
            guibutton.enabled = this.mc.isSingleplayer() && !this.mc.getIntegratedServer().getPublic();
        }
    
        protected void actionPerformed(GuiButton p_146284_1_)
        {
            switch (p_146284_1_.id)
            {
                case 0:
                    this.mc.displayGuiScreen(new GuiOptions(this, this.mc.gameSettings));
                    break;
                case 1:
                    p_146284_1_.enabled = false;
                    this.mc.theWorld.sendQuittingDisconnectingPacket();
                    this.mc.loadWorld((WorldClient)null);
                    this.mc.displayGuiScreen(new GuiMainMenu());
                case 2:
                case 3:
                default:
                    break;
                case 4:
                    this.mc.displayGuiScreen((GuiScreen)null);
                    this.mc.setIngameFocus();
                    break;
                case 5:
                    if (this.mc.thePlayer != null)
                    this.mc.displayGuiScreen(new GuiAchievements(this, this.mc.thePlayer.getStatFileWriter()));
                    break;
                case 6:
                    if (this.mc.thePlayer != null)
                    this.mc.displayGuiScreen(new GuiStats(this, this.mc.thePlayer.getStatFileWriter()));
                    break;
                case 7:
                    this.mc.displayGuiScreen(new GuiShareToLan(this));
                    break;
                case 12:
                    FMLClientHandler.instance().showInGameModOptions(this);
                    break;
            }
        }
    
        /**
         * Called from the main game loop to update the screen.
         */
        public void updateScreen()
        {
            super.updateScreen();
            ++this.field_146444_f;
        }
    
        /**
         * Draws the screen and all the components in it.
         */
        public void drawScreen(int p_73863_1_, int p_73863_2_, float p_73863_3_)
        {
            this.drawDefaultBackground();
            this.drawCenteredString(this.fontRendererObj, I18n.format("menu.game", new Object[0]), this.width / 2, 40, 16777215);
            super.drawScreen(p_73863_1_, p_73863_2_, p_73863_3_);
        }
    }
    

    Mais je ne ces pas quoi mettre dans client proxy pour faire en sorte que sa prend cette classe



  • Sers toi de l'event GuiOpenEvent pour check si event.gui instanceof GuiInGameMenu, auquel cas tu remplaceras sa valeur par ton nouveau gui.



  • @'Plaigon':

    Sers toi de l'event GuiOpenEvent pour check si event.gui instanceof GuiInGameMenu, auquel cas tu remplaceras sa valeur par ton nouveau gui.

    Jai pas comprit ?
    En gros jdois faire quoi ? j'ai pas comprit quand ta dit event.gui instanceof GuiInGameMenu



  • @'Plaigon':

    Sers toi de l'event GuiOpenEvent pour check si event.gui instanceof GuiInGameMenu, auquel cas tu remplaceras sa valeur par ton nouveau gui.

    @'Zokyt':

    @'Plaigon':

    Sers toi de l'event GuiOpenEvent pour check si event.gui instanceof GuiInGameMenu, auquel cas tu remplaceras sa valeur par ton nouveau gui.

    Jai pas comprit ?
    En gros jdois faire quoi ? j'ai pas comprit quand ta dit event.gui instanceof GuiInGameMenu

    En gros, c'est ce qui a été dis dans le tutoriel de Robin, même si il est en 1.11.x ceci est la manière de procéder …

    Dans la classe client, ajoutez donc :

    MinecraftForge.EVENT_BUS.register(this);
    

    dans la fonction init. Cela va permettre d'enregistrer votre classe client comme une classe qui contient des événements.
    Ajoutez ensuite la fonction suivante :

    
       @SubscribeEvent
       public void onOpenGui(GuiOpenEvent event)
       {
           if(event.getGui() != null && event.getGui().getClass() == GuiMainMenu.class)
           {
               event.setGui(new GuiCustomMainMenu());
           }
       }
    


  • @'Fifou_BE':

    @'Plaigon':

    Sers toi de l'event GuiOpenEvent pour check si event.gui instanceof GuiInGameMenu, auquel cas tu remplaceras sa valeur par ton nouveau gui.

    @'Zokyt':

    @'Plaigon':

    Sers toi de l'event GuiOpenEvent pour check si event.gui instanceof GuiInGameMenu, auquel cas tu remplaceras sa valeur par ton nouveau gui.

    Jai pas comprit ?
    En gros jdois faire quoi ? j'ai pas comprit quand ta dit event.gui instanceof GuiInGameMenu

    En gros, c'est ce qui a été dis dans le tutoriel de Robin, même si il est en 1.11.x ceci est la manière de procéder …

    Dans la classe client, ajoutez donc :

    MinecraftForge.EVENT_BUS.register(this);
    

    dans la fonction init. Cela va permettre d'enregistrer votre classe client comme une classe qui contient des événements.
    Ajoutez ensuite la fonction suivante :

    
       @SubscribeEvent
       public void onOpenGui(GuiOpenEvent event)
       {
           if(event.getGui() != null && event.getGui().getClass() == GuiMainMenu.class)
           {
               event.setGui(new GuiCustomMainMenu());
           }
       }
    

    Comme sa ?

        @SideOnly(Side.CLIENT)
        public void onTick(TickEvent.ClientTickEvent event)
        {
            Minecraft mc = FMLClientHandler.instance().getClient();
            GuiScreen currentScreen = mc.currentScreen;
            if(mc.currentScreen != null && mc.currentScreen.getClass().equals(GuiMainMenu.class))
            {
                mc.displayGuiScreen(new GuiCustomMainMenu());
            }
            GuiGameOver currentGame = new GuiGameOver();
            if(mc.currentScreen != null && mc.currentScreen.getClass().equals(GuiIngameMenu.class))
            {
                mc.displayGuiScreen(new GuiScreen());
            }
    
            @SubscribeEvent
            public void onOpenGui(GuiOpenEvent event)
            {
                if(event.getGui() != null && event.getGui().getClass() == GuiMainMenu.class)
                {
                    event.setGui(new GuiCustomMainMenu());
                }
            }
    
        }
    

    Se que vous me donner marche pas

    Je rere garder le tuto de robin mais quand je fait setGui bh sa ne marche pas ces en rouge


    Sois j'ai le GuiOpenEvent en rouge sois ces getGui


    @'Zokyt':

    @'Fifou_BE':

    @'Plaigon':

    Sers toi de l'event GuiOpenEvent pour check si event.gui instanceof GuiInGameMenu, auquel cas tu remplaceras sa valeur par ton nouveau gui.

    @'Zokyt':

    @'Plaigon':

    Sers toi de l'event GuiOpenEvent pour check si event.gui instanceof GuiInGameMenu, auquel cas tu remplaceras sa valeur par ton nouveau gui.

    Jai pas comprit ?
    En gros jdois faire quoi ? j'ai pas comprit quand ta dit event.gui instanceof GuiInGameMenu

    En gros, c'est ce qui a été dis dans le tutoriel de Robin, même si il est en 1.11.x ceci est la manière de procéder …

    Dans la classe client, ajoutez donc :

    MinecraftForge.EVENT_BUS.register(this);
    

    dans la fonction init. Cela va permettre d'enregistrer votre classe client comme une classe qui contient des événements.
    Ajoutez ensuite la fonction suivante :

    
       @SubscribeEvent
       public void onOpenGui(GuiOpenEvent event)
       {
           if(event.getGui() != null && event.getGui().getClass() == GuiMainMenu.class)
           {
               event.setGui(new GuiCustomMainMenu());
           }
       }
    

    Comme sa ?

        @SideOnly(Side.CLIENT)
        public void onTick(TickEvent.ClientTickEvent event)
        {
            Minecraft mc = FMLClientHandler.instance().getClient();
            GuiScreen currentScreen = mc.currentScreen;
            if(mc.currentScreen != null && mc.currentScreen.getClass().equals(GuiMainMenu.class))
            {
                mc.displayGuiScreen(new GuiCustomMainMenu());
            }
            GuiGameOver currentGame = new GuiGameOver();
            if(mc.currentScreen != null && mc.currentScreen.getClass().equals(GuiIngameMenu.class))
            {
                mc.displayGuiScreen(new GuiScreen());
            }
            
            @SubscribeEvent
            public void onOpenGui(GuiOpenEvent event)
            {
                if(event.getGui() != null && event.getGui().getClass() == GuiMainMenu.class)
                {
                    event.setGui(new GuiCustomMainMenu());
                }
            }
            
        }
    

    Se que vous me donner marche pas

    Je rere garder le tuto de robin mais quand je fait setGui bh sa ne marche pas ces en rouge


    Sois j'ai le GuiOpenEvent en rouge sois ces getGui

    Est voici mon code :

    package com.mod.exonia.proxy;
    
    import com.mod.exonia.dynamite.EntityDynamite;
    import com.mod.exonia.gui.GuiIngame;
    import com.mod.exonia.gui.GuiMainMenuEventHandler;
    import com.mod.exonia.init.ItemMod;
    
    import cpw.mods.fml.client.registry.RenderingRegistry;
    import cpw.mods.fml.common.FMLCommonHandler;
    import cpw.mods.fml.common.eventhandler.SubscribeEvent;
    import cpw.mods.fml.common.gameevent.InputEvent.KeyInputEvent;
    import net.minecraft.client.gui.GuiIngameMenu;
    import net.minecraft.client.renderer.entity.RenderSnowball;
    import net.minecraft.client.settings.KeyBinding;
    import net.minecraftforge.common.MinecraftForge;
    
    public class ClientProxy extends CommonProxy
    {
    
        public static KeyBinding keyBinding;
    
        @Override
        public void registerRenders()
        {
            RenderingRegistry.registerEntityRenderingHandler(EntityDynamite.class, new RenderSnowball(ItemMod.dynamite));
            MinecraftForge.EVENT_BUS.register(new GuiMainMenuEventHandler());
        }
    
        public ClientProxy()
        {
            FMLCommonHandler.instance().bus().register(new GuiMainMenuEventHandler());
            MinecraftForge.EVENT_BUS.register(this);
        }
    
        @SubscribeEvent
        public void onEvent(KeyInputEvent event)
        {
    
        }
    
        public void GuiOpenEvent()
        {
    
        }
    
        private void keyPressed()
        {
    
        }
    
        @SubscribeEvent
        public void onOpenGui(GuiOpenEvent event)
        {
            if(event.getGui() != null && event.getGui().getClass() == GuiIngameMenu.class)
            {
                event.setGui(new GuiIngame());
            }
        }
    
    }
    
    


  • Je ne cite pas ton message car trop de citation, mais sérieusement, dans ton client proxy tu devrais déjà avoir ça de base (regardez aux proxy et le client) :

    https://www.minecraftforgefrance.fr/showthread.php?tid=587#classe3

    Du coup la fonction INIT

    devrait ressembler à ca :

    
    @EventHandler
    public void init(FMLInitializationEvent event)
    {
    proxy.registerRender();
    MinecraftForge.EVENT_BUS.register(this);    
    
    }
    
    

    Et à la suite de toutes les autres fonctions tu rajoutes le :

       @SubscribeEvent
       public void onOpenGui(GuiOpenEvent event)
       {
           if(event.getGui() != null && event.getGui().getClass() == LENOMDUGUIAREMPLACER.class)
           {
               event.setGui(new TONGUI());
           }
       }