make the server watcher list command look better

This commit is contained in:
Lee 2024-07-06 07:35:06 +01:00
parent bbbbce557b
commit 9379ebb33d

@ -13,9 +13,15 @@ import lombok.NonNull;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
import net.dv8tion.jda.api.interactions.commands.SlashCommandInteraction;
import org.apache.catalina.Server;
import org.springframework.stereotype.Component;
import xyz.mcutils.models.server.ServerPlatform;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author Fascinated (fascinated7)
*/
@ -29,19 +35,24 @@ public class ListSubCommand extends BatCommand {
public void execute(BatGuild guild, @NonNull BatUser user, @NonNull MessageChannel channel, Member member, @NonNull SlashCommandInteraction event) {
MinecraftProfile profile = guild.getMinecraftProfile();
Map<ServerPlatform, List<ServerWatcher>> watchers = new HashMap<>();
for (ServerWatcher server : profile.getServerWatchers()) {
watchers.computeIfAbsent(server.getPlatform(), k -> new ArrayList<>()).add(server);
}
EmbedDescriptionBuilder description = new EmbedDescriptionBuilder("Server Watcher");
description.appendLine("Here is a list of all the servers being watched", false);
description.emptyLine();
for (ServerWatcher server : profile.getServerWatchers()) {
int platformDefaultPort = server.getPlatform() == ServerPlatform.JAVA ? 25565 : 19132;
String hostname = server.getHostname() + (server.getPort() != platformDefaultPort ? ":" + server.getPort() : "");
description.appendLine("`%s` (%s) - %s".formatted(
hostname,
EnumUtils.getEnumName(server.getPlatform()),
for (Map.Entry<ServerPlatform, List<ServerWatcher>> entry : watchers.entrySet()) {
description.appendLine("**%s**".formatted(EnumUtils.getEnumName(entry.getKey())), false);
for (ServerWatcher server : entry.getValue()) {
description.appendLine("`%s` - %s".formatted(
server.getHostname(),
server.getChannel().getAsMention()
), true);
}
description.emptyLine();
}
event.replyEmbeds(EmbedUtils.successEmbed()
.setDescription(description.build())