This commit is contained in:
ChomeNS 2023-03-25 15:29:44 +07:00
parent 14b2b53682
commit b2fccdd28d
3 changed files with 95 additions and 1 deletions

View file

@ -0,0 +1,92 @@
package me.chayapak1.chomens_bot.commands;
import me.chayapak1.chomens_bot.Bot;
import me.chayapak1.chomens_bot.chatParsers.data.MutablePlayerListEntry;
import me.chayapak1.chomens_bot.command.Command;
import me.chayapak1.chomens_bot.command.CommandContext;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.JoinConfiguration;
import net.kyori.adventure.text.event.ClickEvent;
import net.kyori.adventure.text.event.HoverEvent;
import net.kyori.adventure.text.format.NamedTextColor;
import java.util.ArrayList;
import java.util.List;
public class ListCommand implements Command {
public String name() { return "list"; }
public String description() {
return "Lists all players in the server (including vanished)";
}
public List<String> usage() {
final List<String> usages = new ArrayList<>();
usages.add("");
return usages;
}
public List<String> alias() {
final List<String> aliases = new ArrayList<>();
aliases.add("");
return aliases;
}
public int trustLevel() {
return 0;
}
public Component execute(CommandContext context, String[] args, String[] fullArgs) {
final Bot bot = context.bot();
final List<MutablePlayerListEntry> list = bot.players().list();
final List<Component> playersComponent = new ArrayList<>();
for (MutablePlayerListEntry entry : list) {
playersComponent.add(
Component.translatable(
"%s %s",
Component
.text(entry.profile().getName())
.hoverEvent(
HoverEvent.showText(
Component.text("Click here to copy the username to your clipboard").color(NamedTextColor.GREEN)
)
)
.clickEvent(
ClickEvent.copyToClipboard(entry.profile().getName())
)
.color(NamedTextColor.YELLOW),
Component
.text(entry.profile().getIdAsString())
.hoverEvent(
HoverEvent.showText(
Component.text("Click here to copy the UUID to your clipboard").color(NamedTextColor.GREEN)
)
)
.clickEvent(
ClickEvent.copyToClipboard(entry.profile().getIdAsString())
)
.color(NamedTextColor.AQUA)
).color(NamedTextColor.DARK_GRAY)
);
}
final Component component = Component.empty()
.append(Component.text("Players ").color(NamedTextColor.GREEN))
.append(Component.text("(").color(NamedTextColor.DARK_GRAY))
.append(Component.text(list.size()).color(NamedTextColor.GRAY))
.append(Component.text(")").color(NamedTextColor.DARK_GRAY))
.append(Component.newline())
.append(
Component.join(JoinConfiguration.newlines(), playersComponent)
);
context.sendOutput(component);
return Component.text("success");
}
}

View file

@ -36,6 +36,7 @@ public class CommandHandlerPlugin {
registerCommand(new WikipediaCommand()); registerCommand(new WikipediaCommand());
registerCommand(new UrbanCommand()); registerCommand(new UrbanCommand());
registerCommand(new ClearChatCommand()); registerCommand(new ClearChatCommand());
registerCommand(new ListCommand());
} }
public void registerCommand (Command command) { public void registerCommand (Command command) {

View file

@ -6,6 +6,7 @@ import com.github.steveice10.mc.protocol.packet.ingame.clientbound.ClientboundPl
import com.github.steveice10.packetlib.Session; import com.github.steveice10.packetlib.Session;
import com.github.steveice10.packetlib.event.session.SessionAdapter; import com.github.steveice10.packetlib.event.session.SessionAdapter;
import com.github.steveice10.packetlib.packet.Packet; import com.github.steveice10.packetlib.packet.Packet;
import lombok.Getter;
import me.chayapak1.chomens_bot.Bot; import me.chayapak1.chomens_bot.Bot;
import me.chayapak1.chomens_bot.chatParsers.data.MutablePlayerListEntry; import me.chayapak1.chomens_bot.chatParsers.data.MutablePlayerListEntry;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
@ -16,7 +17,7 @@ import java.util.UUID;
public class PlayersPlugin extends SessionAdapter { public class PlayersPlugin extends SessionAdapter {
private final Bot bot; private final Bot bot;
public List<MutablePlayerListEntry> list = new ArrayList<>(); @Getter private List<MutablePlayerListEntry> list = new ArrayList<>();
public PlayersPlugin (Bot bot) { public PlayersPlugin (Bot bot) {
this.bot = bot; this.bot = bot;