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.
    • 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