33import fr .openmc .api .hooks .LuckPermsHook ;
44import fr .openmc .api .scoreboard .SternalBoard ;
55import fr .openmc .api .scoreboard .repository .ObjectCacheRepository ;
6+ import fr .openmc .core .OMCPlugin ;
67import net .kyori .adventure .text .Component ;
78import net .luckperms .api .LuckPerms ;
9+ import net .luckperms .api .event .group .GroupDataRecalculateEvent ;
810import net .luckperms .api .model .group .Group ;
911import net .luckperms .api .node .NodeType ;
1012import org .bukkit .entity .Player ;
1719public class GlobalTeamManager {
1820 private LuckPerms luckPerms = null ;
1921 private final ObjectCacheRepository <SternalBoard > boardCache ;
20- private final Map <Group , Component > groupToPrefixCache = new ConcurrentHashMap <>();
22+ private final Map <String , Component > groupToPrefixCache = new ConcurrentHashMap <>();
2123
2224 public GlobalTeamManager (ObjectCacheRepository <SternalBoard > boardCache ) {
2325 this .boardCache = boardCache ;
2426
2527 if (LuckPermsHook .isHasLuckPerms ()) {
2628 this .luckPerms = LuckPermsHook .getApi ();
2729 initSortedGroups ();
30+
31+ this .luckPerms .getEventBus ().subscribe (OMCPlugin .getInstance (), GroupDataRecalculateEvent .class , e -> {
32+ groupToPrefixCache .remove (e .getGroup ().getName ()); // Update les teams lors du recalcule des groupes
33+ });
2834 }
2935 }
3036
@@ -33,7 +39,7 @@ private void initSortedGroups() {
3339 sortedGroups .sort (Comparator .comparing (g -> -g .getWeight ().orElse (0 )));
3440
3541 for (Group group : sortedGroups ) {
36- groupToPrefixCache .put (group , LuckPermsHook .getFormattedPAPIPrefix (group ));
42+ groupToPrefixCache .put (group . getName () , LuckPermsHook .getFormattedPAPIPrefix (group ));
3743 }
3844 }
3945
@@ -43,7 +49,7 @@ public void updatePlayerTeam(Player player) {
4349 Group playerGroup = getPlayerHighestWeightGroup (player );
4450 if (playerGroup == null ) return ;
4551
46- Component prefix = groupToPrefixCache .getOrDefault (playerGroup , Component . empty ( ));
52+ Component prefix = groupToPrefixCache .computeIfAbsent (playerGroup . getName (), k -> LuckPermsHook . getFormattedPAPIPrefix ( playerGroup ));
4753
4854 updateScoreboardTeam (player , prefix );
4955 updateTabListTeam (player , prefix , playerGroup );
@@ -69,9 +75,9 @@ private void updateScoreboardTeam(Player player, Component prefix) {
6975 private void updateTabListTeam (Player player , Component prefix , Group group ) {
7076 Scoreboard scoreboard = player .getScoreboard ();
7177
72- String teamName = "lp_" + group .getName ();
78+ int weight = group .getWeight ().orElse (0 );
79+ String teamName = "lp_%05d_%s" .formatted (10000 - weight , group .getName ());
7380 Team team = scoreboard .getTeam (teamName );
74-
7581 if (team == null ) {
7682 team = scoreboard .registerNewTeam (teamName );
7783 }
0 commit comments