MFF

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

    Modifier boutons

    Planifier Épinglé Verrouillé Déplacé Résolu Anciennes versions
    1.6.4
    24 Messages 6 Publieurs 8.9k Vues 1 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.
    • robin4002R Hors-ligne
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
      dernière édition par

      package fr.minecraftforgefrance.custommenu;
      
      import java.util.Arrays;
      
      import cpw.mods.fml.common.Mod;
      import cpw.mods.fml.common.Mod.EventHandler;
      import cpw.mods.fml.common.event.FMLInitializationEvent;
      import cpw.mods.fml.common.event.FMLPreInitializationEvent;
      import cpw.mods.fml.common.registry.TickRegistry;
      import cpw.mods.fml.relauncher.Side;
      
      @Mod(modid = "CustomMenu", name = "Custom Menu", version = "1.0.0")
      
      public class ModCustomMenu
      {
      @EventHandler
      public void init(FMLInitializationEvent event)
      {
      if(event.getSide().isClient())
      TickRegistry.registerTickHandler(new TickHandlerClient(), Side.CLIENT);
      }
      }
      
      package fr.minecraftforgefrance.custommenu;
      
      import java.util.EnumSet;
      
      import net.minecraft.client.Minecraft;
      import net.minecraft.client.gui.GuiMainMenu;
      import net.minecraft.client.gui.GuiScreen;
      import cpw.mods.fml.common.ITickHandler;
      import cpw.mods.fml.common.TickType;
      
      public class TickHandlerClient implements ITickHandler
      {
      @Override
      public void tickStart(EnumSet <ticktype>type, Object… tickData)
      {
      
      }
      
      @Override
      public void tickEnd(EnumSet <ticktype>type, Object... tickData)
      {
      if(type.equals(EnumSet.of(TickType.CLIENT)))
      {
      Minecraft mc = Minecraft.getMinecraft();
      GuiScreen currentScreen = mc.currentScreen;
      GuiCustomMainMenu customMenu = new GuiCustomMainMenu();
      
      if(currentScreen instanceof GuiMainMenu && !currentScreen.equals(customMenu))
      {
      mc.displayGuiScreen(customMenu);
      }
      }
      }
      
      @Override
      public EnumSet <ticktype>ticks()
      {
      return EnumSet.of(TickType.CLIENT);
      }
      
      @Override
      public String getLabel()
      {
      return "Client Menu Tick Handler";
      }
      }
      

      Ensuite tu créé ta classe GuiCustomMainMenu, tu copie colle GuiMainMenu dedans en changeant tout les GuiMainMenu par GuiCustomMainMenu, et tu adapte la classe comme tu le souhaite.

      Pour finir, tu compile le mod comme un mod normal, et tu en fais un .zip que tu mets dans le dossier mods.</ticktype></ticktype></ticktype>

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

        Merci merci !

        par contre, j’ai un souci, j’ai une erreur dans cette fonction :

        private void func_130022_h()
        {
        this.minecraftRealmsButton.drawButton = true;
        fmlModButton.width = 98;
        fmlModButton.xPosition = this.width / 2 + 2;
        }
        

        Il me met l’erreur au niveau du .width en me disant qu’elle n’est pas public mais elle fait référence à une classe que je touche pas…

        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

          Supprime cette ligne, elle ne sert qu’à activer le bouton “Minecraft realms”, qui est completement inutile sur un launcher personnel.
          (il faut aussi que tu supprime la ligne ou la méthode est appelé).

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

            Impecc, j’ai plus d’erreurs, mais par contre, mon menu n’apparait pas… (je vois juste le menu d’origine apparaitre un quart de seconde et tout s’efface, il ne me reste plus que les boutons option et quit game…

            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 y a des erreurs dans la console ?

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

                Je n’en vois pas…

                nov. 13, 2013 9:23:03 PM net.minecraft.launchwrapper.LogWrapper log
                INFO: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
                nov. 13, 2013 9:23:03 PM net.minecraft.launchwrapper.LogWrapper log
                INFO: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
                nov. 13, 2013 9:23:03 PM net.minecraft.launchwrapper.LogWrapper log
                INFO: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
                2013-11-13 21:23:03 [INFO] [ForgeModLoader] Forge Mod Loader version 6.4.3.883 for Minecraft 1.6.4 loading
                2013-11-13 21:23:03 [INFO] [ForgeModLoader] Java is Java HotSpot(TM) 64-Bit Server VM, version 1.7.0_25, running on Windows 7:amd64:6.1, installed at C:\Program Files\Java\jre7
                2013-11-13 21:23:03 [INFO] [ForgeModLoader] Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
                2013-11-13 21:23:04 [INFO] [STDOUT] Loaded 40 rules from AccessTransformer config file fml_at.cfg
                2013-11-13 21:23:04 [INFO] [STDOUT] Loaded 109 rules from AccessTransformer config file forge_at.cfg
                2013-11-13 21:23:04 [SEVERE] [ForgeModLoader] The binary patch set is missing. Either you are in a development environment, or things are not going to work!
                2013-11-13 21:23:05 [INFO] [ForgeModLoader] Launching wrapped minecraft {net.minecraft.client.main.Main}
                2013-11-13 21:23:06 [INFO] [Minecraft-Client] Setting user: Player606
                2013-11-13 21:23:06 [INFO] [Minecraft-Client] (Session ID is null)
                2013-11-13 21:23:07 [INFO] [Minecraft-Client] LWJGL Version: 2.9.0
                2013-11-13 21:23:07 [INFO] [Minecraft-Client] Reloading ResourceManager: Default
                2013-11-13 21:23:08 [INFO] [STDOUT]
                2013-11-13 21:23:08 [INFO] [STDOUT] Starting up SoundSystem…
                2013-11-13 21:23:08 [INFO] [MinecraftForge] Attempting early MinecraftForge initialization
                2013-11-13 21:23:08 [INFO] [STDOUT] MinecraftForge v9.11.0.883 Initialized
                2013-11-13 21:23:08 [INFO] [ForgeModLoader] MinecraftForge v9.11.0.883 Initialized
                2013-11-13 21:23:08 [INFO] [STDOUT] Initializing LWJGL OpenAL
                2013-11-13 21:23:08 [INFO] [STDOUT] (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org)
                2013-11-13 21:23:08 [INFO] [STDOUT] OpenAL initialized.
                2013-11-13 21:23:08 [INFO] [STDOUT] Replaced 101 ore recipies
                2013-11-13 21:23:08 [INFO] [MinecraftForge] Completed early MinecraftForge initialization
                2013-11-13 21:23:08 [INFO] [ForgeModLoader] Reading custom logging properties from C:\Users\Kévin\Desktop\forge1\mcp\jars\config\logging.properties
                2013-11-13 21:23:08 [OFF] [ForgeModLoader] Logging level for ForgeModLoader logging is set to ALL
                2013-11-13 21:23:08 [INFO] [ForgeModLoader] Searching C:\Users\Kévin\Desktop\forge1\mcp\jars\mods for mods
                2013-11-13 21:23:08 [INFO] [STDOUT]
                2013-11-13 21:23:10 [INFO] [ForgeModLoader] Forge Mod Loader has identified 4 mods to load
                2013-11-13 21:23:10 [INFO] [mcp] Activating mod mcp
                2013-11-13 21:23:10 [INFO] [FML] Activating mod FML
                2013-11-13 21:23:10 [INFO] [Forge] Activating mod Forge
                2013-11-13 21:23:10 [INFO] [CustomMenu] Activating mod CustomMenu
                2013-11-13 21:23:10 [WARNING] [Forge Mod Loader] Mod Forge Mod Loader is missing a pack.mcmeta file, things may not work well
                2013-11-13 21:23:10 [WARNING] [Minecraft Forge] Mod Minecraft Forge is missing a pack.mcmeta file, things may not work well
                2013-11-13 21:23:10 [WARNING] [Custom Menu] Mod Custom Menu is missing a pack.mcmeta file, things may not work well
                2013-11-13 21:23:10 [INFO] [Minecraft-Client] Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:Custom Menu
                2013-11-13 21:23:10 [INFO] [STDOUT]
                2013-11-13 21:23:10 [INFO] [STDOUT] SoundSystem shutting down…
                2013-11-13 21:23:10 [INFO] [STDOUT] Author: Paul Lamb, www.paulscode.com
                2013-11-13 21:23:10 [INFO] [STDOUT]
                2013-11-13 21:23:10 [INFO] [STDOUT]
                2013-11-13 21:23:10 [INFO] [STDOUT] Starting up SoundSystem…
                2013-11-13 21:23:11 [INFO] [ForgeModLoader] Registering Forge Packet Handler
                2013-11-13 21:23:11 [INFO] [ForgeModLoader] Succeeded registering Forge Packet Handler
                2013-11-13 21:23:11 [INFO] [ForgeModLoader] Configured a dormant chunk cache size of 0
                2013-11-13 21:23:11 [INFO] [STDOUT] Initializing LWJGL OpenAL
                2013-11-13 21:23:11 [INFO] [STDOUT] (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org)
                2013-11-13 21:23:11 [INFO] [STDOUT] OpenAL initialized.
                2013-11-13 21:23:11 [INFO] [STDOUT]
                2013-11-13 21:23:12 [INFO] [ForgeModLoader] Forge Mod Loader has successfully loaded 4 mods
                2013-11-13 21:23:12 [WARNING] [Forge Mod Loader] Mod Forge Mod Loader is missing a pack.mcmeta file, things may not work well
                2013-11-13 21:23:12 [WARNING] [Minecraft Forge] Mod Minecraft Forge is missing a pack.mcmeta file, things may not work well
                2013-11-13 21:23:12 [WARNING] [Custom Menu] Mod Custom Menu is missing a pack.mcmeta file, things may not work well
                2013-11-13 21:23:12 [INFO] [Minecraft-Client] Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:Custom Menu
                2013-11-13 21:23:12 [INFO] [STDOUT]
                2013-11-13 21:23:12 [INFO] [STDOUT] SoundSystem shutting down…
                2013-11-13 21:23:12 [INFO] [STDOUT] Author: Paul Lamb, www.paulscode.com
                2013-11-13 21:23:12 [INFO] [STDOUT]
                2013-11-13 21:23:12 [INFO] [STDOUT]
                2013-11-13 21:23:12 [INFO] [STDOUT] Starting up SoundSystem…
                2013-11-13 21:23:13 [INFO] [STDOUT] Initializing LWJGL OpenAL
                2013-11-13 21:23:13 [INFO] [STDOUT] (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org)
                2013-11-13 21:23:13 [INFO] [STDOUT] OpenAL initialized.
                2013-11-13 21:23:13 [INFO] [STDOUT]
                2013-11-13 21:23:14 [SEVERE] [Minecraft-Client] Realms: Invalid session id
                2013-11-13 21:23:14 [SEVERE] [Minecraft-Client] Realms: Invalid session id
                
                

                Edit :

                Autant pour moi, j’avais viré un paragraphe qu’il ne fallait pas virer >< !

                par contre, pour modifier le menu en jeux et le menu d’option, je ne peux pas les ajouter comme ca, mais il faut que je les ajoute dans le tickhandlerclient ou bien il faut que j’en refasse un de la meme manière ?

                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

                  Base toi sur ça :
                  http://dl.mcnanotech.fr/robin4002/mods/Sources/CustomMenu-src.zip

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

                    C’est bon pour le menu principal et pour le menu en jeu, par contre pour la page des options, c’est un peu particulier il me semble, non ?

                    ca crash dès que je vais sur la page… 😕

                    j’ai mit ca comme code dans la classe tickHandlerClient :

                    			GuiCustomOptions customOptions = new GuiCustomOptions(currentScreen, null);
                    
                    			if(currentScreen instanceof GuiOptions && !currentScreen.equals(customOptions))
                    			{
                    				mc.displayGuiScreen(customOptions);
                    			}
                    

                    Et je voudrai aussi savoir si quand le serveur devient down, il est possible de retourner à l’écran principal plutôt que de tomber sur la page de sélection du serveur multijoueur ?

                    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

                      @‘roideseaux’:

                      C’est bon pour le menu principal et pour le menu en jeu, par contre pour la page des options, c’est un peu particulier il me semble, non ?

                      ca crash dès que je vais sur la page… 😕

                      j’ai mit ca comme code dans la classe tickHandlerClient :

                      			GuiCustomOptions customOptions = new GuiCustomOptions(currentScreen, null);
                      			
                      			if(currentScreen instanceof GuiOptions && !currentScreen.equals(customOptions))
                      			{
                      				mc.displayGuiScreen(customOptions);
                      			}
                      

                      Et je voudrai aussi savoir si quand le serveur devient down, il est possible de retourner à l’écran principal plutôt que de tomber sur la page de sélection du serveur multijoueur ?

                      GuiCustomOptions customOptions = new GuiCustomOptions(currentScreen, mc.gameSettings);
                      
                      if(currentScreen instanceof GuiOptions && !currentScreen.equals(customOptions))
                      {
                      mc.displayGuiScreen(customOptions);
                      }
                      

                      Tu ne peux pas déclare ta gui avec un paramètre null dans le constructeur, sinon c’est normal que ça crash avec un NPE 😉

                      Pour le retour sur le menu, tu as utilisé cette fonction pour la connexion ? :

                      this.mc.displayGuiScreen(new GuiConnecting(this, this.mc, "ip", port));
                      

                      Le premier this dans le constructeur correspond au gui actuelle (donc ton menu custom), GuiConnecting ouvre se gui si la connexion échoue.
                      Si c’est pas bon comme ça, c’est que l’action après avoir perdu la connexion n’ouvre pas se gui, donc dans se cas je sais pas comment faire pour changer mettre ton menu lors de la déco du serveur.
                      Ça doit être quand même faisable avec quelques conditions, il faudrait que je prenne le temps de regarder plus en détail.

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

                        Oui effectivement, ça fonctionne mieux, je me doutait bien que le constructeur ne pouvais pas être null mais je ne savais pas le quel mettre !

                        par contre, j’ai un bug, quand je clic sur done, ca ne revient pas à l’écran précédent 😕
                        pourtant dans la class tickHandlerClient, j’ai bien appelé ma gui avec currentScreen en constructeur 😕

                        Et pour l’autre question, j’ai déjà définit ainsi mon bouton de connexion donc effectivement, si la connexion échoue, je suis renvoyé au menu principal, mais par contre quand le serveur crash pour une raison ou pour une autre, je ratterris à la page de sélection de serveur multi !

                        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

                          Étrange, regarde ce que fais le bouton done.
                          Pour le retour sur le menu, je crains que ça va pas être possible, au pire si tu as supprimé le bouton multiplayer sur ton menu, tu peux faire que si le menu multiplayer est ouvert, ça ouvre le menu principale modifié.

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

                            le bouton done fait ça :

                            if (par1GuiButton.id == 200)
                            {
                            this.mc.gameSettings.saveOptions();
                            this.mc.displayGuiScreen(this.parentScreen);
                            }
                            

                            plus haut, il y a :

                            
                            public GuiCustomOptions(GuiScreen par1GuiScreen, GameSettings par2GameSettings)
                            {
                            this.parentScreen = par1GuiScreen;
                            this.options = par2GameSettings;
                            }
                            
                            

                            et j’appelle la classe avec :

                            
                            GuiCustomOptions customOptions = new GuiCustomOptions(currentScreen, mc.gameSettings);
                            
                            if(currentScreen instanceof GuiOptions && !currentScreen.equals(customOptions))
                            {
                            mc.displayGuiScreen(customOptions);
                            }
                            
                            

                            pour moi, il n’y a rien qui cloche !

                            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

                              Je vois le problème, quand tu clic sur le GuiOptions, il ouvre GuiCustomOptions, mais le currentScreen correspond à GuiOptions. Donc quand tu clic sur done, ça ouvre GuiOptions, et le tickhandler ouvre à nouveau GuiCustomOptions, ce qui fait une boucle infini.
                              Plutôt que passer par le TickHandler, il faudrait modifier dans le menu Custom le gui ouvert lorsqu’on clic sur option, même chose pour GuiInGame (Forge permet de changer GuiInGame facilement).

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

                                Ok, merci beaucoup !

                                je pense que je n’ai plus de souci 🙂

                                impec pour le menu multijoueur, dès que la page est chargée, ca me swich direct sur mon menu principal 🙂

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

                                  Petite question, c’est le même principe pour la modification de l’inventaire ?

                                  J’ai voulu essayer mais malheureusement dans le constructeur de ma class GuiCustomInventory il me demande EntityPlayer par1EntityPlayer.

                                  
                                  public GuiCustomInventory(EntityPlayer par1EntityPlayer)
                                  {
                                  super(par1EntityPlayer.inventoryContainer);
                                  this.allowUserInput = true;
                                  par1EntityPlayer.addStat(AchievementList.openInventory, 1);
                                  }
                                  

                                  du coups dans mon TickHandlerInventory il me le réclame:

                                  @Override
                                  public void tickEnd(EnumSet <ticktype>type, Object… tickData){
                                  if(type.equals(EnumSet.of(TickType.CLIENT))){
                                  Minecraft mc = Minecraft.getMinecraft();
                                  GuiScreen currentScreen = mc.currentScreen;
                                  List players = mc.theWorld.playerEntities;
                                  GuiCustomInventory customInventory = new GuiCustomInventory(..); //ici
                                  
                                  if(currentScreen instanceof GuiInventory && !currentScreen.equals(customInventory))
                                  mc.displayGuiScreen(customInventory);
                                  }
                                  }
                                  

                                  J’ai essayer de plusieurs façon différente d’aller le rechercher mais malheureusement à chaque fois il me retourne null…

                                  Merci d’avance :P</ticktype>

                                  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 te faut le joueur en paramètre, je partirais plutôt sur un tickhandler de type player.

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

                                      C’est pas con, j’ai pas spécialement pensé à regarder la documentation (Dans les commentaires du code c’est marqué que pour serveur le type PLAYER…).

                                      Maintenant il veut bien compiler mais par contre il rentre pas dans le if

                                      if(type.equals(EnumSet.of(TickType.PLAYER))) { }
                                      
                                      @Override
                                      public void tickEnd(EnumSet <ticktype>type, Object… tickData){
                                      if(type.equals(EnumSet.of(TickType.PLAYER))){
                                      Minecraft mc = Minecraft.getMinecraft();
                                      GuiScreen currentScreen = mc.currentScreen;
                                      GuiCustomInventory customInventory = new GuiCustomInventory((EntityPlayer) tickData[0]);
                                      System.out.println("TESTTTTTTTTTTTTT");
                                      if(currentScreen instanceof GuiInventory && !currentScreen.equals(customInventory))
                                      mc.displayGuiScreen(customInventory);
                                      }
                                      else
                                      System.out.println("FAILLLLLLLLLLLLLLLLLLLLLLL");
                                      }
                                      

                                      Petite info sur la documentation :

                                      PLAYER
                                      public static final TickType PLAYER
                                      client and server side. Fired whenever the players update loop runs. arg 0 : the player arg 1 : the world the player is in
                                      ```</ticktype>
                                      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

                                        Oui, car mc.currentScreen retourne GuiForgeInGame
                                        Cette fonction donne le Screen ouvert, le menu de minecraft qui tourne. Elle ne renvoie pas les gui de bloc, entity, etc …
                                        Il faudrait plutot utiliser GuiOpenEvent pour ça, mais tu n’as pas player en argument. Donc je pense pas que ce soit faisable.

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • 1
                                        • 2
                                        • 1 / 2
                                        • Premier message
                                          Dernier message
                                        Design by Woryk
                                        ContactMentions Légales

                                        MINECRAFT FORGE FRANCE © 2024

                                        Powered by NodeBB