Skip to content
Snippets Groups Projects
Commit 79633f53 authored by Sofiane Lasri's avatar Sofiane Lasri
Browse files

Création d'une interface pour la création de classes de type Data Handler,...

Création d'une interface pour la création de classes de type Data Handler, création de la classe PlayedTimeHandler et déplacement de son code dans cette dernière anciennement présent dans  PlayerDataHandler. Reformattage du code.
parent b494d223
No related branches found
No related tags found
1 merge request!6Donner le joueur habitué aux joueurs.
Pipeline #56 passed
......@@ -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;
......
......@@ -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;
......
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));
}
}
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()));
}
}
package com.slprojects.slcraftplugin.parallelTasks.dataHandlers;
import org.bukkit.entity.Player;
public interface dataHandler {
void joinEvent(Player player);
void quitEvent(Player player);
}
package com.slprojects.slcraftplugin.parallelTasks.events;
public class GeneralEvents {
}
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;
......@@ -33,7 +32,7 @@ public class PeriodicEvent {
private void periodicEvent() {
for (Player player : plugin.getServer().getOnlinePlayers()) {
plugin.playerDataHandler.savePlayedTime(player);
plugin.playerDataHandler.playedTimeHandler.savePlayedTime(player);
}
ConsoleLog.warning("[SL-Craft] Évènement périodique éxecuté.");
......
......@@ -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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment