diff --git a/pom.xml b/pom.xml
index c886200d7d3e8815a7ca315c1dce5ef0685318ac..8855c8e4953c9bc4d1cd75205dbdb61acd913309 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
 
     <groupId>com.slprojects</groupId>
     <artifactId>SLCraftPlugin</artifactId>
-    <version>1.4</version>
+    <version>1.5</version>
     <packaging>jar</packaging>
 
     <name>SLCraftPlugin</name>
diff --git a/src/main/java/com/slprojects/slcraftplugin/Main.java b/src/main/java/com/slprojects/slcraftplugin/Main.java
index 45f9473981479c95f98290f45cd09299985559c9..3a01b31ae9788709691f698557b5ec8e915e48aa 100644
--- a/src/main/java/com/slprojects/slcraftplugin/Main.java
+++ b/src/main/java/com/slprojects/slcraftplugin/Main.java
@@ -4,6 +4,8 @@ package com.slprojects.slcraftplugin;
 
 import com.slprojects.slcraftplugin.commandes.linkCodeCommand;
 import com.slprojects.slcraftplugin.commandes.wildCommand;
+import com.slprojects.slcraftplugin.tachesParalleles.waitForDiscordMsg;
+import me.clip.placeholderapi.PlaceholderAPI;
 import org.bukkit.ChatColor;
 import org.bukkit.Sound;
 import org.bukkit.Statistic;
@@ -12,13 +14,23 @@ import org.bukkit.entity.Player;
 import org.bukkit.event.EventHandler;
 import org.bukkit.event.EventPriority;
 import org.bukkit.event.Listener;
+import org.bukkit.event.player.AsyncPlayerChatEvent;
 import org.bukkit.event.player.PlayerJoinEvent;
 import org.bukkit.event.player.PlayerQuitEvent;
 import org.bukkit.plugin.java.JavaPlugin;
 import org.json.simple.JSONObject;
 import org.mariadb.jdbc.MariaDbPoolDataSource;
 
-import java.sql.*;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
 import java.time.Duration;
 import java.time.LocalDateTime;
 import java.time.ZoneOffset;
@@ -27,8 +39,6 @@ import java.util.List;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
 
-import me.clip.placeholderapi.PlaceholderAPI;
-
 import static java.lang.Integer.parseInt;
 
 public final class Main extends JavaPlugin implements Listener {
@@ -68,6 +78,8 @@ public final class Main extends JavaPlugin implements Listener {
         linkCodeCommand linkCodeCommand = new linkCodeCommand(this);
         getCommand("getLinkCode").setExecutor(linkCodeCommand);
 
+        waitForDiscordMsg.startServer(this);
+
         getLogger().info(ChatColor.GREEN+"SL-Craft | Plugin démarré");
     }
 
@@ -105,6 +117,46 @@ public final class Main extends JavaPlugin implements Listener {
         }
     }
 
+    // On renvoie chaque message des joueurs sur le canal de chat du serveur discord
+    @SuppressWarnings("unchecked")
+    @EventHandler(priority = EventPriority.LOWEST)
+    void AsyncChatEvent(AsyncPlayerChatEvent e) throws UnsupportedEncodingException {
+        // On va appeler l'api du bot discord
+        JSONObject json = new JSONObject();
+        json.put("message", e.getMessage());
+        json.put("username", e.getPlayer().getName());
+
+        String urlString = "http://node.sl-projects.com:27001/mc/chat/" + URLEncoder.encode(json.toJSONString(), "UTF-8").replace("+", "%20");
+        getLogger().info(urlString);
+        // Processus long et chiant
+        try {
+            URL url = new URL(urlString);
+            HttpURLConnection con = (HttpURLConnection) url.openConnection();
+            con.setRequestMethod("GET");
+            con.setRequestProperty("User-Agent", "Mozilla/5.0");
+            con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
+            con.setRequestProperty("Content-Type", "application/json");
+            con.setDoOutput(true);
+            con.setDoInput(true);
+            con.setUseCaches(false);
+            con.setAllowUserInteraction(false);
+            con.setConnectTimeout(5000);
+            con.setReadTimeout(5000);
+            con.connect();
+            BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
+            String inputLine;
+            StringBuilder response = new StringBuilder();
+            while ((inputLine = in.readLine()) != null) {
+                response.append(inputLine);
+            }
+            in.close();
+            con.disconnect();
+            getLogger().info(response.toString());
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+    }
+
     // Propre au compteur de temps de jeu
     @SuppressWarnings("unchecked")
     public void savePlayer(Player player) {
@@ -136,7 +188,7 @@ public final class Main extends JavaPlugin implements Listener {
         // On ouvre la bdd
         Connection con = bddOpenConn();
         try {
-            // On va regarder si l'utilisateur existe
+            // On va regarder si Le joueur existe
             PreparedStatement rechercheUtilisateur = con.prepareStatement("SELECT COUNT(*) FROM site_userSetting WHERE uuid = ?");
             rechercheUtilisateur.setString(1, target.get("uuid").toString());
             ResultSet resultat = rechercheUtilisateur.executeQuery();
@@ -156,7 +208,7 @@ public final class Main extends JavaPlugin implements Listener {
                     insertionNbJoins.setString(2, target.get("joins").toString());
                     insertionNbJoins.executeQuery();
 
-                    // On va regarder si l'utilisateur a déjà joué avant (vu qu'on avait pas de données sur ce joueur)
+                    // On va regarder si Le joueur a déjà joué avant (vu qu'on avait pas de données sur ce joueur)
                     if(target.get("hasPlayedBefore").toString().equals("true")){
                         // On va piocher la date d'inscription chez CoreProtect (si elle existe)
                         // On la prend chez CoreProtect car le plugin a été installé dans les premières semaines du serveur. Il a donc bcp plus de données que nous concernant les anciens joueurs.
@@ -172,9 +224,9 @@ public final class Main extends JavaPlugin implements Listener {
                             insertionDateInscription.executeQuery();
 
                             // On va précisier que la date d'inscription a été trouvée chez CoreProtect
-                            getLogger().info("L'utilisateur "+ChatColor.GOLD+target.get("name").toString()+ChatColor.RESET+" n'avait pas de données sur sa date d'inscription dans dans la table des paramètres utilisateurs. On lui a donc attribué comme date de création du compte, celle que détenait CoreProtect.");
+                            getLogger().info("Le joueur "+ChatColor.GOLD+target.get("name").toString()+ChatColor.RESET+" n'avait pas de données sur sa date d'inscription dans dans la table des paramètres utilisateurs. On lui a donc attribué comme date de création du compte, celle que détenait CoreProtect.");
                         } else {
-                            // On insère la date d'inscription (du coup on considère que l'utilisateur n'a pas joué avant, malgré la condition)
+                            // On insère la date d'inscription (du coup on considère que Le joueur n'a pas joué avant, malgré la condition)
                             PreparedStatement insertionDateInscription = con.prepareStatement("INSERT INTO site_userSetting (`uuid`, `name`, `value`) VALUES (?,'joinedDate',?)");
                             insertionDateInscription.setString(1, target.get("uuid").toString());
                             insertionDateInscription.setString(2, java.sql.Timestamp.valueOf(target.get("joinedDate").toString()).toString());
@@ -186,7 +238,7 @@ public final class Main extends JavaPlugin implements Listener {
                             insertionInaccurrateJoinedDate.setString(2, "true");
                             insertionInaccurrateJoinedDate.executeQuery();
                             
-                            getLogger().info("L'utilisateur "+ChatColor.GOLD+target.get("name").toString()+ChatColor.RESET+" n'avait pas de données sur sa date d'inscription dans dans la table des paramètres utilisateurs, ni dans la table des utilisateurs de CoreProtect. On lui a donc attribué comme date de création du compte, la date du début de sa partie.");
+                            getLogger().info("Le joueur "+ChatColor.GOLD+target.get("name").toString()+ChatColor.RESET+" n'avait pas de données sur sa date d'inscription dans dans la table des paramètres utilisateurs, ni dans la table des utilisateurs de CoreProtect. On lui a donc attribué comme date de création du compte, la date du début de sa partie.");
                         }
                     }else{
                         // C'est un nouvel utilisateur, on peut lui attribuer la date d'inscription précédement calculée
@@ -230,7 +282,7 @@ public final class Main extends JavaPlugin implements Listener {
                                 insertionDateInscription.executeQuery();
 
                                 // On va précisier que la date d'inscription a été trouvée chez CoreProtect
-                                getLogger().info("L'utilisateur "+ChatColor.GOLD+target.get("name").toString()+ChatColor.RESET+" n'avait pas de données sur sa date d'inscription dans dans la table des paramètres utilisateurs. On lui a donc attribué comme date de création du compte, celle que détenait CoreProtect.");
+                                getLogger().info("Le joueur "+ChatColor.GOLD+target.get("name").toString()+ChatColor.RESET+" n'avait pas de données sur sa date d'inscription dans dans la table des paramètres utilisateurs. On lui a donc attribué comme date de création du compte, celle que détenait CoreProtect.");
                             } else {
                                 // On insère la date d'inscription (du coup, comme précédement, on prend la date d'inscription locale)
                                 PreparedStatement insertionDateInscription = con.prepareStatement("INSERT INTO site_userSetting (`uuid`, `name`, `value`) VALUES (?,'joinedDate',?)");
@@ -244,7 +296,7 @@ public final class Main extends JavaPlugin implements Listener {
                                 insertionInaccurrateJoinedDate.setString(2, "true");
                                 insertionInaccurrateJoinedDate.executeQuery();
 
-                                getLogger().info("L'utilisateur "+ChatColor.GOLD+target.get("name").toString()+ChatColor.RESET+" n'avait pas de données sur sa date d'inscription dans dans la table des paramètres utilisateurs, ni dans la table des utilisateurs de CoreProtect. On lui a donc attribué comme date de création du compte, la date du début de sa partie.");
+                                getLogger().info("Le joueur "+ChatColor.GOLD+target.get("name").toString()+ChatColor.RESET+" n'avait pas de données sur sa date d'inscription dans dans la table des paramètres utilisateurs, ni dans la table des utilisateurs de CoreProtect. On lui a donc attribué comme date de création du compte, la date du début de sa partie.");
                             }
                         }
 
@@ -325,4 +377,11 @@ public final class Main extends JavaPlugin implements Listener {
             getLogger().warning(ChatColor.RED+"Erreur lors de l'exécution de initDatabase(): "+e);
         }
     }
+
+    // API Spring
+    /*
+    @GetMapping("/discordMsg/{jsonEncodedString}")
+    void sendDiscordMessage(){
+
+    }*/
 }
diff --git a/src/main/java/com/slprojects/slcraftplugin/tachesParalleles/waitForDiscordMsg.java b/src/main/java/com/slprojects/slcraftplugin/tachesParalleles/waitForDiscordMsg.java
new file mode 100644
index 0000000000000000000000000000000000000000..756a17b36b15aadd289c08f009e1ebebf4f484da
--- /dev/null
+++ b/src/main/java/com/slprojects/slcraftplugin/tachesParalleles/waitForDiscordMsg.java
@@ -0,0 +1,69 @@
+package com.slprojects.slcraftplugin.tachesParalleles;
+
+import com.slprojects.slcraftplugin.Main;
+import org.bukkit.ChatColor;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.net.ServerSocket;
+import java.net.Socket;
+
+public class waitForDiscordMsg {
+    public static void startServer(Main plugin){
+        int serverPort = plugin.getConfig().getInt("msg-server-port");
+
+        plugin.getLogger().info("Écoute des messages Discord sur le port " + ChatColor.GOLD + serverPort);
+        // On fait un thread pour écouter le port
+        Runnable serverThread = new Runnable() {
+            public void run() {
+                try {
+                    ServerSocket serverSocket = new ServerSocket(serverPort);
+                    while (true) {
+                        Socket client = serverSocket.accept();
+
+                        // Get input and output streams to talk to the client
+                        BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
+                        PrintWriter out = new PrintWriter(client.getOutputStream());
+
+                        // Start sending our reply, using the HTTP 1.1 protocol
+                        out.print("HTTP/1.1 200 \r\n"); // Version & status code
+                        out.print("Content-Type: text/plain\r\n"); // The type of data
+                        out.print("Connection: close\r\n"); // Will close stream
+                        out.print("\r\n"); // End of headers
+
+                        // Now, read the HTTP request from the client, and send it
+                        // right back to the client as part of the body of our
+                        // response. The client doesn't disconnect, so we never get
+                        // an EOF. It does sends an empty line at the end of the
+                        // headers, though. So when we see the empty line, we stop
+                        // reading. This means we don't mirror the contents of POST
+                        // requests, for example. Note that the readLine() method
+                        // works with Unix, Windows, and Mac line terminators.
+                        String line;
+                        while ((line = in.readLine()) != null) {
+                            if (line.length() == 0)
+                                break;
+                            out.print(line + "\r\n");
+                            plugin.getLogger().info(line);
+                        }
+
+                        // Close socket, breaking the connection to the client, and
+                        // closing the input and output streams
+                        out.close(); // Flush and close the output stream
+                        in.close(); // Close the input stream
+                        client.close(); // Close the socket itself
+                    }
+                } catch (IOException e) {
+                    plugin.getLogger().info(ChatColor.RED + "Erreur lors de l'écoute du port " + ChatColor.GOLD  + serverPort);
+                    e.printStackTrace();
+                }
+            }
+        };
+
+        new Thread(serverThread).start();
+
+
+    }
+}
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index a7e69bce7d7de82a5afd10793c5b64c6592c7556..4d1dd3742630df0626d89eb12da4380d6a01fe90 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -25,4 +25,7 @@ database:
 
 player-join-playSound: true
 player-join-message: "&a%player_name% &fa rejoint le serveur :D"
-player-quit-message: "&a%player_name% &fvient de quitter le serveur :'("
\ No newline at end of file
+player-quit-message: "&a%player_name% &fvient de quitter le serveur :'("
+
+# Serveur messagerie
+msg-server-port: 25566
\ No newline at end of file
diff --git a/target/classes/com/slprojects/slcraftplugin/Main.class b/target/classes/com/slprojects/slcraftplugin/Main.class
index 369cff01cfd21bed898d96352ea3e53d30472f15..7b8b54cb644d050ba3e31aa80c3f5e8263644ffd 100644
Binary files a/target/classes/com/slprojects/slcraftplugin/Main.class and b/target/classes/com/slprojects/slcraftplugin/Main.class differ
diff --git a/target/classes/config.yml b/target/classes/config.yml
index a7e69bce7d7de82a5afd10793c5b64c6592c7556..4d1dd3742630df0626d89eb12da4380d6a01fe90 100644
--- a/target/classes/config.yml
+++ b/target/classes/config.yml
@@ -25,4 +25,7 @@ database:
 
 player-join-playSound: true
 player-join-message: "&a%player_name% &fa rejoint le serveur :D"
-player-quit-message: "&a%player_name% &fvient de quitter le serveur :'("
\ No newline at end of file
+player-quit-message: "&a%player_name% &fvient de quitter le serveur :'("
+
+# Serveur messagerie
+msg-server-port: 25566
\ No newline at end of file
diff --git a/target/classes/plugin.yml b/target/classes/plugin.yml
index 91a79f001d7abd3cf4d181ffdefc235dcd5fcdd5..a3f955ee76b1d9a9b100aead91d862c90735fe62 100644
--- a/target/classes/plugin.yml
+++ b/target/classes/plugin.yml
@@ -1,5 +1,5 @@
 name: SLCraftPlugin
-version: '1.4'
+version: '1.5'
 main: com.slprojects.slcraftplugin.Main
 depend: [PlaceholderAPI]
 api-version: 1.18
diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties
index f16796ffa1c1603473ed8a7485c9781d515561d8..d5775f3d74ed8b4f2df764059df29b2039992dbb 100644
--- a/target/maven-archiver/pom.properties
+++ b/target/maven-archiver/pom.properties
@@ -1,5 +1,5 @@
 #Generated by Maven
-#Sat Mar 05 15:11:15 CET 2022
+#Sun Mar 06 17:00:16 CET 2022
 groupId=com.slprojects
 artifactId=SLCraftPlugin
-version=1.4
+version=1.5
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
index 06d009572d24221a2002882ef11161456953aeb6..21d3155fc18675f0d92122500364ac8fef0da1d5 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -1,4 +1,6 @@
+com\slprojects\slcraftplugin\commandes\wildCommand$1.class
 com\slprojects\slcraftplugin\commandes\wildCommand.class
 com\slprojects\slcraftplugin\Main.class
 com\slprojects\slcraftplugin\commandes\linkCodeCommand.class
-com\slprojects\slcraftplugin\commandes\wildCommand$1.class
+com\slprojects\slcraftplugin\tachesParalleles\waitForDiscordMsg.class
+com\slprojects\slcraftplugin\tachesParalleles\waitForDiscordMsg$1.class
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
index 22518611b697ad035e84d33c9400b6528a0c4b59..64cb0dc6c51dbeaa5441e82e2cf2f4a3a171f3ba 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -1,3 +1,4 @@
 C:\Users\sofia\Documents\Minecraft Plugin Workspace\SL-Craft Plugin\src\main\java\com\slprojects\slcraftplugin\commandes\wildCommand.java
 C:\Users\sofia\Documents\Minecraft Plugin Workspace\SL-Craft Plugin\src\main\java\com\slprojects\slcraftplugin\Main.java
 C:\Users\sofia\Documents\Minecraft Plugin Workspace\SL-Craft Plugin\src\main\java\com\slprojects\slcraftplugin\commandes\linkCodeCommand.java
+C:\Users\sofia\Documents\Minecraft Plugin Workspace\SL-Craft Plugin\src\main\java\com\slprojects\slcraftplugin\tachesParalleles\waitForDiscordMsg.java