From 7cd5eea6d309d7d67fa2d4e6fe6bd8c4d98ae252 Mon Sep 17 00:00:00 2001 From: Luck Date: Mon, 15 Jan 2018 20:39:18 +0000 Subject: [PATCH] Display tracks relating to the group itself when the showtracks command is performed on a group --- .../impl/generic/other/HolderShowTracks.java | 34 +++++++++++++------ 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/other/HolderShowTracks.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/other/HolderShowTracks.java index d0c47c03d..f2ead4d4e 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/other/HolderShowTracks.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/generic/other/HolderShowTracks.java @@ -37,6 +37,7 @@ import me.lucko.luckperms.common.commands.utils.CommandUtils; import me.lucko.luckperms.common.locale.CommandSpec; import me.lucko.luckperms.common.locale.LocaleManager; import me.lucko.luckperms.common.locale.Message; +import me.lucko.luckperms.common.model.Group; import me.lucko.luckperms.common.model.PermissionHolder; import me.lucko.luckperms.common.model.Track; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; @@ -68,22 +69,35 @@ public class HolderShowTracks extends SubCommand return CommandResult.LOADING_ERROR; } - Set nodes = holder.getEnduringNodes().values().stream() - .filter(Node::isGroupNode) - .filter(Node::getValuePrimitive) - .filter(Node::isPermanent) - .collect(Collectors.toSet()); - List> lines = new ArrayList<>(); - for (Node node : nodes) { - String name = node.getGroupName(); + if (holder.getType().isUser()) { + // if the holder is a user, we want to query parent groups for tracks + Set nodes = holder.getEnduringNodes().values().stream() + .filter(Node::isGroupNode) + .filter(Node::getValuePrimitive) + .filter(Node::isPermanent) + .collect(Collectors.toSet()); + + for (Node node : nodes) { + String groupName = node.getGroupName(); + List tracks = plugin.getTrackManager().getAll().values().stream() + .filter(t -> t.containsGroup(groupName)) + .collect(Collectors.toList()); + + for (Track t : tracks) { + lines.add(Maps.immutableEntry(t, CommandUtils.listToArrowSep(t.getGroups(), groupName) + CommandUtils.getAppendableNodeContextString(node))); + } + } + } else { + // otherwise, just lookup for the actual group + String groupName = ((Group) holder).getName(); List tracks = plugin.getTrackManager().getAll().values().stream() - .filter(t -> t.containsGroup(name)) + .filter(t -> t.containsGroup(groupName)) .collect(Collectors.toList()); for (Track t : tracks) { - lines.add(Maps.immutableEntry(t, CommandUtils.listToArrowSep(t.getGroups(), name) + CommandUtils.getAppendableNodeContextString(node))); + lines.add(Maps.immutableEntry(t, CommandUtils.listToArrowSep(t.getGroups(), groupName))); } }