11package dev.slne.surf.essentials.command.minecraft
22
3+ import com.destroystokyo.paper.profile.PlayerProfile
34import com.github.shynixn.mccoroutine.folia.launch
4- import dev.jorel.commandapi.arguments.PlayerProfileArgument
5+ import dev.jorel.commandapi.arguments.AsyncPlayerProfileArgument
56import dev.jorel.commandapi.kotlindsl.*
67import dev.slne.surf.essentials.plugin
78import dev.slne.surf.essentials.util.permission.EssentialsPermissionRegistry
@@ -10,9 +11,11 @@ import dev.slne.surf.surfapi.core.api.messages.CommonComponents
1011import dev.slne.surf.surfapi.core.api.messages.adventure.buildText
1112import dev.slne.surf.surfapi.core.api.messages.adventure.sendText
1213import dev.slne.surf.surfapi.core.api.messages.pagination.Pagination
14+ import kotlinx.coroutines.future.await
1315import net.kyori.adventure.text.format.TextDecoration
1416import org.bukkit.Bukkit
1517import org.bukkit.OfflinePlayer
18+ import java.util.concurrent.CompletableFuture
1619
1720fun whitelistCommand () = commandTree(" whitelist" ) {
1821 withPermission(EssentialsPermissionRegistry .WHITELIST_COMMAND )
@@ -96,48 +99,88 @@ fun whitelistCommand() = commandTree("whitelist") {
9699
97100 literalArgument(" player" ) {
98101 literalArgument(" add" ) {
99- argument(PlayerProfileArgument (" offlinePlayer" )) {
102+ argument(AsyncPlayerProfileArgument (" offlinePlayer" )) {
100103 anyExecutor { executor, args ->
101- val offlinePlayer : OfflinePlayer by args
104+ val offlinePlayers : CompletableFuture < List < PlayerProfile >> by args
102105
103- if (offlinePlayer.isWhitelisted) {
104- executor.sendText {
105- appendPrefix()
106- error(" Der Spieler ist bereits auf der Whitelist." )
106+ plugin.launch {
107+ val profile = offlinePlayers.await().firstOrNull() ? : run {
108+ executor.sendText {
109+ appendPrefix()
110+ error(" Der Spieler wurde nicht gefunden." )
111+ }
112+ return @launch
107113 }
108- return @anyExecutor
109- }
110114
111- offlinePlayer.isWhitelisted = true
115+ val id = profile.id ? : run {
116+ executor.sendText {
117+ appendPrefix()
118+ error(" Der Spieler hat keine gültige UUID." )
119+ }
120+ return @launch
121+ }
122+ val offlinePlayer = Bukkit .getOfflinePlayer(id)
112123
113- executor.sendText {
114- appendPrefix()
115- variableValue(offlinePlayer.name ? : offlinePlayer.uniqueId.toString())
116- success(" wurde zur Whitelist hinzugefügt." )
124+ if (offlinePlayer.isWhitelisted) {
125+ executor.sendText {
126+ appendPrefix()
127+ error(" Der Spieler ist bereits auf der Whitelist." )
128+ }
129+ return @launch
130+ }
131+
132+ offlinePlayer.isWhitelisted = true
133+
134+ executor.sendText {
135+ appendPrefix()
136+ success(" Der Spieler " )
137+ variableValue(offlinePlayer.name ? : offlinePlayer.uniqueId.toString())
138+ success(" wurde zur Whitelist hinzugefügt." )
139+ }
117140 }
118141 }
119142 }
120143 }
121144
122145 literalArgument(" remove" ) {
123- argument(PlayerProfileArgument (" offlinePlayer" )) {
146+ argument(AsyncPlayerProfileArgument (" offlinePlayer" )) {
124147 anyExecutor { executor, args ->
125- val offlinePlayer : OfflinePlayer by args
148+ val offlinePlayers : CompletableFuture < List < PlayerProfile >> by args
126149
127- if (! offlinePlayer.isWhitelisted) {
128- executor.sendText {
129- appendPrefix()
130- error(" Der Spieler ist nicht auf der Whitelist." )
150+ plugin.launch {
151+ val profile = offlinePlayers.await().firstOrNull() ? : run {
152+ executor.sendText {
153+ appendPrefix()
154+ error(" Der Spieler wurde nicht gefunden." )
155+ }
156+ return @launch
131157 }
132- return @anyExecutor
133- }
134158
135- offlinePlayer.isWhitelisted = false
159+ val id = profile.id ? : run {
160+ executor.sendText {
161+ appendPrefix()
162+ error(" Der Spieler hat keine gültige UUID." )
163+ }
164+ return @launch
165+ }
166+ val offlinePlayer = Bukkit .getOfflinePlayer(id)
136167
137- executor.sendText {
138- appendPrefix()
139- variableValue(offlinePlayer.name ? : offlinePlayer.uniqueId.toString())
140- success(" wurde von der Whitelist entfernt." )
168+ if (! offlinePlayer.isWhitelisted) {
169+ executor.sendText {
170+ appendPrefix()
171+ error(" Der Spieler ist nicht auf der Whitelist." )
172+ }
173+ return @launch
174+ }
175+
176+ offlinePlayer.isWhitelisted = false
177+
178+ executor.sendText {
179+ appendPrefix()
180+ success(" Der Spieler " )
181+ variableValue(offlinePlayer.name ? : offlinePlayer.uniqueId.toString())
182+ success(" wurde von der Whitelist entfernt." )
183+ }
141184 }
142185 }
143186 }
0 commit comments