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