1+ package io.github.grassproject.queueLib.commands
2+
3+ import io.github.grassproject.framework.core.command.GPCommand
4+ import io.github.grassproject.queueLib.QueueLib
5+ import org.bukkit.Bukkit
6+ import org.bukkit.command.CommandSender
7+ import java.util.UUID
8+
9+ class QueueCommand : GPCommand <QueueLib >(
10+ QueueLib .plugin, " queue" ,
11+ listOf(), " QueueLib Command" ,
12+ " gp.queue.command"
13+ ) {
14+ override fun execute (
15+ sender : CommandSender ,
16+ args : Array <out String >
17+ ): Boolean {
18+ val manager = QueueLib .manager
19+
20+ if (args.isEmpty()) {
21+ sender.sendMessage(" /queue list - 큐 목록 보기" )
22+ sender.sendMessage(" /queue info <uuid> - 특정 큐 정보 보기" )
23+ return true
24+ }
25+
26+ when (args[0 ].lowercase()) {
27+ " list" -> {
28+ val list = manager.queueList
29+ if (list.isEmpty()) {
30+ sender.sendMessage(" 현재 등록된 큐가 없습니다." )
31+ } else {
32+ sender.sendMessage(" 큐 목록 (${list.size} )" )
33+ list.forEach { q ->
34+ sender.sendMessage(" - ${q.uid} [${q.type} ] ( ${q.joinedPlayer.size} /${q.maxPlayer} )" )
35+ }
36+ }
37+ }
38+
39+ " info" -> {
40+ if (args.size < 2 ) {
41+ sender.sendMessage(" /queue info <uuid>" )
42+ return true
43+ }
44+ try {
45+ val uuid = UUID .fromString(args[1 ])
46+ val queue = manager.getQueue(uuid)
47+ if (queue == null ) {
48+ sender.sendMessage(" 해당 UUID의 큐를 찾을 수 없습니다." )
49+ return true
50+ }
51+ sender.sendMessage(" 큐 정보:" )
52+ sender.sendMessage(" UUID: ${queue.uid} " )
53+ sender.sendMessage(" 타입: ${queue.type} " )
54+ sender.sendMessage(" 플레이어: ${queue.joinedPlayer.size} /${queue.maxPlayer} " )
55+ sender.sendMessage(" 참가자: ${queue.joinedPlayer.mapNotNull { Bukkit .getPlayer(it)?.name }.joinToString(" , " )} " )
56+ } catch (e: IllegalArgumentException ) {
57+ sender.sendMessage(" 올바른 UUID 형식이 아닙니다." )
58+ }
59+ }
60+
61+ else -> {
62+ sender.sendMessage(" 알 수 없는 명령어입니다. /queue 로 확인하세요." )
63+ }
64+ }
65+
66+ return true
67+ }
68+
69+ override fun tabComplete (
70+ sender : CommandSender ,
71+ args : Array <out String >
72+ ): List <String ?> {
73+ return when (args.size) {
74+ 1 -> listOf (" list" , " info" ).filter { it.startsWith(args[0 ], ignoreCase = true ) }
75+ 2 -> if (args[0 ].equals(" info" , true )) {
76+ QueueLib .manager.queueList.map { it.uid.toString() }
77+ .filter { it.startsWith(args[1 ], ignoreCase = true ) }
78+ } else emptyList()
79+ else -> emptyList()
80+ }
81+ }
82+ }
0 commit comments