Add 'current_group_on_track' placeholder (#10)

This commit is contained in:
Luck committed 2021-03-21 11:32:24 +00:00
1 parent 6d06ca0df3
commit 2b8de03b85
1 file changed
+26 -2
@@ -211,6 +211,25 @@ public class LPPlaceholderProvider implements PlaceholderProvider {
.map(this::convertGroupDisplayName)
.orElse("");
});
builder.addDynamic("current_group_on_track", (player, user, userData, queryOptions, trackName) -> {
Track track = this.luckPerms.getTrackManager().getTrack(trackName);
if (track == null || track.getGroups().size() <= 1) {
return "";
}
List<Group> 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 "";
}
return groups.get(0).getFriendlyName();
});
builder.addDynamic("next_group_on_track", (player, user, userData, queryOptions, trackName) -> {
Track track = this.luckPerms.getTrackManager().getTrack(trackName);
if (track == null || track.getGroups().size() <= 1) {
@@ -228,7 +247,7 @@ public class LPPlaceholderProvider implements PlaceholderProvider {
return "";
}
return Strings.nullToEmpty(track.getNext(groups.get(0)));
return Strings.nullToEmpty(convertGroupDisplayName(track.getNext(groups.get(0))));
});
builder.addDynamic("previous_group_on_track", (player, user, userData, queryOptions, trackName) -> {
Track track = this.luckPerms.getTrackManager().getTrack(trackName);
@@ -247,7 +266,7 @@ public class LPPlaceholderProvider implements PlaceholderProvider {
return "";
}
return Strings.nullToEmpty(track.getPrevious(groups.get(0)));
return Strings.nullToEmpty(convertGroupDisplayName(track.getPrevious(groups.get(0))));
});
builder.addDynamic("expiry_time", (player, user, userData, queryOptions, node) ->
user.getNodes().stream()
@@ -415,10 +434,15 @@ public class LPPlaceholderProvider implements PlaceholderProvider {
* @return a "display name" for the given group
*/
private String convertGroupDisplayName(String groupName) {
if (groupName == null) {
return null;
}
Group group = this.luckPerms.getGroupManager().getGroup(groupName);
if (group != null) {
groupName = group.getFriendlyName();
}
return groupName;
}