diff --git a/src/main/java/com/slprojects/slcraftplugin/Main.java b/src/main/java/com/slprojects/slcraftplugin/Main.java
index 9e18ac2a16050f93ba64ca8474aa1645a5ccf277..93d7608894034dcab252c88b40ef5ddcbb3eaa45 100644
--- a/src/main/java/com/slprojects/slcraftplugin/Main.java
+++ b/src/main/java/com/slprojects/slcraftplugin/Main.java
@@ -45,7 +45,7 @@ import java.util.regex.Pattern;
 public final class Main extends JavaPlugin implements Listener {
     // Variables
     private static FileConfiguration config;
-    private static LuckPerms luckPermsApi;
+    public static LuckPerms luckPermsApi;
     public static String pluginName;
 
     // Publiques car on les appelle ailleurs
diff --git a/src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/PlayedTimeHandler.java b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/PlayedTimeHandler.java
index ccabc51d6d3575fe09b90951dbd0928a3cced88b..6cddeb5b8ceb36a54cb4449b834daa0fd1d100f4 100644
--- a/src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/PlayedTimeHandler.java
+++ b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/PlayedTimeHandler.java
@@ -1,8 +1,16 @@
 package com.slprojects.slcraftplugin.parallelTasks.dataHandlers;
 
 import com.slprojects.slcraftplugin.Main;
+import com.slprojects.slcraftplugin.parallelTasks.events.GeneralEvents;
 import com.slprojects.slcraftplugin.utils.Database;
+import net.luckperms.api.model.group.Group;
+import net.luckperms.api.model.user.User;
+import net.md_5.bungee.api.ChatMessageType;
+import net.md_5.bungee.api.chat.TextComponent;
+import org.bukkit.ChatColor;
+import org.bukkit.Sound;
 import org.bukkit.entity.Player;
+import org.bukkit.scheduler.BukkitRunnable;
 
 import java.time.Duration;
 import java.time.LocalDateTime;
@@ -15,12 +23,16 @@ public class PlayedTimeHandler implements dataHandler {
     private final List<UUID> usersIndexes;
     private final List<LocalDateTime> userSessionJoinDateTime;
     private final List<Long> userStoredPlayedTimeBeforeJoining;
+    private final int requiredPlayedTimeForUpgradingPlayersAccount;
+    private final Group playersAccountUpgradeGroup;
 
     public PlayedTimeHandler(Main plugin) {
         this.plugin = plugin;
         usersIndexes = new ArrayList<>();
         userSessionJoinDateTime = new ArrayList<>();
         userStoredPlayedTimeBeforeJoining = new ArrayList<>();
+        requiredPlayedTimeForUpgradingPlayersAccount = plugin.getConfig().getInt("stats.required-played-time-for-upgrading-players-account");
+        playersAccountUpgradeGroup = plugin.luckPermsApi.getGroupManager().getGroup(plugin.getConfig().getString("stats.players-account-upgrade-role"));
     }
 
     @Override
@@ -49,5 +61,28 @@ public class PlayedTimeHandler implements dataHandler {
         long actualPlayedTime = userStoredPlayedTimeBeforeJoining.get(usersIndexes.indexOf(playerUuid)) + playedTimeInSeconds;
 
         Database.setUserSetting(playerUuid.toString(), "playedTime", String.valueOf(actualPlayedTime));
+
+        // Vérification pour avoir le rôle habitué
+        // TODO: Ne sauvegarde pas. :/
+        if(actualPlayedTime >= requiredPlayedTimeForUpgradingPlayersAccount){
+            String playerGroupName = plugin.luckPermsApi.getPlayerAdapter(Player.class).getMetaData(player).getPrimaryGroup();
+            if(playerGroupName != playersAccountUpgradeGroup.getName()){
+                player.sendMessage("Ton rôle: " + playerGroupName + " - Groupe visé: " + playersAccountUpgradeGroup.getName());
+
+                Group playerGroup = plugin.luckPermsApi.getGroupManager().getGroup(playerGroupName);
+                if(playerGroup.getWeight().getAsInt() < playersAccountUpgradeGroup.getWeight().getAsInt()){
+                    User playerLuckPerms = plugin.luckPermsApi.getUserManager().getUser(player.getUniqueId());
+                    playerLuckPerms.setPrimaryGroup(playersAccountUpgradeGroup.getName());
+                    plugin.luckPermsApi.getUserManager().saveUser(playerLuckPerms);
+
+                    int requiredPlayedTimeInHours = requiredPlayedTimeForUpgradingPlayersAccount / 60 / 60;
+                    player.sendMessage(ChatColor.GREEN + "Bravo tu as passé plus de WOAW, " + ChatColor.GOLD + requiredPlayedTimeInHours + "H " + ChatColor.GREEN + "sur le serveur !!!");
+                    player.sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(ChatColor.GREEN + "Bravo " + ChatColor.GOLD + player.getName() + ChatColor.GREEN + ",  tu est maintenant un joueur habitué!"));
+
+                    // Feux d'artifices
+                    GeneralEvents.fireworkSoundEffect(player, plugin);
+                }
+            }
+        }
     }
 }
diff --git a/src/main/java/com/slprojects/slcraftplugin/parallelTasks/events/GeneralEvents.java b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/events/GeneralEvents.java
index a8c77f97a546f24ae90c6fe4bd5430797b9c207a..9056b07ec363a11ccd786523e9fc7997d4107b80 100644
--- a/src/main/java/com/slprojects/slcraftplugin/parallelTasks/events/GeneralEvents.java
+++ b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/events/GeneralEvents.java
@@ -1,4 +1,33 @@
 package com.slprojects.slcraftplugin.parallelTasks.events;
 
+import com.slprojects.slcraftplugin.Main;
+import org.bukkit.Sound;
+import org.bukkit.entity.Player;
+import org.bukkit.scheduler.BukkitRunnable;
+
+import java.util.Random;
+
 public class GeneralEvents {
+    public static void fireworkSoundEffect(Player player, Main plugin){
+        int min = 1;
+        int max = 25;
+        Random random = new Random();
+
+        for(int i = 0; i < 6; i++){
+            int delay = random.nextInt(max - min + 1) + min;
+            new BukkitRunnable() {
+                @Override
+                public void run() {
+                    player.playSound(player.getLocation(), Sound.ENTITY_FIREWORK_ROCKET_LAUNCH, 100, 2);
+                }
+            }.runTaskLater(plugin, delay);
+
+            new BukkitRunnable() {
+                @Override
+                public void run() {
+                    player.playSound(player.getLocation(), Sound.ENTITY_FIREWORK_ROCKET_TWINKLE, 100, 2);
+                }
+            }.runTaskLater(plugin, delay + 40);
+        }
+    }
 }
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index a7683f7bb55ad856b05c33b0f40cbdc03b102027..29e2f146cd2ac05e4406db235daf0ff85e9ae215 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -42,4 +42,9 @@ server-type: prod # prod/dev
 
 # Periodic events
 periodic-event-call-time: 60 # En sencondes
-ticks-per-seconds: 20
\ No newline at end of file
+ticks-per-seconds: 20
+
+# Statistiques des joueurs
+stats:
+  required-played-time-for-upgrading-players-account: 72000 # En sencondes
+  players-account-upgrade-role: "habitué"
\ No newline at end of file