Tried to add a way to see active boosters
This commit is contained in:
parent
7fa2370498
commit
a154e073bd
|
|
@ -1,11 +1,13 @@
|
|||
package com.alttd.vboosters.commands;
|
||||
|
||||
import com.alttd.boosterapi.Booster;
|
||||
import com.alttd.boosterapi.BoosterType;
|
||||
import com.alttd.boosterapi.config.Config;
|
||||
import com.alttd.boosterapi.util.Utils;
|
||||
import com.alttd.proxydiscordlink.bot.api.DiscordSendMessage;
|
||||
import com.alttd.vboosters.VelocityBoosters;
|
||||
import com.alttd.vboosters.data.VelocityBooster;
|
||||
import com.alttd.vboosters.storage.VelocityBoosterStorage;
|
||||
import com.mojang.brigadier.arguments.DoubleArgumentType;
|
||||
import com.mojang.brigadier.arguments.IntegerArgumentType;
|
||||
import com.mojang.brigadier.arguments.StringArgumentType;
|
||||
|
|
@ -20,13 +22,12 @@ import com.velocitypowered.api.command.CommandSource;
|
|||
import com.velocitypowered.api.proxy.Player;
|
||||
import com.velocitypowered.api.proxy.ProxyServer;
|
||||
import com.velocitypowered.api.util.GameProfile;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
import net.kyori.adventure.text.minimessage.Template;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
|
@ -46,11 +47,42 @@ public class BoosterCommand {
|
|||
return builder.buildFuture();
|
||||
}
|
||||
|
||||
private static MiniMessage miniMessage = MiniMessage.get();
|
||||
public BoosterCommand(ProxyServer proxyServer) {
|
||||
LiteralCommandNode<CommandSource> command = LiteralArgumentBuilder
|
||||
.<CommandSource>literal("booster")
|
||||
.requires(ctx -> ctx.hasPermission("command.proxy.booster"))
|
||||
.executes(context -> { //TODO put these messages in config
|
||||
String message = "Active boosters:\n<active_boosters>\n\nQueued boosters:\n<queued_boosters>";
|
||||
String activeBooster = "<type> activated by <activator> until <end_time> [UTC], boosts <multiplier> times";
|
||||
String queuedBooster = "<type> queued by <activator> starts at <start_time> [UTC] and will be active for <duration>, boosts <multiplier> times";
|
||||
List<Component> activeBoosterComponents = new ArrayList<>();
|
||||
List<Component> queuedBoosterComponents = new ArrayList<>();
|
||||
for (Booster booster : VelocityBoosterStorage.getVelocityBoosterStorage().getBoosters().values()) {
|
||||
long expiryTime = new Date().getTime() + booster.getDuration();
|
||||
ArrayList<Template> templates = new ArrayList<>(List.of(
|
||||
Template.of("activator", booster.getActivator()),
|
||||
Template.of("start_time", DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT).format(booster.getStartingTime())),
|
||||
Template.of("duration", String.valueOf(booster.getDuration())),
|
||||
Template.of("multiplier", String.valueOf(booster.getMultiplier()))));
|
||||
if (booster.isActive())
|
||||
templates.add(Template.of("end_time", DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT).format(expiryTime)));
|
||||
else
|
||||
templates.add(Template.of("end_time", "unknown"));
|
||||
if (booster.isActive())
|
||||
activeBoosterComponents.add(miniMessage.parse(activeBooster, templates));
|
||||
else
|
||||
queuedBoosterComponents.add(miniMessage.parse(queuedBooster, templates));
|
||||
}
|
||||
Component separator = miniMessage.parse("\n");
|
||||
context.getSource().sendMessage(miniMessage.parse(message, List.of(
|
||||
Template.of("active_boosters", Component.join(separator, activeBoosterComponents)),
|
||||
Template.of("queued_boosters", Component.join(separator, queuedBoosterComponents))
|
||||
)));
|
||||
return 1;
|
||||
})
|
||||
.then(RequiredArgumentBuilder.<CommandSource, String>argument("username", StringArgumentType.string())
|
||||
.requires(ctx -> ctx.hasPermission("command.proxy.booster.manage"))
|
||||
.suggests((context, builder) -> buildRemainingString(builder, proxyServer.getAllPlayers().stream()
|
||||
.map(Player::getGameProfile)
|
||||
.map(GameProfile::getName)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user