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

Portage des appels aux paramètres utilisateurs de la classe PlayerDataHandler...

Portage des appels aux paramètres utilisateurs de la classe PlayerDataHandler pour utiliser les deux fonctions de Database.
parent 11a6ab40
No related branches found
No related tags found
No related merge requests found
Pipeline #110 passed
...@@ -114,6 +114,7 @@ public class PlayedTimeHandler implements dataHandler { ...@@ -114,6 +114,7 @@ public class PlayedTimeHandler implements dataHandler {
UUID playerUuid = player.getUniqueId(); UUID playerUuid = player.getUniqueId();
LocalDateTime timeNow = LocalDateTime.now(); LocalDateTime timeNow = LocalDateTime.now();
Duration duration = Duration.between(timeNow, userSessionJoinDateTime.get(usersIndexes.indexOf(playerUuid))); Duration duration = Duration.between(timeNow, userSessionJoinDateTime.get(usersIndexes.indexOf(playerUuid)));
long playedTimeInSeconds = Math.abs(duration.toSeconds()); long playedTimeInSeconds = Math.abs(duration.toSeconds());
long actualPlayedTime = userStoredPlayedTimeBeforeJoining.get(usersIndexes.indexOf(playerUuid)) + playedTimeInSeconds; long actualPlayedTime = userStoredPlayedTimeBeforeJoining.get(usersIndexes.indexOf(playerUuid)) + playedTimeInSeconds;
...@@ -122,6 +123,7 @@ public class PlayedTimeHandler implements dataHandler { ...@@ -122,6 +123,7 @@ public class PlayedTimeHandler implements dataHandler {
if (playerGroupName != null && !Objects.equals(playerGroupName, playersAccountUpgradeGroup.getName())) { if (playerGroupName != null && !Objects.equals(playerGroupName, playersAccountUpgradeGroup.getName())) {
Group playerGroup = Main.luckPermsApi.getGroupManager().getGroup(playerGroupName); Group playerGroup = Main.luckPermsApi.getGroupManager().getGroup(playerGroupName);
if (playerGroup == null) { if (playerGroup == null) {
throw new RuntimeException("Le groupe " + playerGroupName + " n'existe pas !"); throw new RuntimeException("Le groupe " + playerGroupName + " n'existe pas !");
} }
...@@ -130,6 +132,7 @@ public class PlayedTimeHandler implements dataHandler { ...@@ -130,6 +132,7 @@ public class PlayedTimeHandler implements dataHandler {
if (playerGroup.getWeight().getAsInt() < playersAccountUpgradeGroup.getWeight().getAsInt()) { if (playerGroup.getWeight().getAsInt() < playersAccountUpgradeGroup.getWeight().getAsInt()) {
ConsoleLog.info(ChatColor.GREEN + player.getName() + ChatColor.LIGHT_PURPLE + " a débloqué le rôle des joueurs " + ChatColor.GOLD + "habitués" + ChatColor.LIGHT_PURPLE + "!"); ConsoleLog.info(ChatColor.GREEN + player.getName() + ChatColor.LIGHT_PURPLE + " a débloqué le rôle des joueurs " + ChatColor.GOLD + "habitués" + ChatColor.LIGHT_PURPLE + "!");
User playerLuckPerms = Main.luckPermsApi.getUserManager().getUser(player.getUniqueId()); User playerLuckPerms = Main.luckPermsApi.getUserManager().getUser(player.getUniqueId());
if (playerLuckPerms == null) { if (playerLuckPerms == null) {
throw new RuntimeException("LuckPerms ne semble pas disposer de donnée sur le joueur " + player.getName() + " UUID:" + player.getUniqueId()); throw new RuntimeException("LuckPerms ne semble pas disposer de donnée sur le joueur " + player.getName() + " UUID:" + player.getUniqueId());
} }
...@@ -140,6 +143,7 @@ public class PlayedTimeHandler implements dataHandler { ...@@ -140,6 +143,7 @@ public class PlayedTimeHandler implements dataHandler {
Main.luckPermsApi.getUserManager().saveUser(playerLuckPerms); Main.luckPermsApi.getUserManager().saveUser(playerLuckPerms);
int requiredPlayedTimeInHours = requiredPlayedTimeForUpgradingPlayersAccount / 60 / 60; int requiredPlayedTimeInHours = requiredPlayedTimeForUpgradingPlayersAccount / 60 / 60;
player.sendMessage(ChatColor.GREEN + "Bravo et un grand merci à toi " + ChatColor.YELLOW + player.getName() + ChatColor.GREEN + "!"); player.sendMessage(ChatColor.GREEN + "Bravo et un grand merci à toi " + ChatColor.YELLOW + player.getName() + ChatColor.GREEN + "!");
player.sendMessage(ChatColor.GREEN + "Tu as joué pendant plus de" + ChatColor.GOLD + requiredPlayedTimeInHours + "H " + ChatColor.GREEN + "sur le serveur !!!"); player.sendMessage(ChatColor.GREEN + "Tu as joué pendant plus de" + ChatColor.GOLD + requiredPlayedTimeInHours + "H " + ChatColor.GREEN + "sur le serveur !!!");
player.sendMessage("Pour te récompenser, nous te donnons le rôle des joueurs " + ChatColor.GOLD + "habitués" + ChatColor.RESET + "!"); player.sendMessage("Pour te récompenser, nous te donnons le rôle des joueurs " + ChatColor.GOLD + "habitués" + ChatColor.RESET + "!");
......
...@@ -2,6 +2,7 @@ package com.slprojects.slcraftplugin.parallelTasks.dataHandlers; ...@@ -2,6 +2,7 @@ package com.slprojects.slcraftplugin.parallelTasks.dataHandlers;
import com.slprojects.slcraftplugin.Main; import com.slprojects.slcraftplugin.Main;
import com.slprojects.slcraftplugin.utils.ConsoleLog; import com.slprojects.slcraftplugin.utils.ConsoleLog;
import com.slprojects.slcraftplugin.utils.Database;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Statistic; import org.bukkit.Statistic;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
...@@ -73,36 +74,19 @@ public class PlayerDataHandler implements dataHandler { ...@@ -73,36 +74,19 @@ public class PlayerDataHandler implements dataHandler {
// Fonctions // Fonctions
private boolean insertPlayerName(Player player) { private boolean insertPlayerName(Player player) {
boolean returnValue = false; String savedPlayerName = Database.getUserSetting(player.getUniqueId().toString(), "playerName");
try {
// On va d'abord regarder si on a déjà renseigné le nom du joueur
PreparedStatement rechercheUtilisateur = con.prepareStatement("SELECT * FROM site_userSetting WHERE uuid = ? AND name = 'playerName' AND value = ?");
rechercheUtilisateur.setString(1, player.getUniqueId().toString());
rechercheUtilisateur.setString(2, player.getName());
ResultSet resultat = rechercheUtilisateur.executeQuery();
if (resultat.next()) { if (savedPlayerName != null) {
returnValue = true;
// On a déjà renseigné le nom du joueur on va donc vérifier s'il a besoin d'être mis à jour // On a déjà renseigné le nom du joueur on va donc vérifier s'il a besoin d'être mis à jour
if (!resultat.getString("value").equals(player.getName())) { if (!savedPlayerName.equals(player.getName())) {
// On va mettre à jour le nom du joueur Database.setUserSetting(player.getUniqueId().toString(), "playerName", player.getName());
PreparedStatement updateUtilisateur = con.prepareStatement("UPDATE site_userSetting SET value = ? WHERE uuid = ? AND name = 'playerName'");
updateUtilisateur.setString(1, player.getName());
updateUtilisateur.setString(2, player.getUniqueId().toString());
updateUtilisateur.executeUpdate();
} }
return true;
} else { } else {
// On peut insérer le nom du joueur // On peut insérer le nom du joueur
PreparedStatement insertUtilisateur = con.prepareStatement("INSERT INTO site_userSetting (uuid, name, value) VALUES (?, 'playerName', ?)"); Database.setUserSetting(player.getUniqueId().toString(), "playerName", player.getName());
insertUtilisateur.setString(1, player.getUniqueId().toString()); return false;
insertUtilisateur.setString(2, player.getName());
insertUtilisateur.executeQuery();
}
} catch (SQLException e) {
ConsoleLog.warning("Func savePlayerData::insertPlayerName(Player player)");
e.printStackTrace();
} }
return returnValue;
} }
private void statsPlayerEntryExit(Player player, boolean isEnter) { private void statsPlayerEntryExit(Player player, boolean isEnter) {
...@@ -121,51 +105,56 @@ public class PlayerDataHandler implements dataHandler { ...@@ -121,51 +105,56 @@ public class PlayerDataHandler implements dataHandler {
private void checkPlayerJoinedDate(Player player) { private void checkPlayerJoinedDate(Player player) {
try { try {
// On va vérifier si on l'a déjà renseigné par le passé // On va vérifier si on l'a déjà renseigné par le passé
PreparedStatement rechercheUtilisateur = con.prepareStatement("SELECT * FROM site_userSetting WHERE uuid = ? AND name = 'joinedDate'"); String joinedDate = Database.getUserSetting(player.getUniqueId().toString(), "joinedDate");
rechercheUtilisateur.setString(1, player.getUniqueId().toString());
ResultSet resultat = rechercheUtilisateur.executeQuery();
if (!resultat.next()) { if (joinedDate == null) {
// On n'a pas renseigné la date de création du joueur // On n'a pas renseigné la date de création du joueur
if (player.hasPlayedBefore()) { if (player.hasPlayedBefore()) {
// On va piocher la date d'inscription chez CoreProtect (si elle existe) // On va piocher la date d'inscription chez CoreProtect (si elle existe)
// On la prend chez CoreProtect car le plugin a été installé dans les premières semaines du serveur. Il a donc bcp plus de données que nous concernant les anciens joueurs. // On la prend chez CoreProtect car le plugin a été installé dans les premières semaines du serveur. Il a donc bcp plus de données que nous concernant les anciens joueurs.
PreparedStatement rechercheDateInscription = con.prepareStatement("SELECT time FROM co_user WHERE uuid = ?"); PreparedStatement rechercheDateInscription = con.prepareStatement("SELECT time FROM co_user WHERE uuid = ?");
rechercheDateInscription.setString(1, player.getUniqueId().toString()); rechercheDateInscription.setString(1, player.getUniqueId().toString());
resultat = rechercheDateInscription.executeQuery(); ResultSet resultat = rechercheDateInscription.executeQuery();
if (resultat.next()) { if (resultat.next()) {
// On insère la date d'inscription // On insère la date d'inscription
PreparedStatement insertionDateInscription = con.prepareStatement("INSERT INTO site_userSetting (`uuid`, `name`, `value`) VALUES (?,'joinedDate',?)"); Database.setUserSetting(player.getUniqueId().toString(),
insertionDateInscription.setString(1, player.getUniqueId().toString()); "joinedDate",
insertionDateInscription.setString(2, java.sql.Timestamp.valueOf(LocalDateTime.ofEpochSecond(Long.parseLong(resultat.getString("time")), 0, ZoneOffset.UTC)).toString()); // Il faut convertir le timestamp (epoch second) en date java.sql.Timestamp.valueOf(
insertionDateInscription.executeQuery(); LocalDateTime.ofEpochSecond(
Long.parseLong(resultat.getString("time")),
0,
ZoneOffset.UTC
)
).toString()
);
// On va précisier que la date d'inscription a été trouvée chez CoreProtect // On va précisier que la date d'inscription a été trouvée chez CoreProtect
ConsoleLog.info("Le joueur " + ChatColor.GOLD + player.getName() + ChatColor.RESET + " n'avait pas de données sur sa date d'inscription dans dans la table des paramètres utilisateurs. On lui a donc attribué comme date de création du compte, celle que détenait CoreProtect."); ConsoleLog.info("Le joueur " + ChatColor.GOLD + player.getName() + ChatColor.RESET + " n'avait pas de données sur sa date d'inscription dans dans la table des paramètres utilisateurs. On lui a donc attribué comme date de création du compte, celle que détenait CoreProtect.");
} else { } else {
// On insère la date d'inscription (du coup on considère que Le joueur n'a pas joué avant, malgré la condition) // On insère la date d'inscription (du coup on considère que Le joueur n'a pas joué avant, malgré la condition)
PreparedStatement insertionDateInscription = con.prepareStatement("INSERT INTO site_userSetting (`uuid`, `name`, `value`) VALUES (?,'joinedDate',?)"); Database.setUserSetting(
insertionDateInscription.setString(1, player.getUniqueId().toString()); player.getUniqueId().toString(),
insertionDateInscription.setString(2, java.sql.Timestamp.valueOf(java.time.LocalDateTime.now()).toString()); "joinedDate",
insertionDateInscription.executeQuery(); java.sql.Timestamp.valueOf(java.time.LocalDateTime.now()).toString()
);
// On va préciser que la date d'inscription n'a pas été trouvée chez CoreProtect // On va préciser que la date d'inscription n'a pas été trouvée chez CoreProtect
PreparedStatement insertionInaccurrateJoinedDate = con.prepareStatement("INSERT INTO site_userSetting (`uuid`, `name`, `value`) VALUES (?,'inaccurrateJoinedDate',?)"); Database.setUserSetting(player.getUniqueId().toString(),
insertionInaccurrateJoinedDate.setString(1, player.getUniqueId().toString()); "inaccurrateJoinedDate",
insertionInaccurrateJoinedDate.setString(2, "true"); "true"
insertionInaccurrateJoinedDate.executeQuery(); );
// On est daccord que ceci n'est pas censé arriver, cela ne concerne que mes potes n'étant venus que durant les premières semaines du serveur. // On est daccord que ceci n'est pas censé arriver, cela ne concerne que mes potes n'étant venus que durant les premières semaines du serveur.
ConsoleLog.info("Le joueur " + ChatColor.GOLD + player.getName() + ChatColor.RESET + " n'avait pas de données sur sa date d'inscription dans dans la table des paramètres utilisateurs, ni dans la table des utilisateurs de CoreProtect. On lui a donc attribué comme date de création du compte, la date du début de sa partie."); ConsoleLog.info("Le joueur " + ChatColor.GOLD + player.getName() + ChatColor.RESET + " n'avait pas de données sur sa date d'inscription dans dans la table des paramètres utilisateurs, ni dans la table des utilisateurs de CoreProtect. On lui a donc attribué comme date de création du compte, la date du début de sa partie.");
} }
} else { } else {
// Le joueur est nouveau, on insère la date d'inscription // Le joueur est nouveau, on insère la date d'inscription
PreparedStatement insertionDateInscription = con.prepareStatement("INSERT INTO site_userSetting (`uuid`, `name`, `value`) VALUES (?,'joinedDate',?)"); Database.setUserSetting(
insertionDateInscription.setString(1, player.getUniqueId().toString()); player.getUniqueId().toString(),
insertionDateInscription.setString(2, Timestamp.valueOf(java.time.LocalDateTime.now()).toString()); "joinedDate",
insertionDateInscription.executeQuery(); java.sql.Timestamp.valueOf(java.time.LocalDateTime.now()).toString()
);
} }
} }
} catch (SQLException e) { } catch (SQLException e) {
...@@ -175,30 +164,7 @@ public class PlayerDataHandler implements dataHandler { ...@@ -175,30 +164,7 @@ public class PlayerDataHandler implements dataHandler {
} }
void setPlayerJoinCount(Player player) { void setPlayerJoinCount(Player player) {
try { Database.setUserSetting(player.getUniqueId().toString(), "joins", String.valueOf(player.getStatistic(Statistic.LEAVE_GAME) + 1));
// On va vérifier si on a déjà renseigné le nombre de fois que le joueur a rejoint le serveur par le passé
PreparedStatement rechercheJoinCount = con.prepareStatement("SELECT * FROM site_userSetting WHERE uuid = ? AND name = 'joins'");
rechercheJoinCount.setString(1, player.getUniqueId().toString());
ResultSet resultat = rechercheJoinCount.executeQuery();
if (resultat.next()) {
// On a déjà renseigné ça par le passé, on va donc faire un update
PreparedStatement updateJoinCount = con.prepareStatement("UPDATE site_userSetting SET value = ? WHERE uuid = ? AND name = 'joins'");
updateJoinCount.setString(1, String.valueOf(player.getStatistic(Statistic.LEAVE_GAME) + 1));
updateJoinCount.setString(2, player.getUniqueId().toString());
updateJoinCount.executeQuery();
} else {
// On n'a pas encore renseigné le nombre de fois que le joueur a rejoint le serveur, on va donc faire un insert
PreparedStatement insertionJoinCount = con.prepareStatement("INSERT INTO site_userSetting (`uuid`, `name`, `value`) VALUES (?,'joins',?)");
insertionJoinCount.setString(1, player.getUniqueId().toString());
insertionJoinCount.setString(2, String.valueOf(player.getStatistic(Statistic.LEAVE_GAME) + 1));
insertionJoinCount.executeQuery();
}
} catch (SQLException e) {
ConsoleLog.warning("Func savePlayerData::setPlayerJoinCount(Player player)");
e.printStackTrace();
}
} }
private List<Object> getPlayerWildCmdStats(Player player) { private List<Object> getPlayerWildCmdStats(Player player) {
...@@ -206,13 +172,10 @@ public class PlayerDataHandler implements dataHandler { ...@@ -206,13 +172,10 @@ public class PlayerDataHandler implements dataHandler {
// - 0: Nombre d'utilisation du jour // - 0: Nombre d'utilisation du jour
// - 1: Date de la dernière commande // - 1: Date de la dernière commande
try { String playerLastUsed = Database.getUserSetting(player.getUniqueId().toString(), "wildCmdLastUsed");
PreparedStatement playerLastUsed = con.prepareStatement("SELECT * FROM site_userSetting WHERE uuid = ? AND name = 'wildCmdLastUsed'");
playerLastUsed.setString(1, player.getUniqueId().toString());
ResultSet lastUsedResult = playerLastUsed.executeQuery();
if (lastUsedResult.next()) { if (playerLastUsed != null) {
LocalDateTime lastUsed = Timestamp.valueOf(lastUsedResult.getString("value")).toLocalDateTime(); LocalDateTime lastUsed = Timestamp.valueOf(playerLastUsed).toLocalDateTime();
if (ChronoUnit.HOURS.between(lastUsed, LocalDateTime.now()) > 24) { if (ChronoUnit.HOURS.between(lastUsed, LocalDateTime.now()) > 24) {
return new ArrayList<>() { return new ArrayList<>() {
{ {
...@@ -221,14 +184,12 @@ public class PlayerDataHandler implements dataHandler { ...@@ -221,14 +184,12 @@ public class PlayerDataHandler implements dataHandler {
} }
}; };
} else { } else {
PreparedStatement playerAskNum = con.prepareStatement("SELECT * FROM site_userSetting WHERE uuid = ? AND name = 'wildCmdAskNum'"); String playerAskNum = Database.getUserSetting(player.getUniqueId().toString(), "wildCmdAskNum");
playerAskNum.setString(1, player.getUniqueId().toString());
ResultSet askNumResult = playerAskNum.executeQuery();
if (askNumResult.next()) { if (playerAskNum != null) {
return new ArrayList<>() { return new ArrayList<>() {
{ {
add(Integer.valueOf(askNumResult.getString("value"))); add(Integer.valueOf(playerAskNum));
add(lastUsed); add(lastUsed);
} }
}; };
...@@ -245,21 +206,14 @@ public class PlayerDataHandler implements dataHandler { ...@@ -245,21 +206,14 @@ public class PlayerDataHandler implements dataHandler {
} }
} }
} else { } else {
plugin.getLogger().info("Mise à jour du joueur " + player.getName() + " UUID: " + player.getUniqueId()); ConsoleLog.info("Mise à jour du joueur " + player.getName() + " UUID: " + player.getUniqueId());
ConsoleLog.info("Création des champs 'wildCmdLastUsed' et 'wildCmdAskNum'"); ConsoleLog.info("Création des champs 'wildCmdLastUsed' et 'wildCmdAskNum'");
// On va insérer une date bidon pour éviter un potentiel cooldown // On va insérer une date bidon pour éviter un potentiel cooldown
LocalDateTime dateBidon = LocalDateTime.parse("2001-12-11 12:30", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")); LocalDateTime dateBidon = LocalDateTime.parse("2001-12-11 12:30", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
PreparedStatement insertWildCmdLastUsed = con.prepareStatement("INSERT INTO site_userSetting (`uuid`, `name`, `value`) VALUES (?,'wildCmdLastUsed',?)");
insertWildCmdLastUsed.setString(1, player.getUniqueId().toString());
insertWildCmdLastUsed.setString(2, Timestamp.valueOf(dateBidon).toString());
insertWildCmdLastUsed.executeQuery();
PreparedStatement insertWildCmdAskNum = con.prepareStatement("INSERT INTO site_userSetting (`uuid`, `name`, `value`) VALUES (?,'wildCmdAskNum',?)");
insertWildCmdAskNum.setString(1, player.getUniqueId().toString());
insertWildCmdAskNum.setString(2, "0");
insertWildCmdAskNum.executeQuery();
Database.setUserSetting(player.getUniqueId().toString(), "wildCmdLastUsed", Timestamp.valueOf(dateBidon).toString());
Database.setUserSetting(player.getUniqueId().toString(), "wildCmdAskNum", "0");
return new ArrayList<>() { return new ArrayList<>() {
{ {
add(0); add(0);
...@@ -267,22 +221,6 @@ public class PlayerDataHandler implements dataHandler { ...@@ -267,22 +221,6 @@ public class PlayerDataHandler implements dataHandler {
} }
}; };
} }
} catch (SQLException e) {
ConsoleLog.warning("Func savePlayerData::getPlayerWildCmdStats(Player player)");
e.printStackTrace();
}
ConsoleLog.warning("Func savePlayerData::getPlayerWildCmdStats(Player player)");
ConsoleLog.warning("Fonctionnement anormal! La recherche dans la bdd a échouée pour le joueur " + player.getName() + " UUID: " + player.getUniqueId());
ConsoleLog.warning("Passage de 'wildCmdLastUsed' au 11 décembre 2001 et 'wildCmdAskNum' à 0");
return new ArrayList<>() {
{
add(0);
add(LocalDateTime.parse("2001-12-11 12:30", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")));
}
};
} }
public void savePlayerWildCmdStats(Player player, List<Object> stats) { public void savePlayerWildCmdStats(Player player, List<Object> stats) {
...@@ -290,22 +228,9 @@ public class PlayerDataHandler implements dataHandler { ...@@ -290,22 +228,9 @@ public class PlayerDataHandler implements dataHandler {
// - 0: Nombre d'utilisation du jour // - 0: Nombre d'utilisation du jour
// - 1: Date de la dernière commande // - 1: Date de la dernière commande
try {
// On va zapper la vérification de présence car on suppose que la commande getWildCmdStats avait réussie // On va zapper la vérification de présence car on suppose que la commande getWildCmdStats avait réussie
PreparedStatement updateWildCmdAskNum = con.prepareStatement("UPDATE site_userSetting SET value = ? WHERE uuid = ? AND name = 'wildCmdAskNum'"); Database.setUserSetting(player.getUniqueId().toString(), "wildCmdAskNum", String.valueOf(stats.get(0)));
updateWildCmdAskNum.setString(1, String.valueOf(stats.get(0))); Database.setUserSetting(player.getUniqueId().toString(), "wildCmdLastUsed", Timestamp.valueOf((LocalDateTime) stats.get(1)).toString());
updateWildCmdAskNum.setString(2, player.getUniqueId().toString());
updateWildCmdAskNum.executeUpdate();
PreparedStatement updateWildCmdLastUsed = con.prepareStatement("UPDATE site_userSetting SET value = ? WHERE uuid = ? AND name = 'wildCmdLastUsed'");
updateWildCmdLastUsed.setString(1, Timestamp.valueOf((LocalDateTime) stats.get(1)).toString());
updateWildCmdLastUsed.setString(2, player.getUniqueId().toString());
updateWildCmdLastUsed.executeUpdate();
} catch (SQLException e) {
ConsoleLog.warning("Func savePlayerData::getPlayerWildCmdStats(Player player)");
e.printStackTrace();
}
} }
public boolean playerAlreadyJoined(Player player) { public boolean playerAlreadyJoined(Player player) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment