diff --git a/SLCraftPlugin-1.5.1.jar b/SLCraftPlugin-1.5.1.jar deleted file mode 100644 index bb1881fa2f78e54e16026ddb2ce02f1b197d1e6b..0000000000000000000000000000000000000000 Binary files a/SLCraftPlugin-1.5.1.jar and /dev/null differ diff --git a/SLCraftPlugin-1.5.2.jar b/SLCraftPlugin-1.5.2.jar deleted file mode 100644 index bf317d1209ef487933f41c47922a08afe4261d4a..0000000000000000000000000000000000000000 Binary files a/SLCraftPlugin-1.5.2.jar and /dev/null differ diff --git a/pom.xml b/pom.xml index cb20f23926f6d15fc992b5e36b33d5623a94eba7..f7e4ef9cf330acad5b5cf2a1428a18b8fc966196 100644 --- a/pom.xml +++ b/pom.xml @@ -88,5 +88,11 @@ <version>2.11.1</version> <scope>provided</scope> </dependency> + <dependency> + <groupId>net.luckperms</groupId> + <artifactId>api</artifactId> + <version>5.4</version> + <scope>provided</scope> + </dependency> </dependencies> </project> diff --git a/src/main/java/com/slprojects/slcraftplugin/Main.java b/src/main/java/com/slprojects/slcraftplugin/Main.java index f0a50f3ac4a48f69d016d6abe2581469a7942a4d..cdf82a3314b4bb2f35dd6b5238e3fb550dc82a51 100644 --- a/src/main/java/com/slprojects/slcraftplugin/Main.java +++ b/src/main/java/com/slprojects/slcraftplugin/Main.java @@ -5,6 +5,8 @@ import com.slprojects.slcraftplugin.commandes.wildCommand; import com.slprojects.slcraftplugin.tachesParalleles.savePlayerData; import com.slprojects.slcraftplugin.tachesParalleles.internalWebServer; import me.clip.placeholderapi.PlaceholderAPI; +import net.luckperms.api.LuckPerms; +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; @@ -18,6 +20,7 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.java.JavaPlugin; import org.json.simple.JSONObject; import org.mariadb.jdbc.MariaDbPoolDataSource; @@ -44,6 +47,7 @@ public final class Main extends JavaPlugin implements Listener { // Variables private List<UUID> wildCommandActiveUsers; private static FileConfiguration config; + private static LuckPerms luckPermsApi; private com.slprojects.slcraftplugin.tachesParalleles.savePlayerData savePlayerData; // Fonctions appelées à des évènements clés @@ -51,11 +55,27 @@ public final class Main extends JavaPlugin implements Listener { public void onEnable() { // On s'assure qu'on a placeholder api if (getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) { - getServer().getConsoleSender().sendMessage("PlaceholderAPI chargé"); + getLogger().info("PlaceholderAPI chargé"); // On initialise les listeners getServer().getPluginManager().registerEvents(this, this); } else { - getServer().getConsoleSender().sendMessage(ChatColor.RED+"PlaceholderAPI n'est pas accessible!"); + getServer().getConsoleSender().sendMessage(ChatColor.RED+"[\"+ this.getName() +\"] PlaceholderAPI n'est pas accessible!"); + getServer().getPluginManager().disablePlugin(this); + } + + // LuckPerms + // S'assure que le plugin est installé et évite l'affichage d'une erreur de classe inaccessible + if (getServer().getPluginManager().getPlugin("LuckPerms") != null) { + RegisteredServiceProvider<LuckPerms> provider = Bukkit.getServicesManager().getRegistration(LuckPerms.class); + if (provider != null) { + getLogger().info("LuckPerms chargé"); + luckPermsApi = provider.getProvider(); + }else{ + getServer().getConsoleSender().sendMessage(ChatColor.RED+"["+ this.getName() +"] LuckPerms n'est pas accessible!"); + getServer().getPluginManager().disablePlugin(this); + } + } else { + getServer().getConsoleSender().sendMessage(ChatColor.RED+"["+ this.getName() +"] LuckPerms n'est pas accessible!"); getServer().getPluginManager().disablePlugin(this); } @@ -123,42 +143,45 @@ public final class Main extends JavaPlugin implements Listener { @SuppressWarnings({"unchecked", "deprecation"}) @EventHandler(priority = EventPriority.LOWEST) void AsyncChatEvent(AsyncPlayerChatEvent e) { - String FinalMessage = e.getMessage(); + String playerMessage = e.getMessage(); //on applique les text markup //italique + gras "***" - FinalMessage = Pattern.compile("\\*\\*\\*(.*?)\\*\\*\\*").matcher(FinalMessage).replaceAll("§l§o$1§r"); + playerMessage = Pattern.compile("\\*\\*\\*(.*?)\\*\\*\\*").matcher(playerMessage).replaceAll("§l§o$1§r"); //gras "**" - FinalMessage = Pattern.compile("\\*\\*(.*?)\\*\\*").matcher(FinalMessage).replaceAll("§l$1§r"); + playerMessage = Pattern.compile("\\*\\*(.*?)\\*\\*").matcher(playerMessage).replaceAll("§l$1§r"); //italique "*" - FinalMessage = Pattern.compile("\\*(.*?)\\*").matcher(FinalMessage).replaceAll("§o$1§r"); + playerMessage = Pattern.compile("\\*(.*?)\\*").matcher(playerMessage).replaceAll("§o$1§r"); //underline - FinalMessage = Pattern.compile("__(.*?)__").matcher(FinalMessage).replaceAll("§n$1§r"); + playerMessage = Pattern.compile("__(.*?)__").matcher(playerMessage).replaceAll("§n$1§r"); //barré - FinalMessage = Pattern.compile("~~(.*?)~~").matcher(FinalMessage).replaceAll("§m$1§r "); + playerMessage = Pattern.compile("~~(.*?)~~").matcher(playerMessage).replaceAll("§m$1§r "); + + // Ping utilisateur + Matcher m = Pattern.compile("@(.*?)($|[ ,;:!])").matcher(playerMessage); + List<String> playerTags = new ArrayList<>(); + while (m.find()) { + playerTags.add(m.group(1)); + } + // On va chercher le préfix dans LuckPerms + CachedMetaData playerMetaData = luckPermsApi.getPlayerAdapter(Player.class).getMetaData(e.getPlayer()); - //on poste le message aux joueurs 1 par 1 for (Player p: Bukkit.getOnlinePlayers()){ - Matcher m = Pattern.compile("@(.*?)($|[ ,;:!])").matcher(FinalMessage); - List<String> list = new ArrayList<>(); - while (m.find()) {list.add(m.group(1));} - // si le joueur a qui on va poster le message (p) a été mentionné - if(list.contains(p.getName())){ - //On colorise sa mention - FinalMessage = Pattern.compile("@(" + p.getName() + ")($|[ ,;:!])").matcher(FinalMessage).replaceAll("§r§l§d@$1§r$2"); - //on lui joue un son + un texte dans la barre d'action + // Si le joueur a qui on va poster le message (p) a été mentionné + if(playerTags.contains(p.getName())){ + // On colorise sa mention + playerMessage = Pattern.compile("@(" + p.getName() + ")($|[ ,;:!])").matcher(playerMessage).replaceAll("§r§l§d@$1§r$2"); + + // On lui joue un son + un texte dans la barre d'action p.sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText("§b " + e.getPlayer().getName() + " §aVous a mentionné !")); p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 100, 2); - //on colorie les autres mentions - FinalMessage = Pattern.compile(" @(.*?)($|[ ,;:!])").matcher(FinalMessage).replaceAll("§r§b @$1§r$2"); - + // On colorie les autres mentions + playerMessage = Pattern.compile(" @(.*?)($|[ ,;:!])").matcher(playerMessage).replaceAll("§r§b @$1§r$2"); } - //on ajoute le préfix (Admin|Joueur) puis le pseudo du joueur qui envoie le message - String CompleteMessage = "§3[" + (e.getPlayer().isOp() ? "§dAdmin" : "§bPlayer") + "§3] §a" + e.getPlayer().getName() + "§r: " + FinalMessage; - //on envoie le message au joueur - p.sendMessage(CompleteMessage); - + String CompleteMessage = playerMetaData.getPrefix() + e.getPlayer().getName() + "§r: " + playerMessage; + // On envoie le message au joueur + p.sendMessage(CompleteMessage); } //on envoie le message sur discord (on envoie le msg sans les couleur ni le formatage) sendMessageToDiscord(e.getMessage(), e.getPlayer().getName()); @@ -279,7 +302,7 @@ public final class Main extends JavaPlugin implements Listener { private void updateConfig(){ getLogger().info("Vérification du fichier de configuration..."); // On va vérifier si l'on dispose de la nouvelle variable du port du serveur web - if(!config.contains("serverType")){ + if(!config.contains("server-type")){ getLogger().info("Ajout de la variable serverType dans le fichier de configuration..."); config.set("server-type", "dev"); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index cf2d83934858ba2faabbd5c1b5535ec95ec1600e..75e62542dfd286dd42df06a2710ec6c7d585bde6 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -32,4 +32,7 @@ internal-webserver-port: 25575 msg-verbose: false # API Bot Discord -discordBot-api-url: "http://node.sl-projects.com:27001/" \ No newline at end of file +discordBot-api-url: "http://node.sl-projects.com:27001/" + +# Config générale +server-type: dev \ No newline at end of file