mirror of
https://github.com/LuckPerms/LuckPerms.git
synced 2024-10-05 08:47:39 +02: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;
|
flags brigadier:string greedy_phrase;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
listgroups;
|
listgroups {
|
||||||
|
page brigadier:integer;
|
||||||
|
}
|
||||||
createtrack {
|
createtrack {
|
||||||
name brigadier:string single_word;
|
name brigadier:string single_word;
|
||||||
}
|
}
|
||||||
|
@ -99,8 +99,9 @@ public enum CommandSpec {
|
|||||||
DELETE_GROUP("/%s deletegroup <group>",
|
DELETE_GROUP("/%s deletegroup <group>",
|
||||||
arg("name", true)
|
arg("name", true)
|
||||||
),
|
),
|
||||||
LIST_GROUPS("/%s listgroups"),
|
LIST_GROUPS("/%s listgroups",
|
||||||
|
arg("page", false)
|
||||||
|
),
|
||||||
CREATE_TRACK("/%s createtrack <track>",
|
CREATE_TRACK("/%s createtrack <track>",
|
||||||
arg("name", true)
|
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.spec.CommandSpec;
|
||||||
import me.lucko.luckperms.common.command.utils.ArgumentList;
|
import me.lucko.luckperms.common.command.utils.ArgumentList;
|
||||||
import me.lucko.luckperms.common.locale.Message;
|
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.model.Track;
|
||||||
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
||||||
import me.lucko.luckperms.common.sender.Sender;
|
import me.lucko.luckperms.common.sender.Sender;
|
||||||
|
import me.lucko.luckperms.common.util.Iterators;
|
||||||
import me.lucko.luckperms.common.util.Predicates;
|
import me.lucko.luckperms.common.util.Predicates;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class ListGroups extends SingleCommand {
|
public class ListGroups extends SingleCommand {
|
||||||
public ListGroups() {
|
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
|
@Override
|
||||||
@ -53,15 +56,29 @@ public class ListGroups extends SingleCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Message.GROUPS_LIST.send(sender);
|
int page = args.getIntOrDefault(0, 1);
|
||||||
plugin.getGroupManager().getAll().values().stream()
|
int pageIndex = page - 1;
|
||||||
.sorted((o1, o2) -> {
|
|
||||||
|
List<Group> groups = plugin.getGroupManager().getAll().values().stream().sorted((o1, o2) -> {
|
||||||
int i = Integer.compare(o2.getWeight().orElse(0), o1.getWeight().orElse(0));
|
int i = Integer.compare(o2.getWeight().orElse(0), o1.getWeight().orElse(0));
|
||||||
return i != 0 ? i : o1.getName().compareToIgnoreCase(o2.getName());
|
return i != 0 ? i : o1.getName().compareToIgnoreCase(o2.getName());
|
||||||
})
|
}).collect(Collectors.toList());
|
||||||
.forEach(group -> {
|
|
||||||
List<String> tracks = plugin.getTrackManager().getAll().values().stream().filter(t -> t.containsGroup(group)).map(Track::getName).collect(Collectors.toList());
|
List<List<Group>> pages = Iterators.divideIterable(groups, 8);
|
||||||
Message.GROUPS_LIST_ENTRY.send(sender, group, group.getWeight().orElse(0), tracks);
|
|
||||||
});
|
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