MFF

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

    Recherche affichage pour un broadcast

    Planifier Épinglé Verrouillé Déplacé Sans suite
    37 Messages 5 Publieurs 7.0k 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.
    • DeletedD Hors-ligne
      Deleted
      dernière édition par

      Le tutoriel n’est plus à jour. Il faudrait que tu regardes plus attentivement en attendant ce soir.
      Mais pour une simple commande le plus simple serait de passer par l’event.
      Cette condition :
      if (event.message.getUnformattedText().startsWith(" ~")
      On peut la traduire comme : “SI un message non-formatté commence par " ~” " Donc ta condition, pour ce que tu souhaites faire, ne sert strictement à rien Il faudrait que tu voies si le message commence par “/broadcast” en virant ce que la console te dira juste avant, à savoir le pseudo du joueur et un tas d’autres chose. Encore une fois si tu débutes, je te conseille de revoir tes bases en java, et d’attendre une autre réponse si tu n’y arrives vraiment 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

        Regarder que le message commencer par /broadcast ne fonctionnera pas car le client n’a aucune idée de la commande qui a été utilisé. Il reçoit juste le texte, donc dans le cas de l’image du premier message il recevra [Message] test

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

          Du coup on fait comment pour détecter un /broadcast ?

          [/font…

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

            J’imagine que c’est le serveur qui lancera la commande /broadcast, pas un joueur ?

            EDIT = Si il s’agit d’un joueur, voici une piste pour débuter :

            
            String message = event.message.getUnformattedText().substring(Minecraft.getMinecraft().getSession().getUsername().length() + 3, event.message.getUnformattedText().length());
            if(message.equals("broadcast"))
            System.out.println("ton code");
            
            

            J’ai un problème, c’est qu’ajouter un / tout devant n’est pas accepté par le système de commandes inclu dans MC. On aurait pu s’en douter 😕
            Du coup soit on continue en cherchant une solution, soit tu te contentes de simplement ajouter /broadcast sans slash. A toi de voir 😃
            Après je n’ai pas testé comment on aurait dû procéder si la commande avait été exécutée par la console directement, à la place d’un joueur. Mais au pire tu peux feinter en faisant dire au joueur, rentré dans son claim qu’il vient de dire /broadcast et le message s’affichera. Mais du coup ce qu’il n’a normalement pas dit s’affichera dans la console ! Ce qui n’est pas non plus la meilleure solution…

            Le mieux resterait vraiment de se servir du tuto fait exprès 😉

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

              Faire une commande est simple pourtant, il faut enregistrer la commande comme dit dans le tuto (dans l’event FMLServerStartingEvent) et la commande est une classe extends CommandBase (comme dit dans le tuto) :

              Exemple :

              
              public class CommandReloadConfig extends CommandBase {
              
              @Override
              public String getCommandName() {
              return "rsreload";
              }
              
              @Override
              public String getCommandUsage(ICommandSender sender) {
              return null;
              }
              
              @Override
              public int getRequiredPermissionLevel()
              {
              return 1;
              }
              
              @Override
              public void processCommand(ICommandSender sender, String[] args) {
              ConfigurationLoader.read(new File(ConfigurationLoader.configFilePath));
              sender.addChatMessage(new ChatComponentText("Configuration file reloaded"));
              }
              
              

              Dans processCommand on envoie un packet au client qui display le message à son écran

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

                Pas besoin d’envoyer de packet, les commandes sont déjà côté client.

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

                  Tu es sûr ? Si c’est le cas pas besoin de packet effectivement

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

                    Tu me mets le doute x)
                    Faudra faire des tests aujourd’hui alors.

                    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

                      Les commandes sont tous exécuté côté serveur. player.addChatMessage envoie un paquet au client.

                      @‘SkylleHD’:

                      Du coup on fait comment pour détecter un /broadcast ?

                      Je ne suis pas sûr qu’on puisse. Le mieux c’est de faire une commande custom qui envoie un paquet au client et à l’arrivé de ce paquet le client affiche le message.

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

                        Ok merci a tous pour vos réponses je vais tester sa tout de suite ! Et je vous dit si sa fonctione.  😄

                        [/font…

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

                          1. String message = event.message.getUnformattedText().substring(Minecraft.getMinecraft().getSession().getUsername().length() + 3, event.message.getUnformattedText().length());
                          2. if(message.equals(“broadcast”))
                          3. System.out.println(“ton code”);

                          Le “ton code” je mais quoi dedans ? pour que sa fonction.

                          1. public class CommandReloadConfig extends CommandBase {

                          2. @Override

                          3. public String getCommandName() {

                          4. return “rsreload”;

                          5. }

                          6. @Override

                          7. public String getCommandUsage(ICommandSender sender) {

                          8. return null;

                          9. }

                          10. @Override

                          11. public int getRequiredPermissionLevel()

                          12. {

                          13. return 1;

                          14. }

                          15. @Override

                          16. public void processCommand(ICommandSender sender, String[] args) {

                          17. ConfigurationLoader.read(new File(ConfigurationLoader.configFilePath));

                          18. sender.addChatMessage(new ChatComponentText(“Configuration file reloaded”));

                          19. }

                          J’ai un problème avec le “ConfigurationLoader” il ne le trouve pas sur eclipse.

                          [/font…

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

                            C’était un exemple, ici c’est une commande pour reload le fichier de configuration d’un mod, c’est normal qu’il ne trouve pas ConfigurationLoader qui est une classe que j’ai créé, dans processCommand il faut que tu envoie un packet au client

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

                              @‘BrokenSwing’:

                              C’était un exemple, ici c’est une commande pour reload le fichier de configuration d’un mod, c’est normal qu’il ne trouve pas ConfigurationLoader qui est une classe que j’ai créé, dans processCommand il faut que tu envoie un packet au client

                              Du coup je dois crée une class Broadcast ?

                              [/font…

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

                                Tu crée une classe qui s’appelle par exemple BroadcastCommand qui est extends CommandBase et dans getCommandName() tu met return “broadcast”;
                                Dans processCommand tu envoie un packet au joueurs.

                                Ensuite il faut que tu enregistre la commande avec l’event FMLServerStartingEvent en faisaint un truc comme event.registerServerCommand(new BroadcastCommand());

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

                                  Sa serai un truc comme sa ?

                                  package StrafeMod;
                                  
                                  import java.io.File;
                                  
                                  import net.minecraft.command.CommandBase;
                                  import net.minecraft.command.ICommandSender;
                                  
                                  public class CommandTutoriel extends CommandBase
                                  {
                                  @Override
                                  public String getCommandName()
                                  {
                                  return "broadcast";
                                  }
                                  
                                  @Override
                                  public String getCommandUsage(ICommandSender sender)
                                  {
                                  return "broadcast <text>";
                                  }
                                  
                                  @Override
                                  public void processCommand(ICommandSender sender, String[] arguments){
                                  
                                  BroadcastCommand.read(new File(BroadcastCommand.configFilePath));
                                  
                                  sender.getCommandSenderName();
                                  }
                                  }
                                  

                                  avec sa :

                                  package StrafeMod;
                                  
                                  import java.io.File;
                                  
                                  public class BroadcastCommand extends CommandTutoriel {
                                  
                                  public static String configFilePath;
                                  
                                  public static void read(File file) {
                                  
                                  }
                                  
                                  public static Object createFromTranslationKey(String string) {
                                  // TODO Auto-generated method stub
                                  return null;
                                  }
                                  
                                  }
                                  
                                  ```</text>

                                  [/font…

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

                                    Mouai … non

                                    
                                    public class CommandTutoriel extends CommandBase
                                    {
                                    @Override
                                    public String getCommandName()
                                    {
                                    return "broadcast";
                                    }
                                    
                                    @Override
                                    public String getCommandUsage(ICommandSender sender)
                                    {
                                    return "broadcast <text>";
                                    }
                                    
                                    @Override
                                    public void processCommand(ICommandSender sender, String[] arg){
                                    if(arg.length > 0) ClassePrincipale.network.sendToAll(new TonPacket(arg));
                                    }
                                    }
                                    
                                    ```</text>
                                    1 réponse Dernière réponse Répondre Citer 0
                                    • SkylleHDS Hors-ligne
                                      SkylleHD
                                      dernière édition par

                                      Sa ne fonctionne toujours pas  😐 
                                      Je n’arrive pas à le faire fonctionner

                                      [/font…

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

                                        Tu en est où pour le moment ?
                                        Envoie : La classe de ta commande, ta classe principale, ton packet

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

                                          La class Principal :

                                          package StrafeMod;
                                          
                                          import java.awt.Color;
                                          import org.lwjgl.opengl.GL11;
                                          import net.minecraft.client.Minecraft;
                                          import net.minecraft.client.gui.FontRenderer;
                                          import net.minecraft.client.gui.GuiIngame;
                                          import net.minecraft.client.gui.GuiIngameMenu;
                                          import net.minecraft.client.gui.GuiMainMenu;
                                          import net.minecraft.client.gui.GuiScreen;
                                          import net.minecraft.client.renderer.OpenGlHelper;
                                          import net.minecraft.init.Blocks;
                                          import net.minecraftforge.client.GuiIngameForge;
                                          import net.minecraftforge.client.event.ClientChatReceivedEvent;
                                          import net.minecraftforge.client.event.RenderGameOverlayEvent;
                                          import net.minecraftforge.common.MinecraftForge;
                                          import cpw.mods.fml.common.FMLCommonHandler;
                                          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.FMLPostInitializationEvent;
                                          import cpw.mods.fml.common.event.FMLServerStartingEvent;
                                          import cpw.mods.fml.common.eventhandler.SubscribeEvent;
                                          import cpw.mods.fml.common.gameevent.TickEvent;
                                          import cpw.mods.fml.common.gameevent.TickEvent.Phase;
                                          import cpw.mods.fml.relauncher.Side;
                                          import cpw.mods.fml.relauncher.SideOnly;
                                          
                                             @Mod(modid = ModStrafe.MODID, version = ModStrafe.VERSION)
                                          
                                             public class ModStrafe
                                          
                                             {
                                          
                                                 public static final String MODID = "GuiInGame";
                                          
                                                 public static final String VERSION = "1.0";
                                          
                                          public static final String network = null;
                                          
                                                 protected String msgPlaying = "";
                                          
                                                 protected int msgPlayingUpFor = 0;
                                          
                                                 @EventHandler
                                          
                                                 public void init(FMLInitializationEvent event)
                                          
                                                 {
                                          
                                                     MinecraftForge.EVENT_BUS.register(this);
                                          
                                                 }
                                          
                                                 @EventHandler
                                                 public void serverStarting(FMLServerStartingEvent event)
                                                 {
                                          
                                                         event.registerServerCommand(new CommandTutoriel());
                                                 }
                                          
                                                 @SubscribeEvent
                                          
                                                 @SideOnly(Side.CLIENT)
                                          
                                                 public void onGuiIngameRender(RenderGameOverlayEvent.Post event)
                                          
                                                 {
                                          
                                                     if (this.msgPlayingUpFor > 0)
                                          
                                                     {
                                          
                                                         this.msgPlayingUpFor–;
                                          
                                                         String str = "" + this.msgPlaying;
                                          
                                                         Minecraft.getMinecraft().fontRenderer.drawString(str, (event.resolution.getScaledWidth() / 2) - (Minecraft.getMinecraft().fontRenderer.getStringWidth(str) / 2), event.resolution.getScaledHeight() - 75, Integer.MAX_VALUE);
                                          
                                                     }
                                          
                                                 }
                                          
                                          public void renderMsg(String message)
                                          
                                                 {
                                          
                                                   this.msgPlaying = message;
                                          
                                                   this.msgPlayingUpFor = 2000;
                                          
                                                 }
                                          
                                                 @SubscribeEvent
                                          
                                                 @EventHandler
                                          
                                                 public void onClientChatMessage(ClientChatReceivedEvent event)
                                          
                                                 {
                                                  if (event.message.getUnformattedText().startsWith(" ~") || event.message.getUnformattedText().startsWith("broadcast"))
                                                  {
                                                  System.out.println("DEBUG");
                                          
                                                         this.renderMsg(event.message.getFormattedText());
                                          
                                                         event.setCanceled(true);
                                          
                                                  }
                                          
                                               }
                                          
                                             }
                                          

                                          La class commande :

                                          package StrafeMod;
                                          
                                          import java.io.File;
                                          
                                          import net.minecraft.command.CommandBase;
                                          import net.minecraft.command.ICommandSender;
                                          import sun.security.krb5.internal.Ticket;
                                          
                                          public class CommandTutoriel extends CommandBase
                                          {
                                          
                                             @Override
                                             public String getCommandName()
                                             {
                                                 return "broadcast";
                                             }
                                          
                                             @Override
                                             public String getCommandUsage(ICommandSender sender)
                                             {
                                                 return "broadcast <text>";
                                             }
                                          
                                             @Override
                                             public void processCommand(ICommandSender sender, String[] arg){
                                                 if(arg.length > 0)  ModStrafe.network.notifyAll();
                                             }        
                                          }
                                          
                                          

                                          Mon packet

                                          package StrafeMod;
                                          
                                          import java.io.File;
                                          
                                          public class BroadcastCommand extends CommandTutoriel {
                                          
                                          public static String configFilePath;
                                          
                                          public BroadcastCommand(String[] arg) {
                                          // TODO Auto-generated constructor stub
                                          }
                                          
                                          public static void read(File file) {
                                          
                                          }
                                          
                                          public static Object createFromTranslationKey(String string) {
                                          // TODO Auto-generated method stub
                                          return null;
                                          }
                                          
                                          }
                                          ```</text>

                                          [/font…

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

                                            Mets des balises java, parce que là …
                                            Ta classe de la commande est presque bonne, ensuite ton network (c’est un String wtf !) il faut que ce soit un SimpleNetworkWrapper que tu initialise ensuite dans la fonction init en faisant comme ça :

                                            
                                            network = NetworkRegistry.INSTANCE.newSimpleChannel(MODID);
                                            
                                            

                                            A la suite faut que enregistre ton packet :

                                            
                                            network.registerMessage(ClasseDuPacket.Handler.class, ClasseDuPacket.class, 0, Side.CLIENT);
                                            
                                            

                                            Et la classe du packet je vais pas te la faire, mais je t’invite à regarder ici : ~~http://www.minecraftforgefrance.fr/showthread.php?tid=1118#enregistrerPacket~~

                                            Et puis lit depuis le début, ça ne fera pas de mal http://www.minecraftforgefrance.fr/showthread.php?tid=1118#intro

                                            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