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

feat: implement welcome message manager and update player join message handling

parent 3cc113e3
No related branches found
No related tags found
No related merge requests found
Pipeline #986 passed
......@@ -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"
......
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;
}
}
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;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment