From 7598d68d0c06bcf624363086eeb87ecf31bf6232 Mon Sep 17 00:00:00 2001
From: Sofiane Lasri-Trienpont <alasri250@gmail.com>
Date: Thu, 13 Feb 2025 08:52:06 +0100
Subject: [PATCH] feat: implement welcome message manager and update player
 join message handling

---
 .gitlab-ci.yml                                |  1 -
 .../PrivateServerPlugin.java                  | 44 ++----------------
 .../WelcomeMessageManager.java                | 45 +++++++++++++++++++
 3 files changed, 49 insertions(+), 41 deletions(-)
 create mode 100644 src/main/java/com/slprojects/privateServerPlugin/WelcomeMessageManager.java

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 7462e5c..9da1ab0 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -17,7 +17,6 @@ build:
     - echo "BUILD_DATE=${BUILD_DATE}" > build.env
     - echo "JAR_NAME=${JAR_NAME}" >> build.env
     - echo "BUILD_JOB_ID=${CI_JOB_ID}" >> build.env
-    - ls -l
   artifacts:
     paths:
       - "PrivateServerPlugin-*.jar"
diff --git a/src/main/java/com/slprojects/privateServerPlugin/PrivateServerPlugin.java b/src/main/java/com/slprojects/privateServerPlugin/PrivateServerPlugin.java
index b1b9f68..940f473 100644
--- a/src/main/java/com/slprojects/privateServerPlugin/PrivateServerPlugin.java
+++ b/src/main/java/com/slprojects/privateServerPlugin/PrivateServerPlugin.java
@@ -1,25 +1,20 @@
 package com.slprojects.privateServerPlugin;
 
 import net.kyori.adventure.text.Component;
-import net.kyori.adventure.text.minimessage.MiniMessage;
 import org.bukkit.entity.Player;
 import org.bukkit.event.EventHandler;
 import org.bukkit.event.Listener;
 import org.bukkit.event.player.PlayerJoinEvent;
 import org.bukkit.plugin.java.JavaPlugin;
-import org.jetbrains.annotations.NotNull;
-
-import java.util.ArrayList;
-import java.util.List;
 
 public final class PrivateServerPlugin extends JavaPlugin implements Listener {
 
-    private List<Integer> shownWelcomeMessagesIndexes;
+    private WelcomeMessageManager welcomeMessageManager;
 
     @Override
     public void onEnable() {
         getServer().getPluginManager().registerEvents(this, this);
-        this.shownWelcomeMessagesIndexes = new ArrayList<>();
+        this.welcomeMessageManager = new WelcomeMessageManager();
     }
 
     @Override
@@ -30,41 +25,10 @@ public final class PrivateServerPlugin extends JavaPlugin implements Listener {
     @EventHandler
     public void onPlayerJoin(PlayerJoinEvent event) {
         event.joinMessage(null);
+        Component welcomeMessage = welcomeMessageManager.getNextRandomMessage(event.getPlayer().getName());
 
         for (Player p : getServer().getOnlinePlayers()) {
-            p.sendMessage(chooseRandomWelcomeMessage(event.getPlayer().getName()));
-        }
-    }
-
-    private Component chooseRandomWelcomeMessage(String playerNickname) {
-        List<String> welcomeMessages = getWelcomeMessages(playerNickname);
-
-        if (welcomeMessages.size() == shownWelcomeMessagesIndexes.size()) {
-            shownWelcomeMessagesIndexes.clear();
+            p.sendMessage(welcomeMessage);
         }
-
-        int choosenMessageIndex = (int) (Math.random() * welcomeMessages.size());
-        String choosenMessage = welcomeMessages.get(choosenMessageIndex);
-
-        while (shownWelcomeMessagesIndexes.contains(choosenMessageIndex)) {
-            choosenMessageIndex = (int) (Math.random() * welcomeMessages.size());
-            choosenMessage = welcomeMessages.get(choosenMessageIndex);
-        }
-
-        shownWelcomeMessagesIndexes.add(choosenMessageIndex);
-        return MiniMessage.miniMessage().deserialize(choosenMessage);
-    }
-
-    private static @NotNull List<String> getWelcomeMessages(String playerNickname) {
-        List<String> welcomeMessages = new ArrayList<>();
-        welcomeMessages.add("Un <green>" + playerNickname + "<reset> sauvage apparaît!");
-        welcomeMessages.add("Ah que coucou <green>" + playerNickname + "<reset> !");
-        welcomeMessages.add("Tiens, voilà <green>" + playerNickname + "<reset> !");
-        welcomeMessages.add("Yop <green>" + playerNickname + "<reset> !");
-        welcomeMessages.add("C'est qui ? C'est <green>" + playerNickname + "<reset> qui arrive !");
-        welcomeMessages.add("Bim bam boum, <green>" + playerNickname + "<reset> est là !");
-        welcomeMessages.add("Yo yo yo <green>" + playerNickname + "<reset> est dans la place !");
-        welcomeMessages.add("Faites du bruit pour notre cher <green>" + playerNickname + "<reset> !");
-        return welcomeMessages;
     }
 }
diff --git a/src/main/java/com/slprojects/privateServerPlugin/WelcomeMessageManager.java b/src/main/java/com/slprojects/privateServerPlugin/WelcomeMessageManager.java
new file mode 100644
index 0000000..cf8c457
--- /dev/null
+++ b/src/main/java/com/slprojects/privateServerPlugin/WelcomeMessageManager.java
@@ -0,0 +1,45 @@
+package com.slprojects.privateServerPlugin;
+
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.minimessage.MiniMessage;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class WelcomeMessageManager {
+    private final List<Integer> shownWelcomeMessagesIndexes = new ArrayList<>();
+    private static final List<String> WELCOME_MESSAGE_TEMPLATES = List.of(
+            "Un <green>%s<reset> sauvage apparaît!",
+            "Ah que coucou <green>%s<reset> !",
+            "Tiens, voilà <green>%s<reset> !",
+            "Yop <green>%s<reset> !",
+            "C'est qui ? C'est <green>%s<reset> qui arrive !",
+            "Bim bam boum, <green>%s<reset> est là !",
+            "Yo yo yo <green>%s<reset> est dans la place !",
+            "Faites du bruit pour notre cher <green>%s<reset> !"
+    );
+
+    public Component getNextRandomMessage(String playerNickname) {
+        List<String> welcomeMessages = generateMessages(playerNickname);
+
+        if (welcomeMessages.size() == shownWelcomeMessagesIndexes.size()) {
+            shownWelcomeMessagesIndexes.clear();
+        }
+
+        int chosenIndex;
+        do {
+            chosenIndex = (int) (Math.random() * welcomeMessages.size());
+        } while (shownWelcomeMessagesIndexes.contains(chosenIndex));
+
+        shownWelcomeMessagesIndexes.add(chosenIndex);
+        return MiniMessage.miniMessage().deserialize(welcomeMessages.get(chosenIndex));
+    }
+
+    private List<String> generateMessages(String playerNickname) {
+        List<String> messages = new ArrayList<>();
+        for (String template : WELCOME_MESSAGE_TEMPLATES) {
+            messages.add(String.format(template, playerNickname));
+        }
+        return messages;
+    }
+}
-- 
GitLab