From 9b7d0e408b943040e2d40939c09d5ff7d55bc494 Mon Sep 17 00:00:00 2001 From: Teyir <60007549+Teyir@users.noreply.github.com> Date: Fri, 11 Aug 2023 17:37:28 +0200 Subject: [PATCH] [IMPROVES] Add 2 new placeholders: %luckperms_number_groups_on_track_% Return the number of groups inside a track. %luckperms_current_group_position_on_track_% Retrun the current group position inside a track. --- .../placeholders/LPPlaceholderProvider.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/common/src/main/java/me/lucko/luckperms/placeholders/LPPlaceholderProvider.java b/common/src/main/java/me/lucko/luckperms/placeholders/LPPlaceholderProvider.java index 838650b..89518e1 100644 --- a/common/src/main/java/me/lucko/luckperms/placeholders/LPPlaceholderProvider.java +++ b/common/src/main/java/me/lucko/luckperms/placeholders/LPPlaceholderProvider.java @@ -348,6 +348,36 @@ private void setup(PlaceholderBuilder builder) { .orElse(""); }); + builder.addDynamic("current_group_position_on_track", (player, user, userData, queryOptions, trackName) -> { + Track track = this.luckPerms.getTrackManager().getTrack(trackName); + if (track == null || track.getGroups().size() <= 1) { + return 0; + } + + List groups = user.getNodes(NodeType.INHERITANCE).stream() + .filter(n -> track.containsGroup(n.getGroupName())) + .filter(n -> queryOptions.satisfies(n.getContexts())) + .distinct() + .map(n -> this.luckPerms.getGroupManager().getGroup(n.getGroupName())) + .collect(Collectors.toList()); + + if (groups.size() != 1) { + return 0; + } + + return track.getGroups().indexOf(groups.get(0).getFriendlyName()) + 1; + }); + + + builder.addDynamic("number_groups_on_track", (player, user, userData, queryOptions, trackName) -> { + Track track = this.luckPerms.getTrackManager().getTrack(trackName); + if (track == null || track.getGroups().size() <= 1) { + return "0"; + } + + return track.getGroups().size(); + }); + builder.addDynamic("expiry_time", (player, user, userData, queryOptions, node) -> user.getNodes().stream() .filter(Node::hasExpiry)