Skip to content

Commit 55e2c29

Browse files
Fix de l'ordre des grades dans le tablist (#1133)
* Revert "Refactor ConfirmMenu and MenuLib for improved readability and consistency" This reverts commit f7cf2bf. * Fix order in tablist * ups * Remove void line Co-authored-by: PuppyTransGirl <74014559+PuppyTransGirl@users.noreply.github.com> --------- Co-authored-by: PuppyTransGirl <74014559+PuppyTransGirl@users.noreply.github.com>
1 parent 3983ca8 commit 55e2c29

2 files changed

Lines changed: 14 additions & 6 deletions

File tree

src/main/java/fr/openmc/api/hooks/LuckPermsHook.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import fr.openmc.core.OMCPlugin;
55
import lombok.Getter;
66
import net.kyori.adventure.text.Component;
7+
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
78
import net.luckperms.api.LuckPerms;
89
import net.luckperms.api.model.group.Group;
910
import net.luckperms.api.model.user.User;
@@ -57,7 +58,8 @@ public static String getFormattedPAPIPrefix(Player player) {
5758
if (prefix == null || prefix.isEmpty()) return Component.empty();
5859

5960
String formattedPrefix = prefix.replace("&", "§");
61+
String finalPrefix = FontImageWrapper.replaceFontImages(formattedPrefix);
6062

61-
return Component.text(FontImageWrapper.replaceFontImages(formattedPrefix));
63+
return LegacyComponentSerializer.legacySection().deserialize(finalPrefix);
6264
}
6365
}

src/main/java/fr/openmc/core/features/displays/scoreboards/GlobalTeamManager.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
import fr.openmc.api.hooks.LuckPermsHook;
44
import fr.openmc.api.scoreboard.SternalBoard;
55
import fr.openmc.api.scoreboard.repository.ObjectCacheRepository;
6+
import fr.openmc.core.OMCPlugin;
67
import net.kyori.adventure.text.Component;
78
import net.luckperms.api.LuckPerms;
9+
import net.luckperms.api.event.group.GroupDataRecalculateEvent;
810
import net.luckperms.api.model.group.Group;
911
import net.luckperms.api.node.NodeType;
1012
import org.bukkit.entity.Player;
@@ -17,14 +19,18 @@
1719
public 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

Comments
 (0)