use of gg.projecteden.nexus.framework.commands.models.annotations.Arg in project Nexus by ProjectEdenGG.
the class CostumeCommand method top.
@Path("top [page]")
@Permission(Group.ADMIN)
void top(@Arg("1") int page) {
Map<Costume, Integer> counts = new HashMap<>() {
{
for (CostumeUser user : service.getAll()) if (user.getRank() != Rank.ADMIN)
for (String costume : user.getOwnedCostumes()) put(Costume.of(costume), getOrDefault(costume, 0) + 1);
}
};
final BiFunction<Costume, String, JsonBuilder> formatter = (costume, index) -> json(index + " &e" + costume.getId() + " &7- " + counts.get(costume));
paginate(Utils.sortByValueReverse(counts).keySet(), formatter, "/costume top", page);
}
use of gg.projecteden.nexus.framework.commands.models.annotations.Arg in project Nexus by ProjectEdenGG.
the class StoreCommand method coupon_list.
@Async
@SneakyThrows
@Path("coupons list <player>")
void coupon_list(@Arg(value = "self", permission = Group.STAFF) Contributor contributor) {
final List<Coupon> coupons = Nexus.getBuycraft().getApiClient().getAllCoupons().execute().body().getData().stream().filter(coupon -> coupon.getUsername().equals(contributor.getName())).filter(coupon -> coupon.getExpire().getLimit() > 0).toList();
if (coupons.isEmpty())
error("No coupons found" + (isSelf(contributor) ? ". Create one with /store credit redeem <amount>" : " for " + contributor.getNickname()));
send(PREFIX + "Available coupons (&eClick &3to copy)");
line();
for (Coupon coupon : coupons) send(json(" &e" + coupon.getCode() + " &7- $" + coupon.getDiscount().getValue()).copy(coupon.getCode()).hover("&fClick to copy"));
line();
send("&3Redeem at &e" + StoreCommand.URL);
}
use of gg.projecteden.nexus.framework.commands.models.annotations.Arg in project Nexus by ProjectEdenGG.
the class Easter21Command method topLocations.
@Path("topLocations [page]")
@Permission(Group.ADMIN)
void topLocations(@Arg("1") int page) {
Map<Location, Integer> counts = new HashMap<>() {
{
for (Easter21User user : new Easter21UserService().getAll()) for (Location location : user.getFound()) put(location, getOrDefault(location, 0) + 1);
}
};
send(PREFIX + "Most found eggs");
BiFunction<Location, String, JsonBuilder> formatter = (location, index) -> json(index + " &e" + getCoordinateString(location) + " &7- " + counts.get(location)).command(getTeleportCommand(location)).hover("&eClick to teleport");
paginate(Utils.sortByValueReverse(counts).keySet(), formatter, "/easter topLocations", page);
}
use of gg.projecteden.nexus.framework.commands.models.annotations.Arg in project Nexus by ProjectEdenGG.
the class ReferralCommand method whoHasPlaytime.
@Path("who has playtime <playtime> from <site> [page]")
void whoHasPlaytime(String playtime, @Arg(tabCompleter = ReferralSite.class) String subdomain, @Arg("1") int page) {
final long seconds = Timespan.of(playtime).getOriginal();
List<Hours> players = getPlayersFrom(subdomain).stream().map(uuid -> new HoursService().get(uuid)).filter(hours -> hours.getTotal() >= seconds).sorted(Comparator.comparing(Hours::getTotal).reversed()).toList();
BiFunction<Hours, String, JsonBuilder> formatter = (hours, index) -> json(index + " &e" + Nerd.of(hours).getColoredName() + " &7- " + Timespan.ofSeconds(hours.getTotal()).format());
paginate(players, formatter, "/referral who has playtime " + playtime + " from " + subdomain, page);
}
use of gg.projecteden.nexus.framework.commands.models.annotations.Arg in project Nexus by ProjectEdenGG.
the class ReferralCommand method whoHasRank.
@Path("who has rank <rank> from <site> [page]")
void whoHasRank(Rank rank, @Arg(tabCompleter = ReferralSite.class) String subdomain, @Arg("1") int page) {
List<Hours> players = getPlayersFrom(subdomain).stream().map(uuid -> new HoursService().get(uuid)).filter(uuid -> Rank.of(uuid).gte(rank)).sorted(Comparator.comparing(Hours::getTotal).reversed()).toList();
BiFunction<Hours, String, JsonBuilder> formatter = (hours, index) -> json(index + " &e" + Nerd.of(hours).getColoredName());
paginate(players, formatter, "/referral who has rank " + rank.name().toLowerCase() + " from " + subdomain, page);
}
Aggregations