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.
    • 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
                    • robin4002R Hors-ligne
                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                      dernière édition par

                      Donc ton paquet ne fonctionne pas correctement.
                      Et je crois avoir trouvé le problème.
                      network.registerMessage(PacketOpenGui.Handler.class, PacketOpenGui.class, 0, Side.SERVER);
                      Devrait être :
                      network.registerMessage(PacketOpenGui.Handler.class, PacketOpenGui.class, 0, Side.CLIENT);

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

                        Tu es sur pareque dans le tuto de RedPlay c’est écrit Server

                        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 faut mettre celui qui reçoit le paquet. Dans ton cas c’est le client.

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

                            Et si je met le mod sur un serveur avec le solde.Client ça va marcher ?

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

                              oui ça marchera

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

                                Ok merci beaucoup juste dernière question c’est ou pour modifier les dimensions du GuiScreen ? Je sais que c’est la :

                                    public void drawScreen(int mouseX, int mouseY, float partialTick)
                                    {
                                
                                        mc.getTextureManager().bindTexture(ressource);
                                
                                        this.drawTexturedModalRect(this.width / 2 - 135, this.height / 2 - 200, 0, 0, 256, 250);
                                
                                        super.drawScreen(mouseX, mouseY, partialTick);
                                    }
                                

                                mais il faut modifier quoi exactement ?

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

                                  this.drawTexturedModalRect(this.width / 2 - 135, this.height / 2 - 200, 0, 0, 256, 250);  ->          256 / 250 (a la fin) il me semble

                                  Et pour l’enregistrement du packet je t’avais dis côté server c’est ma faute!

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

                                    Pas grave 🙂 Merci beaucoup ca marche a la perfection !!! je met en resolu

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

                                    MINECRAFT FORGE FRANCE © 2024

                                    Powered by NodeBB