MFF

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

    Envoyer un message sur Discord quand un serveur Minecraft est ouvert

    Planifier Épinglé Verrouillé Déplacé Le salon libre
    70 Messages 3 Publieurs 204 Vues 3 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.
    • robin4002R Hors-ligne
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
      dernière édition par

      Bizarre. Je vais regarder ça en détails ce soir.

      OrgeAlexj06O 1 réponse Dernière réponse Répondre Citer 0
      • OrgeAlexj06O Hors-ligne
        OrgeAlexj06 @robin4002
        dernière édition par

        @robin4002 Ok, prends ton temps 👍

        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 robin4002

          Bon après multiple tentative :

              @EventHandler
              public void onServerStart(FMLServerStartedEvent event)
              {
                  try {            
                      sendDiscordWebhookMessage("Server status notifier", "Le serveur vient de démarrer");
                  }
                  catch(IOException ex) {
                      System.err.println("Impossible d'envoyer le message de démarrage sur discord");
                      ex.printStackTrace();
                  }
              }
              
              public void sendDiscordWebhookMessage(String username, String message) throws IOException
              {
                  HttpPost post = new HttpPost("lien webhook discord");
                  post.addHeader("Content-Type", "application/json");
                  post.addHeader("User-Agent", "Minecraft Server");
          
                  JsonObject json = new JsonObject();
                  json.addProperty("username", username);
                  json.addProperty("content", message);
          
                  // send a JSON data
                  post.setEntity(new StringEntity(json.toString()));
          
          
                  CloseableHttpClient httpClient = HttpClients.createDefault();
                  CloseableHttpResponse response = httpClient.execute(post);
                  if (response.getEntity() != null) {                
                      String result = EntityUtils.toString(response.getEntity());
                      System.out.println(result);
                  }
              }
          

          Il faut impérativement avoir un User-Agent sinon Discord refuse la requête.
          J’ai séparé l’envoie dans une fonction à part, comme ça tu peux également réutiliser la fonction sendDiscordWebhookMessage pour l’extinction du serveur 😉

          OrgeAlexj06O 2 réponses Dernière réponse Répondre Citer 0
          • OrgeAlexj06O Hors-ligne
            OrgeAlexj06 @robin4002
            dernière édition par

            @robin4002 Ok, je teste ça demain et je te tiens au courant, et déjà d’avance, merci pour toute cette implication 👍

            1 réponse Dernière réponse Répondre Citer 0
            • OrgeAlexj06O Hors-ligne
              OrgeAlexj06 @robin4002
              dernière édition par

              @robin4002 Et y-a-t-il des trucs a modifier ? (a part le lien a rajouter) car j’ai encore un crash mais ca na pas l’air d’être le meme

              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

                Non, il y a que le lien à changer.

                Envoies le rapport de crash ?

                OrgeAlexj06O 1 réponse Dernière réponse Répondre Citer 0
                • OrgeAlexj06O Hors-ligne
                  OrgeAlexj06 @robin4002
                  dernière édition par robin4002

                  @robin4002 Voici le crash :

                  ---- Minecraft Crash Report ----
                  // Who set us up the TNT?
                  
                  Time: 16/01/21 14:14
                  Description: Exception in server tick loop
                  
                  java.lang.NoClassDefFoundError: org/apache/http/HttpEntity
                  	at java.lang.Class.forName0(Native Method)
                  	at java.lang.Class.forName(Unknown Source)
                  	at net.minecraftforge.fml.common.FMLModContainer.constructMod(FMLModContainer.java:539)
                  	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                  	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
                  	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
                  	at java.lang.reflect.Method.invoke(Unknown Source)
                  	at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91)
                  	at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150)
                  	at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76)
                  	at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399)
                  	at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71)
                  	at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116)
                  	at com.google.common.eventbus.EventBus.post(EventBus.java:217)
                  	at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:219)
                  	at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:197)
                  	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                  	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
                  	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
                  	at java.lang.reflect.Method.invoke(Unknown Source)
                  	at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91)
                  	at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150)
                  	at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76)
                  	at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399)
                  	at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71)
                  	at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116)
                  	at com.google.common.eventbus.EventBus.post(EventBus.java:217)
                  	at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:136)
                  	at net.minecraftforge.fml.common.Loader.loadMods(Loader.java:566)
                  	at net.minecraftforge.fml.server.FMLServerHandler.beginServerLoading(FMLServerHandler.java:102)
                  	at net.minecraftforge.fml.common.FMLCommonHandler.onServerStart(FMLCommonHandler.java:335)
                  	at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:169)
                  	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:688)
                  	at java.lang.Thread.run(Unknown Source)
                  Caused by: java.lang.ClassNotFoundException: org.apache.http.HttpEntity
                  	at java.net.URLClassLoader.findClass(Unknown Source)
                  	at java.lang.ClassLoader.loadClass(Unknown Source)
                  	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
                  	at java.lang.ClassLoader.loadClass(Unknown Source)
                  	at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:106)
                  	at java.lang.ClassLoader.loadClass(Unknown Source)
                  	at java.lang.ClassLoader.loadClass(Unknown Source)
                  	... 34 more
                  
                  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 robin4002

                    hum donc contrairement à ce que je pensais, le client http d’apache est pas dispo, pourtant il était présent sur le classpath de la workspace alors que je n’ai rien ajouté.

                    Donc il va falloir encore modifier le code, revenir sur le client http de java.

                    @EventHandler
                        public void onServerStart(FMLServerStartedEvent event)
                        {
                            try {            
                                sendDiscordWebhookMessage("Server status notifier", "Le serveur vient de démarrer");
                            }
                            catch(Exception ex) {
                                System.err.println("Impossible d'envoyer le message de démarrage sur discord");
                                ex.printStackTrace();
                            }
                        }
                        
                        public void sendDiscordWebhookMessage(String username, String message) throws Exception
                        {
                            URL url = new URL ("url");
                            HttpURLConnection con = (HttpURLConnection)url.openConnection();
                            con.setRequestMethod("POST");
                    
                            con.setRequestProperty("Content-Type", "application/json; utf-8");
                            con.setRequestProperty("User-Agent", "Minecraft Server");
                            con.setRequestProperty("Accpet", "application/json");
                            con.setDoOutput(true);
                    
                            JsonObject json = new JsonObject();
                            json.addProperty("username", username);
                            json.addProperty("content", message);
                    
                            try(OutputStream os = con.getOutputStream()) {
                                byte[] input = json.toString().getBytes("utf-8");
                    
                                os.write(input, 0, input.length);
                            }
                            
                            BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"));
                    
                            StringBuilder response = new StringBuilder();
                            String responseLine = null;
                            while ((responseLine = br.readLine()) != null) {
                                response.append(responseLine.trim());
                            }
                    
                            System.out.println(response.toString());
                        }
                    

                    P.S : j’ai reprit le code des précédents message supprimé (les admin voient les messages supprimés) et en testant je crois que j’ai envoyé un message vers ton discord car j’ai oublié de changer l’url par mon webhook de test x).

                    OrgeAlexj06O 2 réponses Dernière réponse Répondre Citer 0
                    • OrgeAlexj06O Hors-ligne
                      OrgeAlexj06 @robin4002
                      dernière édition par

                      @robin4002 J’ai bien reçu le message 👍 ca devrai bien marcher alors. Je vais test

                      1 réponse Dernière réponse Répondre Citer 0
                      • OrgeAlexj06O Hors-ligne
                        OrgeAlexj06 @robin4002
                        dernière édition par

                        @robin4002 Nickel ca marche ! Juste petit problème, le démarrer est bugé sur Discord, il apparait sans le é et il y a @… a la place, possible de modifier ca ? Sinon merci

                        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

                          Assures-toi que ta workspace est en UTF8.
                          Dans les préférences d’eclipse :
                          eclipse utf8

                          OrgeAlexj06O 2 réponses Dernière réponse Répondre Citer 0
                          • OrgeAlexj06O Hors-ligne
                            OrgeAlexj06 @robin4002
                            dernière édition par

                            @robin4002 Pourtant c’est bien config, mais bon, je vais trouver un texte sans accent. Merci pour tout 😁

                            1 réponse Dernière réponse Répondre Citer 0
                            • OrgeAlexj06O Hors-ligne
                              OrgeAlexj06 @robin4002
                              dernière édition par robin4002

                              @robin4002 Et pour l’extinction c’est ça ? :

                              @EventHandler
                                  public void onServerStart(FMLServerStoppedEvent event)
                                  {
                                      try {            
                                          sendDiscordWebhookMessage("Server status notifier", "Le serveur de s'arrêter");
                                      }
                                      catch(Exception ex) {
                                          System.err.println("Impossible d'envoyer le message de démarrage sur discord");
                                          ex.printStackTrace();
                                      }
                                  }
                                  
                                  public void sendDiscordWebhookMessage(String username, String message) throws Exception
                                  {
                                      URL url = new URL ("url");
                                      HttpURLConnection con = (HttpURLConnection)url.openConnection();
                                      con.setRequestMethod("POST");
                               
                                      con.setRequestProperty("Content-Type", "application/json; utf-8");
                                      con.setRequestProperty("User-Agent", "Minecraft Server");
                                      con.setRequestProperty("Accpet", "application/json");
                                      con.setDoOutput(true);
                               
                                      JsonObject json = new JsonObject();
                                      json.addProperty("username", username);
                                      json.addProperty("content", message);
                               
                                      try(OutputStream os = con.getOutputStream()) {
                                          byte[] input = json.toString().getBytes("utf-8");
                               
                                          os.write(input, 0, input.length);
                                      }
                                      
                                      BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"));
                               
                                      StringBuilder response = new StringBuilder();
                                      String responseLine = null;
                                      while ((responseLine = br.readLine()) != null) {
                                          response.append(responseLine.trim());
                                      }
                               
                                      System.out.println(response.toString());
                                  }
                              
                              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 robin4002

                                Oui, par contre tu n’as pas besoin de répéter la fonction sendDiscordWebhookMessage, elle ne doit que être une fois dans ton code. (et nommes la fonction onServerStopped au lieu de onServerStart).
                                Tu peux alors avoir les deux fonctions (onServerStopped & onServerStarted) dans la même classe.

                                OrgeAlexj06O 3 réponses Dernière réponse Répondre Citer 0
                                • OrgeAlexj06O Hors-ligne
                                  OrgeAlexj06 @robin4002
                                  dernière édition par

                                  Ce message a été supprimé !
                                  1 réponse Dernière réponse Répondre Citer 0
                                  • OrgeAlexj06O Hors-ligne
                                    OrgeAlexj06 @robin4002
                                    dernière édition par

                                    @robin4002 C’est bon, ça marche, et encore… Merci pour tout !!!

                                    1 réponse Dernière réponse Répondre Citer 1
                                    • OrgeAlexj06O Hors-ligne
                                      OrgeAlexj06 @robin4002
                                      dernière édition par

                                      @robin4002 Bonjour, j’ai encore un petit problème à ce sujet, quand un joueur allume le jeu avec ce mod, ca envoie aussi le message. Je veux que ce soit juste un mod “serveur” que les gens peuvent se connecter sans l’avoir dans le dossier mod. Est-ce possible ? Merci de ton aide 😉

                                      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 robin4002

                                        Heu oui, faut pas le donner au client ce mod ! Il ne doit que être installé sur le serveur.

                                        Et effectivement, j’ai oublié de te préciser qu’il faut que tu ajoutes serverSideOnly = true dans la partie @Mod(modid = "tonmodid", name = "tonnom", version = "1.0.0", <ICI>)

                                        OrgeAlexj06O 2 réponses Dernière réponse Répondre Citer 0
                                        • OrgeAlexj06O Hors-ligne
                                          OrgeAlexj06 @robin4002
                                          dernière édition par

                                          @robin4002 Ok, merci beaucoup, car avec cette histoire de serveur, je suis un peu pommer, aussi sur un autre point mais je ferai un nouveau post je pense 😉

                                          I 1 réponse Dernière réponse Répondre Citer 0
                                          • I Hors-ligne
                                            ImperoMaximo @OrgeAlexj06
                                            dernière édition par

                                            @orgealexj06 Salut, compte tu mettre ton mod à disposition dans le futur ou non ? Car j’aime vraiment beaucoup le principe et cela peut être très utile (avec un moyen de changer l’url du webhook ou autre), merci d’avance !

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

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB