diff --git a/src/main/java/com/slprojects/slcraftplugin/Main.java b/src/main/java/com/slprojects/slcraftplugin/Main.java
index 98c00f3850f142a11baaaec8f9e02094a5722bda..9e18ac2a16050f93ba64ca8474aa1645a5ccf277 100644
--- a/src/main/java/com/slprojects/slcraftplugin/Main.java
+++ b/src/main/java/com/slprojects/slcraftplugin/Main.java
@@ -4,8 +4,8 @@ import com.slprojects.slcraftplugin.commands.admins.WildReset;
 import com.slprojects.slcraftplugin.commands.publics.LinkCode;
 import com.slprojects.slcraftplugin.commands.publics.Wild;
 import com.slprojects.slcraftplugin.parallelTasks.InternalWebServer;
-import com.slprojects.slcraftplugin.parallelTasks.PeriodicEvent;
-import com.slprojects.slcraftplugin.parallelTasks.PlayerDataHandler;
+import com.slprojects.slcraftplugin.parallelTasks.events.PeriodicEvent;
+import com.slprojects.slcraftplugin.parallelTasks.dataHandlers.PlayerDataHandler;
 import com.slprojects.slcraftplugin.utils.ConsoleLog;
 import me.clip.placeholderapi.PlaceholderAPI;
 import net.luckperms.api.LuckPerms;
@@ -13,7 +13,6 @@ import net.luckperms.api.cacheddata.CachedMetaData;
 import net.md_5.bungee.api.ChatMessageType;
 import net.md_5.bungee.api.chat.TextComponent;
 import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
 import org.bukkit.Sound;
 import org.bukkit.configuration.file.FileConfiguration;
 import org.bukkit.entity.Player;
@@ -350,7 +349,7 @@ public final class Main extends JavaPlugin implements Listener {
             ps.executeQuery();
             con.close();
         } catch (Exception e) {
-ConsoleLog.danger("Erreur lors de l'exécution de initDatabase(): " + e);
+            ConsoleLog.danger("Erreur lors de l'exécution de initDatabase(): " + e);
         }
     }
 }
diff --git a/src/main/java/com/slprojects/slcraftplugin/commands/admins/WildReset.java b/src/main/java/com/slprojects/slcraftplugin/commands/admins/WildReset.java
index 869292d9451d8d262a74e0304678cd8c91ffa5f6..677fffd3b38a0c15b341a351da8cf6fb6fc3ed70 100644
--- a/src/main/java/com/slprojects/slcraftplugin/commands/admins/WildReset.java
+++ b/src/main/java/com/slprojects/slcraftplugin/commands/admins/WildReset.java
@@ -2,7 +2,6 @@ package com.slprojects.slcraftplugin.commands.admins;
 
 import com.slprojects.slcraftplugin.Main;
 import com.slprojects.slcraftplugin.utils.ConsoleLog;
-import org.bukkit.ChatColor;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
diff --git a/src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/PlayedTimeHandler.java b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/PlayedTimeHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..ccabc51d6d3575fe09b90951dbd0928a3cced88b
--- /dev/null
+++ b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/PlayedTimeHandler.java
@@ -0,0 +1,53 @@
+package com.slprojects.slcraftplugin.parallelTasks.dataHandlers;
+
+import com.slprojects.slcraftplugin.Main;
+import com.slprojects.slcraftplugin.utils.Database;
+import org.bukkit.entity.Player;
+
+import java.time.Duration;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+public class PlayedTimeHandler implements dataHandler {
+    private final Main plugin;
+    private final List<UUID> usersIndexes;
+    private final List<LocalDateTime> userSessionJoinDateTime;
+    private final List<Long> userStoredPlayedTimeBeforeJoining;
+
+    public PlayedTimeHandler(Main plugin) {
+        this.plugin = plugin;
+        usersIndexes = new ArrayList<>();
+        userSessionJoinDateTime = new ArrayList<>();
+        userStoredPlayedTimeBeforeJoining = new ArrayList<>();
+    }
+
+    @Override
+    public void joinEvent(Player player) {
+        usersIndexes.add(player.getUniqueId());
+        userSessionJoinDateTime.add(LocalDateTime.now());
+
+        if (plugin.playerDataHandler.playerAlreadyJoined(player)) {
+            userStoredPlayedTimeBeforeJoining.add(Long.valueOf(Database.getUserSetting(player.getUniqueId().toString(), "playedTime")));
+        } else {
+            userStoredPlayedTimeBeforeJoining.add(0L);
+        }
+    }
+
+    @Override
+    public void quitEvent(Player player) {
+        savePlayedTime(player); // On actualise le temps de jeu du joueur
+    }
+
+    public void savePlayedTime(Player player) {
+        // On va calculer le temps de jeu du joueur
+        UUID playerUuid = player.getUniqueId();
+        LocalDateTime timeNow = LocalDateTime.now();
+        Duration duration = Duration.between(timeNow, userSessionJoinDateTime.get(usersIndexes.indexOf(playerUuid)));
+        long playedTimeInSeconds = Math.abs(duration.toSeconds());
+        long actualPlayedTime = userStoredPlayedTimeBeforeJoining.get(usersIndexes.indexOf(playerUuid)) + playedTimeInSeconds;
+
+        Database.setUserSetting(playerUuid.toString(), "playedTime", String.valueOf(actualPlayedTime));
+    }
+}
diff --git a/src/main/java/com/slprojects/slcraftplugin/parallelTasks/PlayerDataHandler.java b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/PlayerDataHandler.java
similarity index 90%
rename from src/main/java/com/slprojects/slcraftplugin/parallelTasks/PlayerDataHandler.java
rename to src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/PlayerDataHandler.java
index 42a2e4fb6b91638d8e848cb90efadd2e730092b0..f54650ef1e74cfdeb8c103cbd743255ac0be8d1d 100644
--- a/src/main/java/com/slprojects/slcraftplugin/parallelTasks/PlayerDataHandler.java
+++ b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/PlayerDataHandler.java
@@ -1,14 +1,12 @@
-package com.slprojects.slcraftplugin.parallelTasks;
+package com.slprojects.slcraftplugin.parallelTasks.dataHandlers;
 
 import com.slprojects.slcraftplugin.Main;
 import com.slprojects.slcraftplugin.utils.ConsoleLog;
-import com.slprojects.slcraftplugin.utils.Database;
 import org.bukkit.ChatColor;
 import org.bukkit.Statistic;
 import org.bukkit.entity.Player;
 
 import java.sql.*;
-import java.time.Duration;
 import java.time.LocalDateTime;
 import java.time.ZoneOffset;
 import java.time.format.DateTimeFormatter;
@@ -17,39 +15,34 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.UUID;
 
-public class PlayerDataHandler {
+public class PlayerDataHandler implements dataHandler {
     private final Main plugin;
     private Connection con;
     // Playtime
-    private final List<UUID> playTimeUsersIndexes;
-    private final List<LocalDateTime> userSessionJoinDateTime;
-    private final List<Long> userStoredPlayedTimeBeforeJoining;
+    public final PlayedTimeHandler playedTimeHandler;
+    private final List<UUID> playerIndexes;
+    private final List<Boolean> playerAlreadyJoined;
 
     public PlayerDataHandler(Main plugin) {
         this.plugin = plugin;
-        playTimeUsersIndexes = new ArrayList<>();
-        userSessionJoinDateTime = new ArrayList<>();
-        userStoredPlayedTimeBeforeJoining = new ArrayList<>();
+        this.playedTimeHandler = new PlayedTimeHandler(plugin);
+        playerIndexes = new ArrayList<>();
+        playerAlreadyJoined = new ArrayList<>();
     }
 
+    @Override
     public void joinEvent(Player player) {
         // On ouvre la bdd
         con = plugin.bddOpenConn();
 
-        playTimeUsersIndexes.add(player.getUniqueId());
-        userSessionJoinDateTime.add(LocalDateTime.now());
-
-        boolean playerAlreadyJoinded = insertPlayerName(player); // On check si le nom du joueur est déjà enregistré
+        playerIndexes.add(player.getUniqueId());
+        playerAlreadyJoined.add(insertPlayerName(player)); // On check si le nom du joueur est déjà enregistré
         statsPlayerEntryExit(player, true); // On ajoute son entée
         checkPlayerJoinedDate(player); // On check si on dipose de sa date de rejoint
         setPlayerJoinCount(player); // On set le nombre de fois qu'il a rejoint
         plugin.wildCommand.setPlayerStats(player, getPlayerWildCmdStats(player));
 
-        if(playerAlreadyJoinded){
-            userStoredPlayedTimeBeforeJoining.add(Long.valueOf(Database.getUserSetting(player.getUniqueId().toString(), "playedTime")));
-        }else{
-            userStoredPlayedTimeBeforeJoining.add(0L);
-        }
+        playedTimeHandler.joinEvent(player);
 
         // On ferme la bdd
         try {
@@ -60,11 +53,12 @@ public class PlayerDataHandler {
         }
     }
 
+    @Override
     public void quitEvent(Player player) {
         // On ouvre la bdd
         con = plugin.bddOpenConn();
 
-        savePlayedTime(player); // On actualise le temps de jeu du joueur
+        playedTimeHandler.quitEvent(player);
         statsPlayerEntryExit(player, false); // On ajoute son sortie
         savePlayerWildCmdStats(player, plugin.wildCommand.getPlayerStats(player));
 
@@ -207,17 +201,6 @@ public class PlayerDataHandler {
         }
     }
 
-    public void savePlayedTime(Player player) {
-        // On va calculer le temps de jeu du joueur
-        UUID playerUuid = player.getUniqueId();
-        LocalDateTime timeNow = LocalDateTime.now();
-        Duration duration = Duration.between(timeNow, userSessionJoinDateTime.get(playTimeUsersIndexes.indexOf(playerUuid)));
-        long playedTimeInSeconds = Math.abs(duration.toSeconds());
-        long actualPlayedTime = userStoredPlayedTimeBeforeJoining.get(playTimeUsersIndexes.indexOf(playerUuid)) + playedTimeInSeconds;
-
-        Database.setUserSetting(playerUuid.toString(), "playedTime", String.valueOf(actualPlayedTime));
-    }
-
     private List<Object> getPlayerWildCmdStats(Player player) {
         // Indexes:
         // - 0: Nombre d'utilisation du jour
@@ -324,4 +307,8 @@ public class PlayerDataHandler {
             e.printStackTrace();
         }
     }
+
+    public boolean playerAlreadyJoined(Player player) {
+        return playerAlreadyJoined.get(playerIndexes.indexOf(player.getUniqueId()));
+    }
 }
diff --git a/src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/dataHandler.java b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/dataHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..18fbe2c12901f87d9de80df280de81c5181ebac7
--- /dev/null
+++ b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/dataHandler.java
@@ -0,0 +1,9 @@
+package com.slprojects.slcraftplugin.parallelTasks.dataHandlers;
+
+import org.bukkit.entity.Player;
+
+public interface dataHandler {
+    void joinEvent(Player player);
+
+    void quitEvent(Player player);
+}
diff --git a/src/main/java/com/slprojects/slcraftplugin/parallelTasks/events/GeneralEvents.java b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/events/GeneralEvents.java
new file mode 100644
index 0000000000000000000000000000000000000000..a8c77f97a546f24ae90c6fe4bd5430797b9c207a
--- /dev/null
+++ b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/events/GeneralEvents.java
@@ -0,0 +1,4 @@
+package com.slprojects.slcraftplugin.parallelTasks.events;
+
+public class GeneralEvents {
+}
diff --git a/src/main/java/com/slprojects/slcraftplugin/parallelTasks/PeriodicEvent.java b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/events/PeriodicEvent.java
similarity index 90%
rename from src/main/java/com/slprojects/slcraftplugin/parallelTasks/PeriodicEvent.java
rename to src/main/java/com/slprojects/slcraftplugin/parallelTasks/events/PeriodicEvent.java
index 4fabf4cbfc0a07ea32d694a89abe5db7464fb63c..006d155f35960bc863de533267050df16acf26a2 100644
--- a/src/main/java/com/slprojects/slcraftplugin/parallelTasks/PeriodicEvent.java
+++ b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/events/PeriodicEvent.java
@@ -1,8 +1,7 @@
-package com.slprojects.slcraftplugin.parallelTasks;
+package com.slprojects.slcraftplugin.parallelTasks.events;
 
 import com.slprojects.slcraftplugin.Main;
 import com.slprojects.slcraftplugin.utils.ConsoleLog;
-import org.bukkit.ChatColor;
 import org.bukkit.entity.Player;
 import org.bukkit.scheduler.BukkitRunnable;
 
@@ -32,8 +31,8 @@ public class PeriodicEvent {
     }
 
     private void periodicEvent() {
-        for (Player player : plugin.getServer().getOnlinePlayers()){
-            plugin.playerDataHandler.savePlayedTime(player);
+        for (Player player : plugin.getServer().getOnlinePlayers()) {
+            plugin.playerDataHandler.playedTimeHandler.savePlayedTime(player);
         }
         ConsoleLog.warning("[SL-Craft] Évènement périodique éxecuté.");
 
diff --git a/src/main/java/com/slprojects/slcraftplugin/utils/Database.java b/src/main/java/com/slprojects/slcraftplugin/utils/Database.java
index 1fa988eb49bff191f8e0e218319fd55b73ef0fa1..54aee618c3e5d706f2aecd117f6b68a14ac6cefb 100644
--- a/src/main/java/com/slprojects/slcraftplugin/utils/Database.java
+++ b/src/main/java/com/slprojects/slcraftplugin/utils/Database.java
@@ -11,8 +11,10 @@ import java.sql.SQLException;
 
 import static org.bukkit.Bukkit.getServer;
 
+@SuppressWarnings("UnusedReturnValue")
 public class Database {
     static final private String userSettingsTabName = "site_userSetting";
+
     public static String getUserSetting(String uuid, String key) {
         Connection con = bddOpenConn();
         String returnValue = null;
@@ -23,7 +25,7 @@ public class Database {
             query.setString(2, key);
             ResultSet resultat = query.executeQuery();
 
-            if(resultat.next()){
+            if (resultat.next()) {
                 returnValue = resultat.getString("value");
             }
         } catch (SQLException e) {
@@ -40,20 +42,20 @@ public class Database {
         return returnValue;
     }
 
-    public static boolean setUserSetting(String uuid, String key, String value){
+    public static boolean setUserSetting(String uuid, String key, String value) {
         Connection con = bddOpenConn();
         boolean isOperationASuccess = false;
         boolean isEntryExists = (getUserSetting(uuid, key) != null);
 
         try {
-            if(isEntryExists){
+            if (isEntryExists) {
                 PreparedStatement updateEntry = con.prepareStatement("UPDATE site_userSetting SET value = ? WHERE uuid = ? AND name = ?");
                 updateEntry.setString(1, value);
                 updateEntry.setString(2, uuid);
                 updateEntry.setString(3, key);
                 updateEntry.executeUpdate();
                 isOperationASuccess = true;
-            }else{
+            } else {
                 isOperationASuccess = insertUserSettingEntry(uuid, key, value);
             }
         } catch (SQLException e) {
@@ -70,8 +72,8 @@ public class Database {
 
         return isOperationASuccess;
     }
-    
-    private static boolean insertUserSettingEntry(String uuid, String key, String value){
+
+    private static boolean insertUserSettingEntry(String uuid, String key, String value) {
         Connection con = bddOpenConn();
         boolean isOperationASuccess = false;