Select Git revision
PlayedTimeHandler.java
PlayedTimeHandler.java 8.30 KiB
package com.slprojects.slcraftplugin.parallelTasks.dataHandlers;
import com.slprojects.slcraftplugin.Main;
import com.slprojects.slcraftplugin.parallelTasks.events.GeneralEvents;
import com.slprojects.slcraftplugin.utils.ConsoleLog;
import com.slprojects.slcraftplugin.utils.Database;
import net.luckperms.api.model.group.Group;
import net.luckperms.api.model.user.User;
import net.luckperms.api.node.types.InheritanceNode;
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;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
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;
private final int requiredPlayedTimeForUpgradingPlayersAccount;
private final Group playersAccountUpgradeGroup;
/**
* Gère le temps de jeu des joueurs
*
* @param plugin Plugin
*/
public PlayedTimeHandler(Main plugin) {
this.plugin = plugin;
String playersAccountUpgradeRole = plugin.getConfig().getString("stats.players-account-upgrade-role");
if (playersAccountUpgradeRole != null) {
usersIndexes = new ArrayList<>();
userSessionJoinDateTime = new ArrayList<>();
userStoredPlayedTimeBeforeJoining = new ArrayList<>();
requiredPlayedTimeForUpgradingPlayersAccount = plugin.getConfig().getInt("stats.required-played-time-for-upgrading-players-account");
playersAccountUpgradeGroup = Main.luckPermsApi.getGroupManager().getGroup(playersAccountUpgradeRole);
if (playersAccountUpgradeGroup == null) {
throw new RuntimeException("Le groupe " + playersAccountUpgradeRole + " n'existe pas !");
}
} else {
throw new RuntimeException("La configuration stats.required-played-time-for-upgrading-players-account n'existe pas !");
}
}
/**
* Gestion de l'arrivée d'un joueur
*
* @param player Joueur
*/
@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")));
// Delay sinon le joueur ne voit pas
new BukkitRunnable() {
@Override
public void run() {
checkPlayerTime(player);