diff --git a/pom.xml b/pom.xml index 5f9fc04bff121d424872397ef4f29161170e7054..254976d91b52483fd2cc7f517e20d5368827667b 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ <groupId>com.slprojects</groupId> <artifactId>SLCraftPlugin</artifactId> - <version>1.6.1</version> + <version>1.6.2</version> <packaging>jar</packaging> <name>SLCraftPlugin</name> diff --git a/src/main/java/com/slprojects/slcraftplugin/Main.java b/src/main/java/com/slprojects/slcraftplugin/Main.java index d3e36f8d8dab628cc3996d905f25692243b08fd8..3198124045cd951ea5fc90ea97a23ef4b329c6da 100644 --- a/src/main/java/com/slprojects/slcraftplugin/Main.java +++ b/src/main/java/com/slprojects/slcraftplugin/Main.java @@ -19,6 +19,7 @@ import net.luckperms.api.cacheddata.CachedMetaData; import org.bukkit.Bukkit; import org.bukkit.Sound; import org.bukkit.command.PluginCommand; +import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -32,12 +33,8 @@ import org.bukkit.plugin.java.JavaPlugin; import org.json.simple.JSONObject; import org.mariadb.jdbc.MariaDbPoolDataSource; -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.io.UnsupportedEncodingException; -import java.net.HttpURLConnection; -import java.net.URL; import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.sql.Connection; import java.sql.SQLException; import java.util.ArrayList; @@ -82,7 +79,10 @@ public final class Main extends JavaPlugin implements Listener { // Plugin shutdown logic ConsoleLog.danger("Plugin désactivé, au revoir!"); - TextComponent goodbyeMessage = Component.text("Le serveur est en cours de redémarrage, à bientôt!"); + String configMsg = getConfig().getString("messages.server-restarting"); + + assert configMsg != null; + TextComponent goodbyeMessage = Component.text(configMsg); PlayerKickEvent.Cause cause = PlayerKickEvent.Cause.RESTART_COMMAND; PlayerQuitEvent.QuitReason reason = PlayerQuitEvent.QuitReason.KICKED; @@ -106,7 +106,7 @@ public final class Main extends JavaPlugin implements Listener { playerDataHandler.joinEvent(e.getPlayer()); // 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("messages.player-join-message"))); // Et on joue un petit son chez tous les joueurs for (Player p : getServer().getOnlinePlayers()) { p.sendMessage(welcomeMessage); @@ -114,7 +114,8 @@ public final class Main extends JavaPlugin implements Listener { p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 0); } } - sendMessageToDiscord("**" + e.getPlayer().getName() + "** vient de rejoindre le serveur"); + String discordWelcomeMessage = PlaceholderAPI.setPlaceholders(e.getPlayer(), Objects.requireNonNull(getConfig().getString("messages.discord.player-joining"))); + sendMessageToDiscord(discordWelcomeMessage); } @EventHandler(priority = EventPriority.HIGHEST) @@ -122,11 +123,12 @@ public final class Main extends JavaPlugin implements Listener { // On désactive le message par défaut e.quitMessage(null); 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("messages.player-quit-message"))); for (Player p : getServer().getOnlinePlayers()) { p.sendMessage(quitMessage); } - sendMessageToDiscord("**" + e.getPlayer().getName() + "** a quitté le serveur"); + String discordQuitMessage = PlaceholderAPI.setPlaceholders(e.getPlayer(), Objects.requireNonNull(getConfig().getString("messages.discord.player-leaving"))); + sendMessageToDiscord(discordQuitMessage); } // On renvoie chaque message des joueurs sur le canal de chat du serveur discord @@ -229,6 +231,34 @@ public final class Main extends JavaPlugin implements Listener { reloadConfig(); config = getConfig(); updateConfig(); + + if (!areMessagesNotEmpty()) { + ConsoleLog.danger("Le fichier de configuration contient des messages vides!"); + getServer().getPluginManager().disablePlugin(this); + return; + } + } + + /** + * Vérifie que les messages de la configuration ne sont pas vides + * + * @return true si les messages ne sont pas vides, false sinon + */ + public boolean areMessagesNotEmpty() { + ConfigurationSection messagesSection = getConfig().getConfigurationSection("messages"); + + if (messagesSection == null) { + return false; // Le groupe "messages" n'existe pas dans la configuration + } + + for (String key : messagesSection.getKeys(true)) { + String message = messagesSection.getString(key); + if (message == null || message.isEmpty()) { + return false; // Une entrée du groupe "messages" est vide + } + } + + return true; // Toutes les entrées du groupe "messages" sont non vides } /** @@ -285,20 +315,15 @@ public final class Main extends JavaPlugin implements Listener { json.put("username", username); // On va appeler l'api du bot discord - try { - String urlString = config.getString("discordBot-api-url") + "mc/chat/" + URLEncoder.encode(json.toJSONString(), "UTF-8").replace("+", "%20"); - - AsyncHttpClient httpClient = new AsyncHttpClient(); - CompletableFuture<String> response = httpClient.get(urlString); - response.thenAccept(res -> { - if (getConfig().getBoolean("msg-verbose")) { - ConsoleLog.info("Func sendMessageToDiscord(String message, String username), HTTP response:" + res); - } - }); - } catch (UnsupportedEncodingException ex) { - ConsoleLog.danger("Impossible de d'encoder les données. Func AsyncChatEvent(PlayerChatEvent e)"); - ex.printStackTrace(); - } + String urlString = config.getString("discordBot-api-url") + "mc/chat/" + URLEncoder.encode(json.toJSONString(), StandardCharsets.UTF_8).replace("+", "%20"); + + AsyncHttpClient httpClient = new AsyncHttpClient(); + CompletableFuture<String> response = httpClient.get(urlString); + response.thenAccept(res -> { + if (getConfig().getBoolean("msg-verbose")) { + ConsoleLog.info("Func sendMessageToDiscord(String message, String username), HTTP response:" + res); + } + }); } public void sendMessageToDiscord(String message) { @@ -353,7 +378,14 @@ public final class Main extends JavaPlugin implements Listener { reloadConfig(); } - // 1.6.1 - 1.6.2 + // 1.6.2 + if (config.contains("player-quit-message")) { + config.set("player-quit-message", null); + } + if(config.contains("player-join-message")) { + config.set("player-join-message", null); + } + config.options().copyDefaults(true); saveConfig(); reloadConfig(); diff --git a/src/main/java/com/slprojects/slcraftplugin/utils/web/AsyncHttpClient.java b/src/main/java/com/slprojects/slcraftplugin/utils/web/AsyncHttpClient.java index b6241790606282aa0d70936020c7ecea33e896f8..cb6c73d2d59a8ccbe6cf13207aad1b70f3347a98 100644 --- a/src/main/java/com/slprojects/slcraftplugin/utils/web/AsyncHttpClient.java +++ b/src/main/java/com/slprojects/slcraftplugin/utils/web/AsyncHttpClient.java @@ -31,7 +31,7 @@ public class AsyncHttpClient { public CompletableFuture<String> get(String urlString) { HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(urlString)) - .header("User-Agent", Main.config.getString("name") + " " + Main.config.getString("version")) + .header("User-Agent", "SL-Craft | Server Plugin") .header("Server-Type", Main.config.getString("server-type")) .GET() .build(); @@ -56,7 +56,7 @@ public class AsyncHttpClient { public CompletableFuture<String> post(String urlString, PostDataBuilder postDataBuilder, Map<String, String> headers) { HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(urlString)) - .header("User-Agent", Main.config.getString("name") + " " + Main.config.getString("version")) + .header("User-Agent", "SL-Craft | Server Plugin") .header("Server-Type", Main.config.getString("server-type")) .headers(headers.entrySet().stream() .flatMap(entry -> Stream.of(entry.getKey(), entry.getValue())) diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index c23140c47c84fa075a3dfb079c94598ac1afcc3a..e672d0ce2507c2832355a17eb30ed89285ce8dad 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -28,8 +28,6 @@ database: table-prefix: site_ # prefix of the tables in your database player-join-playSound: true -player-join-message: "&a%player_name% &fa rejoint le serveur :D" -player-quit-message: "&a%player_name% &fvient de quitter le serveur :'(" # Serveur messagerie internal-webserver-port: 25575 @@ -48,4 +46,13 @@ ticks-per-seconds: 20 # Statistiques des joueurs stats: required-played-time-for-upgrading-players-account: 72000 # En sencondes - players-account-upgrade-role: "habitué" \ No newline at end of file + players-account-upgrade-role: "habitué" + +# Messages +messages: + server-restarting: "Le serveur est en cours de redémarrage, à bientôt!" + discord: + player-joining: "**%player_name%** vient de rejoindre le serveur" + player-leaving: "**%player_name%** vient de quitter le serveur" + player-join-message: "&a%player_name% &fa rejoint le serveur :D" + player-quit-message: "&a%player_name% &fvient de quitter le serveur :'(" \ No newline at end of file