mirror of
https://github.com/LuckPerms/LuckPerms.git
synced 2025-02-15 12:02:32 +01:00
Add pagination to listgroups command (#3226)
This commit is contained in:
parent
e227d96cbf
commit
64bd8b5eaf
@ -69,7 +69,9 @@ luckperms {
|
||||
flags brigadier:string greedy_phrase;
|
||||
}
|
||||
}
|
||||
listgroups;
|
||||
listgroups {
|
||||
page brigadier:integer;
|
||||
}
|
||||
createtrack {
|
||||
name brigadier:string single_word;
|
||||
}
|
||||
|
@ -99,8 +99,9 @@ public enum CommandSpec {
|
||||
DELETE_GROUP("/%s deletegroup <group>",
|
||||
arg("name", true)
|
||||
),
|
||||
LIST_GROUPS("/%s listgroups"),
|
||||
|
||||
LIST_GROUPS("/%s listgroups",
|
||||
arg("page", false)
|
||||
),
|
||||
CREATE_TRACK("/%s createtrack <track>",
|
||||
arg("name", true)
|
||||
),
|
||||
|
@ -30,17 +30,20 @@ import me.lucko.luckperms.common.command.access.CommandPermission;
|
||||
import me.lucko.luckperms.common.command.spec.CommandSpec;
|
||||
import me.lucko.luckperms.common.command.utils.ArgumentList;
|
||||
import me.lucko.luckperms.common.locale.Message;
|
||||
import me.lucko.luckperms.common.model.Group;
|
||||
import me.lucko.luckperms.common.model.Track;
|
||||
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
||||
import me.lucko.luckperms.common.sender.Sender;
|
||||
import me.lucko.luckperms.common.util.Iterators;
|
||||
import me.lucko.luckperms.common.util.Predicates;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class ListGroups extends SingleCommand {
|
||||
public ListGroups() {
|
||||
super(CommandSpec.LIST_GROUPS, "ListGroups", CommandPermission.LIST_GROUPS, Predicates.alwaysFalse());
|
||||
super(CommandSpec.LIST_GROUPS, "ListGroups", CommandPermission.LIST_GROUPS, Predicates.notInRange(0, 1));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -53,15 +56,29 @@ public class ListGroups extends SingleCommand {
|
||||
return;
|
||||
}
|
||||
|
||||
Message.GROUPS_LIST.send(sender);
|
||||
plugin.getGroupManager().getAll().values().stream()
|
||||
.sorted((o1, o2) -> {
|
||||
int page = args.getIntOrDefault(0, 1);
|
||||
int pageIndex = page - 1;
|
||||
|
||||
List<Group> groups = plugin.getGroupManager().getAll().values().stream().sorted((o1, o2) -> {
|
||||
int i = Integer.compare(o2.getWeight().orElse(0), o1.getWeight().orElse(0));
|
||||
return i != 0 ? i : o1.getName().compareToIgnoreCase(o2.getName());
|
||||
})
|
||||
.forEach(group -> {
|
||||
List<String> tracks = plugin.getTrackManager().getAll().values().stream().filter(t -> t.containsGroup(group)).map(Track::getName).collect(Collectors.toList());
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
List<List<Group>> pages = Iterators.divideIterable(groups, 8);
|
||||
|
||||
if (pageIndex < 0 || pageIndex >= pages.size()) {
|
||||
page = 1;
|
||||
pageIndex = 0;
|
||||
}
|
||||
|
||||
Message.SEARCH_SHOWING_GROUPS.send(sender, page, pages.size(), groups.size());
|
||||
Message.GROUPS_LIST.send(sender);
|
||||
|
||||
Collection<? extends Track> allTracks = plugin.getTrackManager().getAll().values();
|
||||
|
||||
for (Group group : pages.get(pageIndex)) {
|
||||
List<String> tracks = allTracks.stream().filter(t -> t.containsGroup(group)).map(Track::getName).collect(Collectors.toList());
|
||||
Message.GROUPS_LIST_ENTRY.send(sender, group, group.getWeight().orElse(0), tracks);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user