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 7.5k Vues 1 Abonné
    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

      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
                      • 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
                                      • 1 / 2
                                      • Premier message
                                        Dernier message
                                      Design by Woryk
                                      ContactMentions Légales

                                      MINECRAFT FORGE FRANCE © 2024

                                      Powered by NodeBB