From d6975b3f54ddc848407a890aeb8d1bb282902c0f Mon Sep 17 00:00:00 2001 From: SofianeLasri <alasri250@gmail.com> Date: Sat, 10 Sep 2022 23:03:50 +0200 Subject: [PATCH] =?UTF-8?q?Cr=C3=A9ation=20du=20code=20permettant=20de=20d?= =?UTF-8?q?=C3=A9tecter=20si=20le=20joueur=20est=20=C3=A9ligible=20au=20r?= =?UTF-8?q?=C3=B4le=20de=20joueur=20habitu=C3=A9,=20et=20cr=C3=A9ation=20d?= =?UTF-8?q?'une=20fonction=20simulant=20un=20bruitage=20de=20feux=20d'arti?= =?UTF-8?q?fice.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/slprojects/slcraftplugin/Main.java | 2 +- .../dataHandlers/PlayedTimeHandler.java | 35 +++++++++++++++++++ .../parallelTasks/events/GeneralEvents.java | 29 +++++++++++++++ src/main/resources/config.yml | 7 +++- 4 files changed, 71 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/slprojects/slcraftplugin/Main.java b/src/main/java/com/slprojects/slcraftplugin/Main.java index 9e18ac2..93d7608 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 ccabc51..6cddeb5 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 a8c77f9..9056b07 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 a7683f7..29e2f14 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 -- GitLab