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

1.4

parent a462c5b5
No related branches found
No related tags found
No related merge requests found
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<groupId>com.slprojects</groupId> <groupId>com.slprojects</groupId>
<artifactId>SLCraftPlugin</artifactId> <artifactId>SLCraftPlugin</artifactId>
<version>1.3</version> <version>1.4</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>SLCraftPlugin</name> <name>SLCraftPlugin</name>
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
package com.slprojects.slcraftplugin; package com.slprojects.slcraftplugin;
import com.slprojects.slcraftplugin.commandes.linkCodeCommand;
import com.slprojects.slcraftplugin.commandes.wildCommand; import com.slprojects.slcraftplugin.commandes.wildCommand;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Sound; import org.bukkit.Sound;
...@@ -15,14 +16,12 @@ import org.bukkit.event.player.PlayerJoinEvent; ...@@ -15,14 +16,12 @@ import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.json.simple.JSONObject; import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.mariadb.jdbc.MariaDbPoolDataSource; import org.mariadb.jdbc.MariaDbPoolDataSource;
import java.io.FileReader;
import java.sql.*; import java.sql.*;
import java.text.SimpleDateFormat;
import java.time.Duration; import java.time.Duration;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
...@@ -60,12 +59,15 @@ public final class Main extends JavaPlugin implements Listener { ...@@ -60,12 +59,15 @@ public final class Main extends JavaPlugin implements Listener {
// On initialise la base de donnée // On initialise la base de donnée
initDatabase(); initDatabase();
wildCommandActiveUsers = new ArrayList<UUID>(); wildCommandActiveUsers = new ArrayList<>();
playTimeUsersIndexes = new ArrayList<UUID>(); playTimeUsersIndexes = new ArrayList<>();
playTimeUsersDate = new ArrayList<LocalDateTime>(); playTimeUsersDate = new ArrayList<>();
wildCommand wildCommand = new wildCommand(this); wildCommand wildCommand = new wildCommand(this);
getCommand("wild").setExecutor(wildCommand); getCommand("wild").setExecutor(wildCommand);
linkCodeCommand linkCodeCommand = new linkCodeCommand(this);
getCommand("getLinkCode").setExecutor(linkCodeCommand);
getLogger().info(ChatColor.GREEN+"SL-Craft | Plugin démarré"); getLogger().info(ChatColor.GREEN+"SL-Craft | Plugin démarré");
} }
...@@ -82,9 +84,11 @@ public final class Main extends JavaPlugin implements Listener { ...@@ -82,9 +84,11 @@ public final class Main extends JavaPlugin implements Listener {
playTimeUsersIndexes.add(e.getPlayer().getUniqueId()); playTimeUsersIndexes.add(e.getPlayer().getUniqueId());
playTimeUsersDate.add(LocalDateTime.now()); playTimeUsersDate.add(LocalDateTime.now());
// On affiche le message de bienvenue
String welcomeMessage = PlaceholderAPI.setPlaceholders(e.getPlayer(), getConfig().getString("player-join-message")); String welcomeMessage = PlaceholderAPI.setPlaceholders(e.getPlayer(), getConfig().getString("player-join-message"));
e.setJoinMessage(welcomeMessage); // Et on joue un petit son chez tous les joueurs
for(Player p : getServer().getOnlinePlayers()){ for(Player p : getServer().getOnlinePlayers()){
p.sendMessage(welcomeMessage);
if(getConfig().getBoolean("player-join-playSound")){ if(getConfig().getBoolean("player-join-playSound")){
p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 0); p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 0);
} }
...@@ -96,9 +100,8 @@ public final class Main extends JavaPlugin implements Listener { ...@@ -96,9 +100,8 @@ public final class Main extends JavaPlugin implements Listener {
public void onPlayerQuit(PlayerQuitEvent e) { public void onPlayerQuit(PlayerQuitEvent e) {
savePlayer(e.getPlayer()); savePlayer(e.getPlayer());
String quitMessage = PlaceholderAPI.setPlaceholders(e.getPlayer(), getConfig().getString("player-quit-message")); String quitMessage = PlaceholderAPI.setPlaceholders(e.getPlayer(), getConfig().getString("player-quit-message"));
e.setQuitMessage(quitMessage);
for(Player p : getServer().getOnlinePlayers()){ for(Player p : getServer().getOnlinePlayers()){
//p.sendMessage(quitMessage); p.sendMessage(quitMessage);
} }
} }
...@@ -106,25 +109,30 @@ public final class Main extends JavaPlugin implements Listener { ...@@ -106,25 +109,30 @@ public final class Main extends JavaPlugin implements Listener {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public void savePlayer(Player player) { public void savePlayer(Player player) {
JSONObject target = new JSONObject(); JSONObject target = new JSONObject();
// On ajoute l'uuid et son nom
target.put("uuid", player.getUniqueId().toString()); target.put("uuid", player.getUniqueId().toString());
target.put("name", player.getName());
// La date de join (locale, au cas où CoreProtect ne l'a pas)
target.put("joinedDate", playTimeUsersDate.get(playTimeUsersIndexes.indexOf(player.getUniqueId())).toString());
// On calcule le temps de jeu
LocalDateTime timeNow = LocalDateTime.now(); LocalDateTime timeNow = LocalDateTime.now();
Duration duration = Duration.between(timeNow, playTimeUsersDate.get(playTimeUsersIndexes.indexOf(player.getUniqueId()))); Duration duration = Duration.between(timeNow, playTimeUsersDate.get(playTimeUsersIndexes.indexOf(player.getUniqueId())));
long playedTimeInSeconds = Math.abs(duration.toSeconds()); long playedTimeInSeconds = Math.abs(duration.toSeconds());
target.put("time", playedTimeInSeconds); // On ajoute le temps de jeu au joueur
target.put("playedTime", playedTimeInSeconds);
playTimeUsersDate.remove(playTimeUsersIndexes.indexOf(player.getUniqueId())); playTimeUsersDate.remove(playTimeUsersIndexes.indexOf(player.getUniqueId()));
playTimeUsersIndexes.remove(player.getUniqueId()); playTimeUsersIndexes.remove(player.getUniqueId());
target.put("joins", Integer.valueOf(player.getStatistic(Statistic.LEAVE_GAME) + 1)); target.put("joins", player.getStatistic(Statistic.LEAVE_GAME) + 1);
target.put("hasPlayedBefore", player.hasPlayedBefore());
writePlayer(target); writePlayer(target);
} }
@SuppressWarnings("unchecked")
private void writePlayer(JSONObject target) { private void writePlayer(JSONObject target) {
JSONParser jsonParser = new JSONParser();
// On ouvre la bdd // On ouvre la bdd
Connection con = bddOpenConn(); Connection con = bddOpenConn();
try { try {
...@@ -139,29 +147,107 @@ public final class Main extends JavaPlugin implements Listener { ...@@ -139,29 +147,107 @@ public final class Main extends JavaPlugin implements Listener {
// On insère la dernière date de join // On insère la dernière date de join
PreparedStatement insertionLastJoin = con.prepareStatement("INSERT INTO site_userSetting (`uuid`, `name`, `value`) VALUES (?,'playedTime',?)"); PreparedStatement insertionLastJoin = con.prepareStatement("INSERT INTO site_userSetting (`uuid`, `name`, `value`) VALUES (?,'playedTime',?)");
insertionLastJoin.setString(1, target.get("uuid").toString()); insertionLastJoin.setString(1, target.get("uuid").toString());
insertionLastJoin.setString(2, target.get("time").toString()); insertionLastJoin.setString(2, target.get("playedTime").toString());
resultat = insertionLastJoin.executeQuery(); insertionLastJoin.executeQuery();
// On insère le nombre de connexions // On insère le nombre de connexions
PreparedStatement insertionNbJoins = con.prepareStatement("INSERT INTO site_userSetting (`uuid`, `name`, `value`) VALUES (?,'joins',?)"); PreparedStatement insertionNbJoins = con.prepareStatement("INSERT INTO site_userSetting (`uuid`, `name`, `value`) VALUES (?,'joins',?)");
insertionNbJoins.setString(1, target.get("uuid").toString()); insertionNbJoins.setString(1, target.get("uuid").toString());
insertionNbJoins.setString(2, target.get("joins").toString()); insertionNbJoins.setString(2, target.get("joins").toString());
resultat = insertionNbJoins.executeQuery(); insertionNbJoins.executeQuery();
// On va regarder si l'utilisateur a déjà joué avant (vu qu'on avait pas de données sur ce joueur)
if(target.get("hasPlayedBefore").toString().equals("true")){
// 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.
PreparedStatement rechercheDateInscription = con.prepareStatement("SELECT time FROM co_user WHERE uuid = ?");
rechercheDateInscription.setString(1, target.get("uuid").toString());
resultat = rechercheDateInscription.executeQuery();
if(resultat.next()){
// On insère la date d'inscription
PreparedStatement insertionDateInscription = con.prepareStatement("INSERT INTO site_userSetting (`uuid`, `name`, `value`) VALUES (?,'joinedDate',?)");
insertionDateInscription.setString(1, target.get("uuid").toString());
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
insertionDateInscription.executeQuery();
// On va précisier que la date d'inscription a été trouvée chez CoreProtect
getLogger().info("L'utilisateur "+ChatColor.GOLD+target.get("name").toString()+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 {
// On insère la date d'inscription (du coup on considère que l'utilisateur n'a pas joué avant, malgré la condition)
PreparedStatement insertionDateInscription = con.prepareStatement("INSERT INTO site_userSetting (`uuid`, `name`, `value`) VALUES (?,'joinedDate',?)");
insertionDateInscription.setString(1, target.get("uuid").toString());
insertionDateInscription.setString(2, java.sql.Timestamp.valueOf(target.get("joinedDate").toString()).toString());
insertionDateInscription.executeQuery();
// 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',?)");
insertionInaccurrateJoinedDate.setString(1, target.get("uuid").toString());
insertionInaccurrateJoinedDate.setString(2, "true");
insertionInaccurrateJoinedDate.executeQuery();
getLogger().info("L'utilisateur "+ChatColor.GOLD+target.get("name").toString()+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{
// C'est un nouvel utilisateur, on peut lui attribuer la date d'inscription précédement calculée
PreparedStatement insertionDateInscription = con.prepareStatement("INSERT INTO site_userSetting (`uuid`, `name`, `value`) VALUES (?,'joinedDate',?)");
insertionDateInscription.setString(1, target.get("uuid").toString());
insertionDateInscription.setString(2, java.sql.Timestamp.valueOf(target.get("joinedDate").toString()).toString());
insertionDateInscription.executeQuery();
}
}else{ }else{
PreparedStatement tempsJeuJoueur = con.prepareStatement("SELECT value FROM site_userSetting WHERE uuid = ? AND name = 'playedTime'"); PreparedStatement tempsJeuJoueur = con.prepareStatement("SELECT value FROM site_userSetting WHERE uuid = ? AND name = 'playedTime'");
tempsJeuJoueur.setString(1, target.get("uuid").toString()); tempsJeuJoueur.setString(1, target.get("uuid").toString());
resultat = tempsJeuJoueur.executeQuery(); resultat = tempsJeuJoueur.executeQuery();
if(resultat.next()) { if(resultat.next()) {
int totalPlayedTime = parseInt(resultat.getString(1)) + parseInt(target.get("time").toString()); int totalPlayedTime = parseInt(resultat.getString(1)) + parseInt(target.get("playedTime").toString());
PreparedStatement modifyPlayedTime = con.prepareStatement("UPDATE `site_userSetting` SET `value`=? WHERE `uuid`=? AND `name`='playedTime'"); PreparedStatement modifyPlayedTime = con.prepareStatement("UPDATE `site_userSetting` SET `value`=? WHERE `uuid`=? AND `name`='playedTime'");
modifyPlayedTime.setInt(1, totalPlayedTime); modifyPlayedTime.setInt(1, totalPlayedTime);
modifyPlayedTime.setString(2, target.get("uuid").toString()); modifyPlayedTime.setString(2, target.get("uuid").toString());
resultat = modifyPlayedTime.executeQuery(); modifyPlayedTime.executeQuery();
PreparedStatement modifyNbJoins = con.prepareStatement("UPDATE `site_userSetting` SET `value`=? WHERE `uuid`=? AND `name`='joins'"); PreparedStatement modifyNbJoins = con.prepareStatement("UPDATE `site_userSetting` SET `value`=? WHERE `uuid`=? AND `name`='joins'");
modifyNbJoins.setString(1, target.get("joins").toString()); modifyNbJoins.setString(1, target.get("joins").toString());
modifyNbJoins.setString(2, target.get("uuid").toString()); modifyNbJoins.setString(2, target.get("uuid").toString());
resultat = modifyNbJoins.executeQuery(); modifyNbJoins.executeQuery();
// On va regarder s'il a sa date d'inscription de renseignée
PreparedStatement rechercheDateInscription = con.prepareStatement("SELECT * FROM site_userSetting WHERE uuid = ? AND name = 'joinedDate'");
rechercheDateInscription.setString(1, target.get("uuid").toString());
resultat = rechercheDateInscription.executeQuery();
if(!resultat.next()){
// On va regarder si l'on dispose de sa date d'inscription chez CoreProtect
rechercheDateInscription = con.prepareStatement("SELECT time FROM co_user WHERE uuid = ?");
rechercheDateInscription.setString(1, target.get("uuid").toString());
resultat = rechercheDateInscription.executeQuery();
if(resultat.next()){
// On insère la date d'inscription
PreparedStatement insertionDateInscription = con.prepareStatement("INSERT INTO site_userSetting (`uuid`, `name`, `value`) VALUES (?,'joinedDate',?)");
insertionDateInscription.setString(1, target.get("uuid").toString());
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
insertionDateInscription.executeQuery();
// On va précisier que la date d'inscription a été trouvée chez CoreProtect
getLogger().info("L'utilisateur "+ChatColor.GOLD+target.get("name").toString()+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 {
// On insère la date d'inscription (du coup, comme précédement, on prend la date d'inscription locale)
PreparedStatement insertionDateInscription = con.prepareStatement("INSERT INTO site_userSetting (`uuid`, `name`, `value`) VALUES (?,'joinedDate',?)");
insertionDateInscription.setString(1, target.get("uuid").toString());
insertionDateInscription.setString(2, java.sql.Timestamp.valueOf(target.get("joinedDate").toString()).toString());
insertionDateInscription.executeQuery();
// 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',?)");
insertionInaccurrateJoinedDate.setString(1, target.get("uuid").toString());
insertionInaccurrateJoinedDate.setString(2, "true");
insertionInaccurrateJoinedDate.executeQuery();
getLogger().info("L'utilisateur "+ChatColor.GOLD+target.get("name").toString()+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{
getLogger().warning(ChatColor.RED+"Erreur, nous n'avons pas de resultats pour la requête: SELECT value FROM site_userSetting WHERE uuid = '"+target.get("uuid")+"' AND name = playedTime"); getLogger().warning(ChatColor.RED+"Erreur, nous n'avons pas de resultats pour la requête: SELECT value FROM site_userSetting WHERE uuid = '"+target.get("uuid")+"' AND name = playedTime");
} }
...@@ -206,7 +292,7 @@ public final class Main extends JavaPlugin implements Listener { ...@@ -206,7 +292,7 @@ public final class Main extends JavaPlugin implements Listener {
try { try {
MariaDbPoolDataSource dataSource = new MariaDbPoolDataSource("jdbc:mariadb://"+config.getString("database.host")+"/"+config.getString("database.database")+"?user="+config.getString("database.user")+"&password="+config.getString("database.password")+"&maxPoolSize=10"); MariaDbPoolDataSource dataSource = new MariaDbPoolDataSource("jdbc:mariadb://"+config.getString("database.host")+"/"+config.getString("database.database")+"?user="+config.getString("database.user")+"&password="+config.getString("database.password")+"&maxPoolSize=10");
conn = dataSource.getConnection(); conn = dataSource.getConnection();
getLogger().info(ChatColor.GREEN+"Connexion à la base de données réussie!"); //getLogger().info(ChatColor.GREEN+"Connexion à la base de données réussie!");
}// ou les saisir }// ou les saisir
catch (SQLException e) { catch (SQLException e) {
getLogger().warning(ChatColor.RED+"Erreur lors de la connexion à la base de données."); getLogger().warning(ChatColor.RED+"Erreur lors de la connexion à la base de données.");
...@@ -224,7 +310,16 @@ public final class Main extends JavaPlugin implements Listener { ...@@ -224,7 +310,16 @@ public final class Main extends JavaPlugin implements Listener {
" `value` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,\n" + " `value` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,\n" +
" PRIMARY KEY (`uuid`,`name`) USING BTREE\n" + " PRIMARY KEY (`uuid`,`name`) USING BTREE\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"); ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
ResultSet rs=ps.executeQuery(); ps.executeQuery();
ps=con.prepareStatement("CREATE TABLE IF NOT EXISTS `site_linkCode` (\n" +
" `uuid` VARCHAR(36) NOT NULL,\n" +
" `code` VARCHAR(8) NOT NULL,\n" +
" `time` TIMESTAMP NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n" +
" `used` BOOLEAN,\n" +
" PRIMARY KEY (`uuid`),\n" +
" UNIQUE INDEX `code` (`code`)\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
ps.executeQuery();
con.close(); con.close();
}catch(Exception e){ }catch(Exception e){
getLogger().warning(ChatColor.RED+"Erreur lors de l'exécution de initDatabase(): "+e); getLogger().warning(ChatColor.RED+"Erreur lors de l'exécution de initDatabase(): "+e);
......
package com.slprojects.slcraftplugin.commandes;
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.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.time.LocalDateTime;
import java.util.Random;
public class linkCodeCommand implements CommandExecutor {
// Variables
private final Main plugin;
public linkCodeCommand(Main plugin){
// On récupère la classe parente pour les paramètres
this.plugin = plugin;
}
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args){
if (sender instanceof Player){
Player player = (Player) sender;
// On ouvre la bdd
Connection con = plugin.bddOpenConn();
try{
// On créé le code
int leftLimit = 48; // numeral '0'
int rightLimit = 122; // letter 'z'
int targetStringLength = 8;
Random random = new Random();
String generatedString = random.ints(leftLimit, rightLimit + 1)
.filter(i -> (i <= 57 || i >= 65) && (i <= 90 || i >= 97))
.limit(targetStringLength)
.collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
.toString();
// On va regarder si l'utilisateur a déjà généré un code auparavant
PreparedStatement rechercheLinkingCode = con.prepareStatement("SELECT * FROM site_linkCode WHERE uuid = ?");
rechercheLinkingCode.setString(1, player.getUniqueId().toString());
ResultSet resultat = rechercheLinkingCode.executeQuery();
if(resultat.next()){
PreparedStatement modifyAccountLinkingCode = con.prepareStatement("UPDATE `site_linkCode` SET `code`=?, `time`=?, `used`='0' WHERE `uuid`=?");
modifyAccountLinkingCode.setString(1, generatedString);
modifyAccountLinkingCode.setString(2, java.sql.Timestamp.valueOf(LocalDateTime.now()).toString());
modifyAccountLinkingCode.setString(3, player.getUniqueId().toString());
modifyAccountLinkingCode.executeQuery();
}else{
PreparedStatement insertionAccountLinkingCode = con.prepareStatement("INSERT INTO site_linkCode (`uuid`, `code`, `time`, `used`) VALUES (?, ?, ?, '0')");
insertionAccountLinkingCode.setString(1, player.getUniqueId().toString());
insertionAccountLinkingCode.setString(2, generatedString);
insertionAccountLinkingCode.setString(3, java.sql.Timestamp.valueOf(LocalDateTime.now()).toString());
insertionAccountLinkingCode.executeQuery();
}
player.sendMessage("Utilise ce code pour lier ton compte: "+ChatColor.GREEN+generatedString);
player.sendMessage(ChatColor.GRAY+"Ce code à usage unique expirera dans 5 minutes.");
plugin.getLogger().info("Le joueur "+ChatColor.GOLD+player.getName()+ChatColor.RESET+" a généré le code "+ChatColor.GREEN+generatedString+ChatColor.RESET+ChatColor.GRAY+" - Il expirera le "+java.sql.Timestamp.valueOf(LocalDateTime.now().plusMinutes(5)).toString());
}catch (Exception e){
e.printStackTrace();
}
}
return true;
}
}
...@@ -12,3 +12,9 @@ commands: ...@@ -12,3 +12,9 @@ commands:
aliases: [wild, tpr, tprandom] aliases: [wild, tpr, tprandom]
usage: /wild usage: /wild
permission: slcraft.wild permission: slcraft.wild
getlinkcode:
description: Te permet d'obtenir un code pour associer ton compte Minecraft au site internet du serveur.'
aliases: [ getlinkcode ]
usage: /getlinkcode
permission: slcraft.getlinkcode
\ No newline at end of file
No preview for this file type
File added
name: SLCraftPlugin name: SLCraftPlugin
version: '1.3' version: '1.4'
main: com.slprojects.slcraftplugin.Main main: com.slprojects.slcraftplugin.Main
depend: [PlaceholderAPI] depend: [PlaceholderAPI]
api-version: 1.18 api-version: 1.18
...@@ -12,3 +12,9 @@ commands: ...@@ -12,3 +12,9 @@ commands:
aliases: [wild, tpr, tprandom] aliases: [wild, tpr, tprandom]
usage: /wild usage: /wild
permission: slcraft.wild permission: slcraft.wild
getlinkcode:
description: Te permet d'obtenir un code pour associer ton compte Minecraft au site internet du serveur.'
aliases: [ getlinkcode ]
usage: /getlinkcode
permission: slcraft.getlinkcode
\ No newline at end of file
#Generated by Maven #Generated by Maven
#Fri Jan 28 14:26:51 CET 2022 #Sat Mar 05 15:11:15 CET 2022
groupId=com.slprojects groupId=com.slprojects
artifactId=SLCraftPlugin artifactId=SLCraftPlugin
version=1.3 version=1.4
com\slprojects\slcraftplugin\commandes\wildCommand.class com\slprojects\slcraftplugin\commandes\wildCommand.class
com\slprojects\slcraftplugin\Main.class com\slprojects\slcraftplugin\Main.class
com\slprojects\slcraftplugin\commandes\linkCodeCommand.class
com\slprojects\slcraftplugin\commandes\wildCommand$1.class com\slprojects\slcraftplugin\commandes\wildCommand$1.class
C:\Users\sofia\Documents\Minecraft Plugin Workspace\SL-Craft Plugin\src\main\java\com\slprojects\slcraftplugin\commandes\wildCommand.java C:\Users\sofia\Documents\Minecraft Plugin Workspace\SL-Craft Plugin\src\main\java\com\slprojects\slcraftplugin\commandes\wildCommand.java
C:\Users\sofia\Documents\Minecraft Plugin Workspace\SL-Craft Plugin\src\main\java\com\slprojects\slcraftplugin\Main.java C:\Users\sofia\Documents\Minecraft Plugin Workspace\SL-Craft Plugin\src\main\java\com\slprojects\slcraftplugin\Main.java
C:\Users\sofia\Documents\Minecraft Plugin Workspace\SL-Craft Plugin\src\main\java\com\slprojects\slcraftplugin\commandes\linkCodeCommand.java
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment