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

Enregistrement des données dans la bdd et ajout de la commande /reset-wild @username

parent f73c1bc9
Branches
Tags
1 merge request!5Feature/23 regler wild
Pipeline #35 failed
package com.slprojects.slcraftplugin; package com.slprojects.slcraftplugin;
import com.slprojects.slcraftplugin.commandes.linkCodeCommand; import com.slprojects.slcraftplugin.commands.admins.wildReset;
import com.slprojects.slcraftplugin.commandes.wildCommand; import com.slprojects.slcraftplugin.commands.publics.linkCode;
import com.slprojects.slcraftplugin.tachesParalleles.savePlayerData; import com.slprojects.slcraftplugin.commands.publics.wild;
import com.slprojects.slcraftplugin.tachesParalleles.internalWebServer; import com.slprojects.slcraftplugin.parallelTasks.playerDataHandler;
import com.slprojects.slcraftplugin.parallelTasks.internalWebServer;
import me.clip.placeholderapi.PlaceholderAPI; import me.clip.placeholderapi.PlaceholderAPI;
import net.luckperms.api.LuckPerms; import net.luckperms.api.LuckPerms;
import net.luckperms.api.cacheddata.CachedMetaData; import net.luckperms.api.cacheddata.CachedMetaData;
...@@ -38,8 +39,6 @@ import java.util.ArrayList; ...@@ -38,8 +39,6 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.TimeUnit;
import java.util.regex.MatchResult;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
...@@ -48,7 +47,8 @@ public final class Main extends JavaPlugin implements Listener { ...@@ -48,7 +47,8 @@ public final class Main extends JavaPlugin implements Listener {
private List<UUID> wildCommandActiveUsers; private List<UUID> wildCommandActiveUsers;
private static FileConfiguration config; private static FileConfiguration config;
private static LuckPerms luckPermsApi; private static LuckPerms luckPermsApi;
private com.slprojects.slcraftplugin.tachesParalleles.savePlayerData savePlayerData; public playerDataHandler playerDataHandler;
public wild wildCommand;
// Fonctions appelées à des évènements clés // Fonctions appelées à des évènements clés
@Override @Override
...@@ -84,15 +84,18 @@ public final class Main extends JavaPlugin implements Listener { ...@@ -84,15 +84,18 @@ public final class Main extends JavaPlugin implements Listener {
reloadConfig(); reloadConfig();
config = getConfig(); config = getConfig();
updateConfig(); updateConfig();
savePlayerData = new savePlayerData(this); playerDataHandler = new playerDataHandler(this);
// On initialise la base de donnée // On initialise la base de donnée
initDatabase(); initDatabase();
wildCommand wildCommand = new wildCommand(this); wildCommand = new wild(this);
getCommand("wild").setExecutor(wildCommand); getCommand("wild").setExecutor(wildCommand);
linkCodeCommand linkCodeCommand = new linkCodeCommand(this); wildReset wildReset = new wildReset(this);
getCommand("reset-wild").setExecutor(wildReset);
linkCode linkCodeCommand = new linkCode(this);
getCommand("getLinkCode").setExecutor(linkCodeCommand); getCommand("getLinkCode").setExecutor(linkCodeCommand);
internalWebServer.startServer(this); internalWebServer.startServer(this);
...@@ -105,14 +108,14 @@ public final class Main extends JavaPlugin implements Listener { ...@@ -105,14 +108,14 @@ public final class Main extends JavaPlugin implements Listener {
// Plugin shutdown logic // Plugin shutdown logic
getServer().getConsoleSender().sendMessage(ChatColor.RED+"SL-Craft | Plugin éteint"); getServer().getConsoleSender().sendMessage(ChatColor.RED+"SL-Craft | Plugin éteint");
getServer().getOnlinePlayers().forEach(player -> savePlayerData.saveOnQuit(player)); getServer().getOnlinePlayers().forEach(player -> playerDataHandler.quitEvent(player));
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
public void onPlayerJoin(PlayerJoinEvent e) { public void onPlayerJoin(PlayerJoinEvent e) {
// On désactive le message par défaut // On désactive le message par défaut
e.joinMessage(null); e.joinMessage(null);
savePlayerData.saveOnJoin(e.getPlayer()); playerDataHandler.joinEvent(e.getPlayer());
// On affiche le message de bienvenue // On affiche le message de bienvenue
String welcomeMessage = PlaceholderAPI.setPlaceholders(e.getPlayer(), Objects.requireNonNull(getConfig().getString("player-join-message"))); String welcomeMessage = PlaceholderAPI.setPlaceholders(e.getPlayer(), Objects.requireNonNull(getConfig().getString("player-join-message")));
...@@ -130,7 +133,7 @@ public final class Main extends JavaPlugin implements Listener { ...@@ -130,7 +133,7 @@ public final class Main extends JavaPlugin implements Listener {
public void onPlayerQuit(PlayerQuitEvent e) { public void onPlayerQuit(PlayerQuitEvent e) {
// On désactive le message par défaut // On désactive le message par défaut
e.quitMessage(null); e.quitMessage(null);
savePlayerData.saveOnQuit(e.getPlayer()); playerDataHandler.quitEvent(e.getPlayer());
String quitMessage = PlaceholderAPI.setPlaceholders(e.getPlayer(), Objects.requireNonNull(getConfig().getString("player-quit-message"))); String quitMessage = PlaceholderAPI.setPlaceholders(e.getPlayer(), Objects.requireNonNull(getConfig().getString("player-quit-message")));
for(Player p : getServer().getOnlinePlayers()){ for(Player p : getServer().getOnlinePlayers()){
p.sendMessage(quitMessage); p.sendMessage(quitMessage);
......
package com.slprojects.slcraftplugin.commands.admins;
import com.slprojects.slcraftplugin.Main;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
public class wildReset implements CommandExecutor {
private final Main plugin;
public wildReset(Main plugin){
this.plugin = plugin;
}
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args){
if(args.length > 0){
for(int i=0; i< args.length; i++){
Player player = plugin.getServer().getPlayer(args[i]);
if(player != null){
List<Object> reset = new ArrayList<Object>(){
{
add(0);
add(LocalDateTime.parse("2001-12-11 12:30", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")));
}
};
plugin.playerDataHandler.savePlayerWildCmdStats(player, reset);
plugin.wildCommand.setPlayerStats(player, reset);
String msg = "Passage de 'wildCmdLastUsed' au 11/12/2001 et 'wildCmdAskNum' à 0 pour " + player.getName() + " UUID: " + player.getUniqueId();
if (sender instanceof Player){
sender.sendMessage("§7§o"+msg);
}else{
plugin.getServer().getConsoleSender().sendMessage(msg);
}
}else{
String errorMsg = "Joueur n°" + i + " (dans la liste) non trouvé. :(";
if (sender instanceof Player){
sender.sendMessage("§c"+errorMsg);
}else{
plugin.getServer().getConsoleSender().sendMessage(ChatColor.RED + errorMsg);
}
}
}
}else{
String errorMsg = "Vous devez écrire le pseudo d'un ou plusieurs joueurs.";
if (sender instanceof Player){
sender.sendMessage("§c"+errorMsg);
}else{
plugin.getServer().getConsoleSender().sendMessage(ChatColor.RED + errorMsg);
}
}
return true;
}
}
package com.slprojects.slcraftplugin.commandes; package com.slprojects.slcraftplugin.commands.publics;
import com.slprojects.slcraftplugin.Main; import com.slprojects.slcraftplugin.Main;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
...@@ -14,12 +14,12 @@ import java.sql.ResultSet; ...@@ -14,12 +14,12 @@ import java.sql.ResultSet;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Random; import java.util.Random;
public class linkCodeCommand implements CommandExecutor { public class linkCode implements CommandExecutor {
// Variables // Variables
private final Main plugin; private final Main plugin;
public linkCodeCommand(Main plugin){ public linkCode(Main plugin){
// On récupère la classe parente pour les paramètres // On récupère la classe parente pour les paramètres
this.plugin = plugin; this.plugin = plugin;
} }
......
package com.slprojects.slcraftplugin.commandes; package com.slprojects.slcraftplugin.commands.publics;
import com.slprojects.slcraftplugin.Main; import com.slprojects.slcraftplugin.Main;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
...@@ -19,7 +19,7 @@ import java.util.*; ...@@ -19,7 +19,7 @@ import java.util.*;
import static java.lang.Math.abs; import static java.lang.Math.abs;
public class wildCommand implements CommandExecutor { public class wild implements CommandExecutor {
// Variables // Variables
private final Main plugin; private final Main plugin;
...@@ -31,7 +31,7 @@ public class wildCommand implements CommandExecutor { ...@@ -31,7 +31,7 @@ public class wildCommand implements CommandExecutor {
private final int usageCooldown; private final int usageCooldown;
private final int usagePerDay; private final int usagePerDay;
public wildCommand(Main plugin){ public wild(Main plugin){
// On récupère la classe parente pour les paramètres // On récupère la classe parente pour les paramètres
this.plugin = plugin; this.plugin = plugin;
wildUsersIndexes = new ArrayList<>(); wildUsersIndexes = new ArrayList<>();
...@@ -45,7 +45,6 @@ public class wildCommand implements CommandExecutor { ...@@ -45,7 +45,6 @@ public class wildCommand implements CommandExecutor {
} }
@Override @Override
@SuppressWarnings("unchecked")
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
// On vérifie que la commande a bien été lancée par un joueur // On vérifie que la commande a bien été lancée par un joueur
if (sender instanceof Player) { if (sender instanceof Player) {
...@@ -54,7 +53,6 @@ public class wildCommand implements CommandExecutor { ...@@ -54,7 +53,6 @@ public class wildCommand implements CommandExecutor {
int playerIndex; int playerIndex;
LocalDateTime dateTimeNow = LocalDateTime.now(); LocalDateTime dateTimeNow = LocalDateTime.now();
if(wildUsersIndexes.contains(playerUUID)){
playerIndex = wildUsersIndexes.indexOf(playerUUID); playerIndex = wildUsersIndexes.indexOf(playerUUID);
if(abs(ChronoUnit.SECONDS.between(wildUsersLastAsked.get(playerIndex), dateTimeNow)) > usageCooldown){ if(abs(ChronoUnit.SECONDS.between(wildUsersLastAsked.get(playerIndex), dateTimeNow)) > usageCooldown){
...@@ -70,13 +68,6 @@ public class wildCommand implements CommandExecutor { ...@@ -70,13 +68,6 @@ public class wildCommand implements CommandExecutor {
plugin.getServer().getConsoleSender().sendMessage("["+ plugin.getName() +"] Le joueur "+ChatColor.GOLD+player.getName()+ChatColor.RESET+" a exécuté la commande "+ChatColor.GOLD+"/wild"+ChatColor.RESET+" : "+ChatColor.RED+"refusé"); plugin.getServer().getConsoleSender().sendMessage("["+ plugin.getName() +"] Le joueur "+ChatColor.GOLD+player.getName()+ChatColor.RESET+" a exécuté la commande "+ChatColor.GOLD+"/wild"+ChatColor.RESET+" : "+ChatColor.RED+"refusé");
player.sendMessage("§cVous devez attendre §n"+usageCooldown+"s§r§c avant de relancer la commande."); player.sendMessage("§cVous devez attendre §n"+usageCooldown+"s§r§c avant de relancer la commande.");
} }
}else{
wildUsersIndexes.add(playerUUID);
wildUsersLastAsked.add(dateTimeNow);
wildUsersAskNum.add(0);
wildUsersStartLocation.add(player.getLocation());
askForTeleport(player);
}
} }
return true; return true;
} }
...@@ -98,13 +89,14 @@ public class wildCommand implements CommandExecutor { ...@@ -98,13 +89,14 @@ public class wildCommand implements CommandExecutor {
// Date bidon pour annuler le cooldown (c'est ma date de naissance :D) // Date bidon pour annuler le cooldown (c'est ma date de naissance :D)
wildUsersLastAsked.set(playerIndex, LocalDateTime.parse("2001-12-11 12:30", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"))); wildUsersLastAsked.set(playerIndex, LocalDateTime.parse("2001-12-11 12:30", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")));
}else{ }else{
teleportPlayer(player, playerIndex); teleportPlayer(player);
} }
} }
}.runTaskLater(plugin, delayInTicks); }.runTaskLater(plugin, delayInTicks);
} }
private void teleportPlayer(Player player, int playerIndex){ private void teleportPlayer(Player player){
int playerIndex = wildUsersIndexes.indexOf(player.getUniqueId());
wildUsersAskNum.set(playerIndex, wildUsersAskNum.get(playerIndex)+1); wildUsersAskNum.set(playerIndex, wildUsersAskNum.get(playerIndex)+1);
// on récupère la liste des biomes exclus // on récupère la liste des biomes exclus
...@@ -158,4 +150,43 @@ public class wildCommand implements CommandExecutor { ...@@ -158,4 +150,43 @@ public class wildCommand implements CommandExecutor {
player.sendMessage("§7§oVous avez épuisé toutes vos téléportations du jour."); player.sendMessage("§7§oVous avez épuisé toutes vos téléportations du jour.");
} }
} }
public List<Object> getPlayerStats(Player player){
if(!wildUsersIndexes.contains(player.getUniqueId())){
return new ArrayList<>();
}else{
int playerIndex = wildUsersIndexes.indexOf(player.getUniqueId());
// Indexes:
// - 0: Nombre d'utilisation du jour
// - 1: Date de la dernière commande
List<Object> stats = new ArrayList<Object>();
stats.add(wildUsersAskNum.get(playerIndex));
stats.add(wildUsersLastAsked.get(playerIndex));
return stats;
}
}
public void setPlayerStats(Player player, List<Object> stats){
LocalDateTime dateTimeNow = LocalDateTime.now();
if(!wildUsersIndexes.contains(player.getUniqueId())){
wildUsersIndexes.add(player.getUniqueId());
wildUsersLastAsked.add(dateTimeNow);
wildUsersAskNum.add(0);
wildUsersStartLocation.add(player.getLocation());
}
int playerIndex = wildUsersIndexes.indexOf(player.getUniqueId());
// Indexes:
// - 0: Nombre d'utilisation du jour
// - 1: Date de la dernière commande
LocalDateTime savedDateTime = (LocalDateTime)stats.get(1);
if(ChronoUnit.HOURS.between(savedDateTime, dateTimeNow) > 24){
wildUsersAskNum.set(playerIndex, 0);
wildUsersLastAsked.set(playerIndex, savedDateTime);
}else{
wildUsersAskNum.set(playerIndex, (int)stats.get(0));
wildUsersLastAsked.set(playerIndex, savedDateTime);
}
}
} }
package com.slprojects.slcraftplugin.tachesParalleles; package com.slprojects.slcraftplugin.parallelTasks;
import com.slprojects.slcraftplugin.Main; import com.slprojects.slcraftplugin.Main;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
......
package com.slprojects.slcraftplugin.tachesParalleles; package com.slprojects.slcraftplugin.parallelTasks;
import com.slprojects.slcraftplugin.Main; import com.slprojects.slcraftplugin.Main;
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;
import java.sql.Connection; import java.sql.*;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.Duration; import java.time.Duration;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneOffset; import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
public class savePlayerData { public class playerDataHandler {
private final Main plugin; private final Main plugin;
private Connection con; private Connection con;
// Playtime // Playtime
private final List<UUID> playTimeUsersIndexes; private final List<UUID> playTimeUsersIndexes;
private final List<LocalDateTime> playTimeUsersDate; private final List<LocalDateTime> playTimeUsersDate;
public savePlayerData(Main plugin){ public playerDataHandler(Main plugin){
this.plugin = plugin; this.plugin = plugin;
playTimeUsersIndexes = new ArrayList<>(); playTimeUsersIndexes = new ArrayList<>();
playTimeUsersDate = new ArrayList<>(); playTimeUsersDate = new ArrayList<>();
} }
public void saveOnJoin(Player player) { public void joinEvent(Player player) {
// On ouvre la bdd // On ouvre la bdd
con = plugin.bddOpenConn(); con = plugin.bddOpenConn();
...@@ -37,25 +36,27 @@ public class savePlayerData { ...@@ -37,25 +36,27 @@ public class savePlayerData {
playTimeUsersDate.add(LocalDateTime.now()); playTimeUsersDate.add(LocalDateTime.now());
insertPlayerName(player); // On check si le nom du joueur est déjà enregistré insertPlayerName(player); // On check si le nom du joueur est déjà enregistré
playerAddPlayerEntryOrExit(player, true); // On ajoute son entée statsPlayerEntryExit(player, true); // On ajoute son entée
checkJoinedDate(player); // On check si on dipose de sa date de rejoint checkPlayerJoinedDate(player); // On check si on dipose de sa date de rejoint
setPlayerJoinCount(player); // On set le nombre de fois qu'il a rejoint setPlayerJoinCount(player); // On set le nombre de fois qu'il a rejoint
plugin.wildCommand.setPlayerStats(player, getPlayerWildCmdStats(player));
// On ferme la bdd // On ferme la bdd
try { try {
con.close(); con.close();
} catch (SQLException e) { } catch (SQLException e) {
plugin.getLogger().warning(ChatColor.RED + "Impossible de fermer la connexion à la bdd. Func savePlayerData::saveOnJoin(Player player)"); plugin.getLogger().warning("Impossible de fermer la connexion à la bdd. Func savePlayerData::saveOnJoin(Player player)");
e.printStackTrace(); e.printStackTrace();
} }
} }
public void saveOnQuit(Player player) { public void quitEvent(Player player) {
// On ouvre la bdd // On ouvre la bdd
con = plugin.bddOpenConn(); con = plugin.bddOpenConn();
calculatePlayerPlayTime(player); // On actualise le temps de jeu du joueur calculatePlayerPlayTime(player); // On actualise le temps de jeu du joueur
playerAddPlayerEntryOrExit(player, false); // On ajoute son sortie statsPlayerEntryExit(player, false); // On ajoute son sortie
savePlayerWildCmdStats(player, plugin.wildCommand.getPlayerStats(player));
// On ferme la bdd // On ferme la bdd
try { try {
...@@ -92,25 +93,25 @@ public class savePlayerData { ...@@ -92,25 +93,25 @@ public class savePlayerData {
insertUtilisateur.executeQuery(); insertUtilisateur.executeQuery();
} }
} catch (SQLException e) { } catch (SQLException e) {
plugin.getLogger().warning(ChatColor.RED + "Func savePlayerData::insertPlayerName(Player player)"); plugin.getLogger().warning("Func savePlayerData::insertPlayerName(Player player)");
e.printStackTrace(); e.printStackTrace();
} }
} }
private void playerAddPlayerEntryOrExit(Player player, boolean isEnter){ private void statsPlayerEntryExit(Player player, boolean isEnter){
try { try {
PreparedStatement insertPlayerEntryOrExit = con.prepareStatement("INSERT INTO site_playerEntries (uuid, isJoin, date) VALUES (?, ?, ?)"); PreparedStatement insertPlayerEntryOrExit = con.prepareStatement("INSERT INTO site_playerEntries (uuid, isJoin, date) VALUES (?, ?, ?)");
insertPlayerEntryOrExit.setString(1, player.getUniqueId().toString()); insertPlayerEntryOrExit.setString(1, player.getUniqueId().toString());
insertPlayerEntryOrExit.setBoolean(2, isEnter); insertPlayerEntryOrExit.setBoolean(2, isEnter);
insertPlayerEntryOrExit.setString(3, java.sql.Timestamp.valueOf(java.time.LocalDateTime.now()).toString()); insertPlayerEntryOrExit.setString(3, Timestamp.valueOf(java.time.LocalDateTime.now()).toString());
insertPlayerEntryOrExit.executeQuery(); insertPlayerEntryOrExit.executeQuery();
} catch (SQLException e) { } catch (SQLException e) {
plugin.getLogger().warning(ChatColor.RED + "Func savePlayerData::playerAddPlayerEntryOrExit(Player player, boolean isEnter)"); plugin.getLogger().warning("Func savePlayerData::playerAddPlayerEntryOrExit(Player player, boolean isEnter)");
e.printStackTrace(); e.printStackTrace();
} }
} }
private void checkJoinedDate(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'"); PreparedStatement rechercheUtilisateur = con.prepareStatement("SELECT * FROM site_userSetting WHERE uuid = ? AND name = 'joinedDate'");
...@@ -156,12 +157,12 @@ public class savePlayerData { ...@@ -156,12 +157,12 @@ public class savePlayerData {
// 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',?)"); PreparedStatement insertionDateInscription = con.prepareStatement("INSERT INTO site_userSetting (`uuid`, `name`, `value`) VALUES (?,'joinedDate',?)");
insertionDateInscription.setString(1, player.getUniqueId().toString()); insertionDateInscription.setString(1, player.getUniqueId().toString());
insertionDateInscription.setString(2, java.sql.Timestamp.valueOf(java.time.LocalDateTime.now()).toString()); insertionDateInscription.setString(2, Timestamp.valueOf(java.time.LocalDateTime.now()).toString());
insertionDateInscription.executeQuery(); insertionDateInscription.executeQuery();
} }
} }
} catch (SQLException e) { } catch (SQLException e) {
plugin.getLogger().warning(ChatColor.RED + "Func savePlayerData::checkJoinedDate(Player player)"); plugin.getLogger().warning("Func savePlayerData::checkJoinedDate(Player player)");
e.printStackTrace(); e.printStackTrace();
} }
} }
...@@ -188,7 +189,7 @@ public class savePlayerData { ...@@ -188,7 +189,7 @@ public class savePlayerData {
} }
} catch (SQLException e) { } catch (SQLException e) {
plugin.getLogger().warning(ChatColor.RED + "Func savePlayerData::setPlayerJoinCount(Player player)"); plugin.getLogger().warning("Func savePlayerData::setPlayerJoinCount(Player player)");
e.printStackTrace(); e.printStackTrace();
} }
} }
...@@ -220,7 +221,114 @@ public class savePlayerData { ...@@ -220,7 +221,114 @@ public class savePlayerData {
} }
} catch (SQLException e) { } catch (SQLException e) {
plugin.getLogger().warning(ChatColor.RED + "Func savePlayerData::increasePlayerPlayTime(Player player)"); plugin.getLogger().warning("Func savePlayerData::increasePlayerPlayTime(Player player)");
e.printStackTrace();
}
}
private List<Object> getPlayerWildCmdStats(Player player){
// Indexes:
// - 0: Nombre d'utilisation du jour
// - 1: Date de la dernière commande
try {
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()){
LocalDateTime lastUsed = Timestamp.valueOf(lastUsedResult.getString("value")).toLocalDateTime();
if(ChronoUnit.HOURS.between(lastUsed, LocalDateTime.now()) > 24){
return new ArrayList<Object>(){
{
add(0);
add(lastUsed);
}
};
}else{
PreparedStatement playerAskNum = con.prepareStatement("SELECT * FROM site_userSetting WHERE uuid = ? AND name = 'wildCmdAskNum'");
playerAskNum.setString(1, player.getUniqueId().toString());
ResultSet askNumResult = playerAskNum.executeQuery();
if(askNumResult.next()){
return new ArrayList<Object>(){
{
add(Integer.valueOf(askNumResult.getString("value")));
add(lastUsed);
}
};
}else{
plugin.getLogger().warning("Func savePlayerData::getPlayerWildCmdStats(Player player)");
plugin.getLogger().warning("Fonctionnement anormal! On dispose de la date de 'wildCmdLastUsed' mais pas de 'wildCmdAskNum' pour le joueur " + player.getName() + " UUID: " + player.getUniqueId());
plugin.getLogger().warning("Passage de 'wildCmdAskNum' à 0.");
return new ArrayList<Object>(){
{
add(0);
add(lastUsed);
}
};
}
}
}else{
plugin.getLogger().info("Mise à jour du joueur " + player.getName() + " UUID: " + player.getUniqueId());
plugin.getLogger().info("Création des champs 'wildCmdLastUsed' et 'wildCmdAskNum'");
// 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"));
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();
return new ArrayList<Object>(){
{
add(0);
add(dateBidon);
}
};
}
} catch (SQLException e) {
plugin.getLogger().warning("Func savePlayerData::getPlayerWildCmdStats(Player player)");
e.printStackTrace();
}
plugin.getLogger().warning("Func savePlayerData::getPlayerWildCmdStats(Player player)");
plugin.getLogger().warning("Fonctionnement anormal! La recherche dans la bdd a échouée pour le joueur " + player.getName() + " UUID: " + player.getUniqueId());
plugin.getLogger().warning("Passage de 'wildCmdLastUsed' au 11 décembre 2001 et 'wildCmdAskNum' à 0");
return new ArrayList<Object>(){
{
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){
// Indexes:
// - 0: Nombre d'utilisation du jour
// - 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
PreparedStatement updateWildCmdAskNum = con.prepareStatement("UPDATE site_userSetting SET value = ? WHERE uuid = ? AND name = 'wildCmdAskNum'");
updateWildCmdAskNum.setString(1, String.valueOf(stats.get(0)));
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) {
plugin.getLogger().warning("Func savePlayerData::getPlayerWildCmdStats(Player player)");
e.printStackTrace(); e.printStackTrace();
} }
} }
......
...@@ -13,6 +13,12 @@ commands: ...@@ -13,6 +13,12 @@ commands:
usage: /wild usage: /wild
permission: slcraft.wild permission: slcraft.wild
reset-wild:
description: ADMIN - Permet de réinitialiser le compteur de téléportation aléatoire d'un joueur
aliases: [reset-wild, wildreset]
usage: /reset-wild
permission: slcraft.admin.reset-wild
getlinkcode: getlinkcode:
description: Te permet d'obtenir un code pour associer ton compte Minecraft au site internet du serveur.' description: Te permet d'obtenir un code pour associer ton compte Minecraft au site internet du serveur.'
aliases: [ getlinkcode ] aliases: [ getlinkcode ]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment