MFF

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

    1.7.10 GuiScreen & Commande

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    29 Messages 6 Publieurs 6.7k 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.
    • AymericRedA Hors-ligne
      AymericRed
      dernière édition par

      @‘mrlebest’:

      un GuiScreen avec un backgrounds des bouton ect

      C’est à dire ? Changer la texture des boutons ?

      Et pour la commande suffit de chercher comment on fait une commande et comment on ouvre un gui (les deux sont sur le forum), et de rassembler les deux.

      Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

      AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

      Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
      Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

        Non non juste créé un Gui avec un backgrounds et pourvoir y rajouter des bouton et si possible modifier la texture des bouton après

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

          Salut, bha il suffit de créer une classe extends GuiScreen et de dessiner ton images et ajouter t’es boutons simplement

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

            Oui je s’avais ça mais pour la commande je fais comment ?

            Edit : J’ai trouver pour les commandes maintenant il faut relier le Gui à la commande et je sais pas faire

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

              Envoie ta classe je vais t’expliqué en même temps donne moi la ligne que tu as trouvé pour exécuter la commande pour être sur que c’est bien ça.

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

                @‘floriangabet’:

                Envoie ta classe je vais t’expliqué en même temps donne moi la ligne que tu as trouvé pour exécuter la commande pour être sur que c’est bien ça.

                J’ai trouver un tuto sur le forum pour les commande et pour la class je peux pas je suis sur tel

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

                  Je peux pas vraiment t’aider alors depuis ton ordinateur envois-nous ta classe

                  1 réponse Dernière réponse Répondre Citer 0
                  • RedRelayR Hors-ligne
                    RedRelay Moddeurs confirmés
                    dernière édition par

                    Pour ouvrir un Gui depuis une commande, il faut que tu retourne au client qui t’envoie la commande un nouveau paquet custom.
                    Les commandes s’exécutent coté serveur, les GUI sont coté client

                    –------------------------------------------------------------------------------------
                    Si tu trouves mon intervention pertinente, n'hésite pas a m…

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

                      Tu peux pas me donner un exemple parceque je suis vraiment débutant java

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

                        Nous ne somme pas la pour te donner les réponses nous sommes la pour t’aider a les trouvées.
                        Mais bon je suis sympa 🙂

                        Normalement ta classe GuiScreen devrait ressembler a ça:

                        
                        import net.minecraft.client.gui.GuiButton;
                        import net.minecraft.client.gui.GuiScreen;
                        import net.minecraft.util.ResourceLocation;
                        
                        public class GuiExemple extends GuiScreen{
                        
                        private ResourceLocation ressource = new ResourceLocation("TONMODID:textures/gui/LENOMDETATEXTURE.png");
                        
                        private int ButtonExemple;
                        
                        public GuiExemple() {
                        
                        }
                        
                        @Override
                        public void initGui() {
                        
                        ButtonExemple = 0;
                        
                        this.buttonList.add(new GuiButton(ButtonExemple, width / 2 - 123, 230, 40, 20, "Bouton Exemple"));
                        
                        super.initGui();
                        }
                        
                        @Override
                        protected void keyTyped(char typedChar, int keyCode) {
                        super.keyTyped(typedChar, keyCode);
                        }
                        
                        @Override
                        protected void actionPerformed(GuiButton button) {
                        
                        switch(button.id) {
                        case 0:
                        //Envoie du packet ici
                        TaClasseMain.network.sendToServer(new PacketCommands());
                        break;
                        
                        default:
                        break;
                        }
                        
                        super.actionPerformed(button);
                        }
                        
                        @Override
                        public void updateScreen() {
                        super.updateScreen();
                        }
                        
                        public void drawScreen(int mouseX, int mouseY, float partialTick) {
                        
                        mc.getTextureManager().bindTexture(ressource);
                        
                        this.drawTexturedModalRect(this.width / 2 - 135, this.height / 2 - 125, 0, 0, 256, 250);
                        
                        super.drawScreen(mouseX, mouseY, partialTick);
                            }
                        
                        }
                        
                        

                        Pour se qui est du packet tien regarde ça: https://www.minecraftforgefrance.fr/showthread.php?tid=1118

                        Ton packet devrait ressemblé a ça:

                        
                        import net.minecraft.entity.player.EntityPlayerMP;
                        import net.minecraft.server.MinecraftServer;
                        import io.netty.buffer.ByteBuf;
                        import cpw.mods.fml.common.network.simpleimpl.IMessage;
                        import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
                        import cpw.mods.fml.common.network.simpleimpl.MessageContext;
                        import cpw.mods.fml.relauncher.Side;
                        import cpw.mods.fml.relauncher.SideOnly;
                        
                        public class PacketCommands implements IMessage{
                        
                        public PacketCommands()
                        {
                        
                        }
                        
                        @Override
                        public void fromBytes(ByteBuf buf) {
                        
                        }
                        
                        @Override
                        public void toBytes(ByteBuf buf) {
                        
                        }
                        
                        public static class ClientHandler implements IMessageHandler <packetmoney, imessage="">{
                               @Override
                               public IMessage onMessage(PacketMoney message, MessageContext ctx)
                               {
                                EntityPlayerMP playermp = ctx.getServerHandler().playerEntity;
                                MinecraftServer.getServer().getCommandManager().executeCommand(MinecraftServer.getServer(), "give " + playermp.getDisplayName() + " minecraft:apple"); // ça devrait te give une pomme (je suis pas sur que se soit ça donc essaye avant)
                                return null;
                               }
                           }
                        
                        }
                        
                        

                        Oublie pas de register (COTE CLIENT) ton packet je te laisse te débrouiller avec le lien que je t’ai donner plus haut.</packetmoney,>

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

                          Merci beaucoup tu ma aider enormement juste pour la commande je fais comment parceque je sais comment cree une commande mais pour la relier au gui je ne sais pas dutout

                          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

                            Regardes mieux le code qu’il a envoyé, c’est exactement ce qu’il faut pour éxecuter une commande depuis un gui.

                            Par contre c’est un peu stupide comme manière de faire, plutôt que créer une commande et la lancer depuis un gui il serait mieux de faire directement l’action voulu depuis le gui.

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

                              Non moi enfaite je veux que lorsque on fais une commande ca ouvre le gui x)

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

                                Ah sérieux x) merde ^^

                                Alors la faut faire ça:

                                Classe commande:

                                
                                import net.minecraft.command.CommandBase;
                                import net.minecraft.command.ICommandSender;
                                import net.minecraft.entity.player.EntityPlayer;
                                
                                public class OpenGuiCommand extends CommandBase{
                                
                                @Override
                                public String getCommandName() {
                                return "lenomdetacommande";
                                }
                                
                                @Override
                                public String getCommandUsage(ICommandSender p_71518_1_) {
                                // TODO Auto-generated method stub
                                return "Usage: /lenomdetacommande";
                                }
                                
                                @Override
                                public void processCommand(ICommandSender sender, String[] args) {
                                if(sender instanceof EntityPlayer)
                                {
                                EntityPlayerMP playermp = (EntityPlayerMP)sender;
                                //sendpacket
                                TACLASSEPRINCIPALE.network.senTo(new PacketOpenGui(), playermp);//Cette fois si enregistre ton packet côté CLIENT
                                }
                                
                                }
                                
                                }
                                
                                

                                Packet, enregistre ton packet côté CLIENT:

                                
                                public class PacketOpenGui implements IMessage
                                {
                                    public PacketOpenGui()
                                    {}
                                
                                    @Override
                                    public void fromBytes(ByteBuf buf)
                                    {}
                                
                                    @Override
                                    public void toBytes(ByteBuf buf)
                                    {}
                                
                                    public static class Handler implements IMessageHandler <packetopengui, imessage="">{
                                    @SideOnly(Side.CLIENT)
                                        @Override
                                        public IMessage onMessage(PacketOpenGui message, MessageContext ctx)
                                        {
                                            Minecraft.getMinecraft().displayGuiScreen(new TONGUISCREEN());//On fait un packet car si on utilise la classe Minecraft côté serveur en multijoueur ça crash!
                                            return null;
                                        }
                                    }
                                
                                

                                Sinon tu as une autre façon sans passer par un packet.

                                Tu peux mettre ton guiscreen dans le guihandle et faire un player.openGui directement dans la commande à toi de voir.

                                EDIT:

                                Oups j’ai oublier:

                                Il faut enregistrer ta commande dans ta classe principale ou ta classe d’event (à toi de voir)

                                tien faut ça:

                                
                                 @EventHandler
                                    public void onServerStarting(FMLServerStartingEvent event)
                                    {
                                        event.registerServerCommand(new OpenGuiCommand());
                                    }
                                ```</packetopengui,>
                                1 réponse Dernière réponse Répondre Citer 0
                                • Yanis_Y Hors-ligne
                                  Yanis_
                                  dernière édition par

                                  Merci beaucoup tu peux juste me dire ou il faux mettre le PacketCommande  et la class de la command ?

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

                                    Il faut les créer ^^ comme tu as fait pour ta classe principale.

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

                                      Ah non c’est bon je suis c** ca marche ! merci beaucoup !!!

                                      Edit : Enfaite non ca marche pas quand je fais la commande ca m’ouvre rien

                                      Class principale :

                                             network = NetworkRegistry.INSTANCE.newSimpleChannel("narcotimod");
                                             network.registerMessage(PacketOpenGui.Handler.class, PacketOpenGui.class, 0, Side.SERVER);
                                         }
                                      
                                         @EventHandler
                                         public void serverStarting(FMLServerStartingEvent event)
                                         {
                                             event.registerServerCommand(new CommandTest());
                                         }
                                      

                                      Class du PacketGuiOpen:

                                      public class PacketOpenGui implements IMessage
                                      {
                                         public PacketOpenGui()
                                         {}
                                      
                                         @Override
                                         public void fromBytes(ByteBuf buf)
                                         {}
                                      
                                         @Override
                                         public void toBytes(ByteBuf buf)
                                         {}
                                      
                                         public static class Handler implements IMessageHandler <packetopengui, imessage="">{
                                         @SideOnly(Side.CLIENT)
                                             @Override
                                             public IMessage onMessage(PacketOpenGui message, MessageContext ctx)
                                             {
                                                 Minecraft.getMinecraft().displayGuiScreen(new GuiScreenTest());//On fait un packet car si on utilise la classe Minecraft côté serveur en multijoueur ça crash!
                                                 System.out.println("Ca marche le Gui !");
                                                 return null;
                                             }
                                         }
                                      }
                                      
                                      

                                      Class de la Command

                                      package fr.mrlebest.narcotimod.common;
                                      
                                      import java.util.List;
                                      
                                      import fr.mrlebest.narcotimod.common.network.PacketOpenGui;
                                      import net.minecraft.command.CommandBase;
                                      import net.minecraft.command.ICommandSender;
                                      import net.minecraft.command.WrongUsageException;
                                      import net.minecraft.entity.player.EntityPlayer;
                                      import net.minecraft.entity.player.EntityPlayerMP;
                                      import net.minecraft.server.MinecraftServer;
                                      import net.minecraft.util.EnumChatFormatting;
                                      
                                      public class CommandTest extends CommandBase
                                      {
                                      
                                         @Override
                                         public String getCommandName()
                                         {
                                             return "test";
                                         }
                                      
                                         @Override
                                         public String getCommandUsage(ICommandSender p_71518_1_)
                                         {
                                             // TODO Auto-generated method stub
                                             return "Usage: /lenomdetacommande";
                                         }
                                      
                                         @Override
                                         public void processCommand(ICommandSender sender, String[] args)
                                         {
                                             if(sender instanceof EntityPlayer)
                                             {
                                                 EntityPlayerMP playermp = (EntityPlayerMP)sender;
                                                 // sendpacket
                                                 NarcotiMod.network.sendTo(new PacketOpenGui(), playermp);// Cette fois si enregistre ton packet côté CLIENT
                                                 System.out.println("Ca marche !");
                                             }
                                      
                                         }
                                      
                                      }
                                      
                                      

                                      Class du GuiScreen

                                      package fr.mrlebest.narcotimod.client.gui;
                                      
                                      import fr.mrlebest.narcotimod.common.NarcotiMod;
                                      import fr.mrlebest.narcotimod.common.network.PacketOpenGui;
                                      import net.minecraft.client.gui.GuiButton;
                                      import net.minecraft.client.gui.GuiScreen;
                                      import net.minecraft.util.ResourceLocation;
                                      
                                      public class GuiScreenTest extends GuiScreen
                                      {
                                      
                                         private ResourceLocation ressource = new ResourceLocation("TONMODID:textures/gui/LENOMDETATEXTURE.png");
                                      
                                         private int ButtonExemple;
                                      
                                         public GuiScreenTest()
                                         {
                                      
                                         }
                                      
                                         @Override
                                         public void initGui()
                                         {
                                      
                                             ButtonExemple = 0;
                                      
                                             this.buttonList.add(new GuiButton(ButtonExemple, width / 2 - 123, 230, 40, 20, "Bouton Exemple"));
                                      
                                             super.initGui();
                                         }
                                      
                                         @Override
                                         protected void keyTyped(char typedChar, int keyCode)
                                         {
                                             super.keyTyped(typedChar, keyCode);
                                         }
                                      
                                         @Override
                                         protected void actionPerformed(GuiButton button)
                                         {
                                      
                                             switch(button.id)
                                             {
                                                 case 0:
                                                     // Envoie du packet ici
                                                     NarcotiMod.network.sendToServer(new PacketOpenGui());
                                                     break;
                                      
                                                 default:
                                                     break;
                                             }
                                      
                                             super.actionPerformed(button);
                                         }
                                      
                                         @Override
                                         public void updateScreen()
                                         {
                                             super.updateScreen();
                                         }
                                      
                                         public void drawScreen(int mouseX, int mouseY, float partialTick)
                                         {
                                      
                                             mc.getTextureManager().bindTexture(ressource);
                                      
                                             this.drawTexturedModalRect(this.width / 2 - 135, this.height / 2 - 125, 0, 0, 256, 250);
                                      
                                             super.drawScreen(mouseX, mouseY, partialTick);
                                         }
                                      
                                      }
                                      
                                      ```</packetopengui,>
                                      1 réponse Dernière réponse Répondre Citer 0
                                      • GabsG Hors-ligne
                                        Gabs
                                        dernière édition par

                                        De rien si c’est résolu met le sujet comme Résolu

                                        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

                                          Le message “Ca marche le Gui !” s’affiche t-il dans la console ?

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

                                            Non mais le ça marche il s’affiche

                                            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