From 8180ede6bee46b724db29cc6e9417d2012b098c8 Mon Sep 17 00:00:00 2001 From: DaTTV Date: Mon, 17 Feb 2025 13:35:32 +0100 Subject: [PATCH] Partielly added PlayerManager --- .../blazesmp/manager/PlayerManager.java | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/main/java/me/freezy/plugins/papermc/blazesmp/manager/PlayerManager.java diff --git a/src/main/java/me/freezy/plugins/papermc/blazesmp/manager/PlayerManager.java b/src/main/java/me/freezy/plugins/papermc/blazesmp/manager/PlayerManager.java new file mode 100644 index 0000000..4586bbd --- /dev/null +++ b/src/main/java/me/freezy/plugins/papermc/blazesmp/manager/PlayerManager.java @@ -0,0 +1,80 @@ +package me.freezy.plugins.papermc.blazesmp.manager; + +import me.freezy.plugins.papermc.blazesmp.BlazeSMP; +import me.freezy.plugins.papermc.blazesmp.module.Clan; +import me.freezy.plugins.papermc.blazesmp.module.manager.Clans; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.minimessage.MiniMessage; +import org.bukkit.entity.Player; +import org.bukkit.scoreboard.Scoreboard; +import org.bukkit.scoreboard.Team; + +import java.security.SecureRandom; +import java.util.LinkedHashMap; +import java.util.LinkedList; +import java.util.UUID; + +public class PlayerManager { + private final LinkedHashMap clanChars = new LinkedHashMap<>(); + { + Clans clans = BlazeSMP.getInstance().getClans(); + LinkedList clansList = clans.getClans(); + clansList.forEach(clan -> { + int clanPlace = clansList.indexOf(clan); + char first = (char) ('a' + (clanPlace / (26 * 26)) % 26); + char second = (char) ('a' + (clanPlace / 26) % 26); + char third = (char) ('a' + clanPlace % 26); + clanChars.put(clan, ""+first+second+third); + }); + } + public void setPlayerTeam(Player player) { + Clans clans = BlazeSMP.getInstance().getClans(); + UUID playerUUID = player.getUniqueId(); + player.setScoreboard(player.getServer().getScoreboardManager().getNewScoreboard()); + Scoreboard scoreboard = player.getScoreboard(); + String teamName; + if (clans.isInClan(playerUUID)) { + teamName=clanChars.get(clans.getClanByMember(playerUUID)); + if (clans.isLeader(playerUUID)) { + teamName+="a"; + } else if (clans.isVice(playerUUID)) { + teamName+="b"; + } else { + teamName+="c"; + } + } else { + teamName="zzzm"; + } + teamName+=generateRandomString(12); + scoreboard.getTeams().clear(); + Team team = scoreboard.getTeam(teamName); + if (team == null) { + team = scoreboard.registerNewTeam(teamName); + } + Component prefix = player.isOp() ? + MiniMessage.miniMessage().deserialize( + BlazeSMP.getInstance().getConfiguration().getString("op-prefix", + "[Team] " + ) + ) + : + MiniMessage.miniMessage().deserialize( + BlazeSMP.getInstance().getConfiguration().getString("player-prefix", + "[Player] " + ) + ); + team.prefix(prefix); + } + + private String generateRandomString(int length) { + String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + SecureRandom RANDOM = new SecureRandom(); + StringBuilder sb = new StringBuilder(length); + + for (int i = 0; i < length; i++) { + sb.append(CHARACTERS.charAt(RANDOM.nextInt(CHARACTERS.length()))); + } + + return sb.toString(); + } +}