Added UserInfoCommand

This commit is contained in:
Elias Müller 2023-10-25 14:50:59 +02:00
parent 463874a024
commit 09e0db05d9
3 changed files with 99 additions and 0 deletions

View File

@ -4,6 +4,7 @@ import eu.mhsl.craftattack.spawn.appliance.Appliance;
import eu.mhsl.craftattack.spawn.appliances.adminMarker.AdminMarker; import eu.mhsl.craftattack.spawn.appliances.adminMarker.AdminMarker;
import eu.mhsl.craftattack.spawn.appliances.chatMessages.ChatMessages; import eu.mhsl.craftattack.spawn.appliances.chatMessages.ChatMessages;
import eu.mhsl.craftattack.spawn.appliances.countdown.Countdown; import eu.mhsl.craftattack.spawn.appliances.countdown.Countdown;
import eu.mhsl.craftattack.spawn.appliances.debug.Debug;
import eu.mhsl.craftattack.spawn.appliances.tablist.Tablist; import eu.mhsl.craftattack.spawn.appliances.tablist.Tablist;
import eu.mhsl.craftattack.spawn.appliances.titleClear.TitleClear; import eu.mhsl.craftattack.spawn.appliances.titleClear.TitleClear;
import eu.mhsl.craftattack.spawn.config.Configuration; import eu.mhsl.craftattack.spawn.config.Configuration;
@ -32,6 +33,8 @@ public final class Main extends JavaPlugin {
new Countdown(), new Countdown(),
new Tablist(), new Tablist(),
new ChatMessages() new ChatMessages()
new ChatMessages(),
new Debug()
); );
Bukkit.getLogger().info("Loading appliances..."); Bukkit.getLogger().info("Loading appliances...");
appliances.forEach(appliance -> { appliances.forEach(appliance -> {

View File

@ -0,0 +1,14 @@
package eu.mhsl.craftattack.spawn.appliances.debug;
import eu.mhsl.craftattack.spawn.appliance.Appliance;
import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand;
import eu.mhsl.craftattack.spawn.appliances.debug.command.UserInfoCommand;
import org.jetbrains.annotations.NotNull;
import java.util.List;
public class Debug extends Appliance {
@Override
protected @NotNull List<ApplianceCommand<?>> commands() {
return List.of(new UserInfoCommand());
}
}

View File

@ -0,0 +1,82 @@
package eu.mhsl.craftattack.spawn.appliances.debug.command;
import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand;
import eu.mhsl.craftattack.spawn.appliances.debug.Debug;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.ClickEvent;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Stream;
public class UserInfoCommand extends ApplianceCommand<Debug> {
public UserInfoCommand() {
super("userInfo");
}
@Override
protected void execute(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
if(args.length != 1) {
sender.sendMessage(Component.text("Bitte gib einen Nutzernamen an.", NamedTextColor.RED));
return;
}
OfflinePlayer player = Bukkit.getOfflinePlayer(args[0]);
sender.sendMessage(
Component.text()
.appendNewline()
.append(Component.text("Informationen zu: ", NamedTextColor.GOLD))
.append(
Component
.text(Objects.requireNonNull(player.getName()), NamedTextColor.YELLOW)
.clickEvent(ClickEvent.copyToClipboard(Objects.requireNonNull(player.getName())))
)
.appendNewline()
.append(
Component
.text("UUID: " + player.getUniqueId(), NamedTextColor.GRAY)
.clickEvent(ClickEvent.copyToClipboard(player.getUniqueId().toString()))
)
.appendNewline()
.append(
Component
.text("Erster Besuch: " + formatUnixTimestamp(player.getFirstPlayed()), NamedTextColor.GRAY)
.clickEvent(ClickEvent.copyToClipboard(String.valueOf(player.getFirstPlayed())))
)
.appendNewline()
.append(
Component
.text("Letzter Besuch: " + formatUnixTimestamp(player.getLastSeen()), NamedTextColor.GRAY)
.clickEvent(ClickEvent.copyToClipboard(String.valueOf(player.getLastSeen())))
)
.appendNewline()
);
}
@Override
public @Nullable List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
if(args.length < 2) {
return Stream.concat(
Bukkit.getOnlinePlayers().stream().map(Player::getName),
Arrays.stream(Bukkit.getOfflinePlayers()).map(OfflinePlayer::getName)
).toList();
}
return new ArrayList<>();
}
private String formatUnixTimestamp(long timestamp) {
DateFormat format = new SimpleDateFormat("E dd.MM.yyyy H:m:s");
return format.format(new Date(timestamp));
}
}