Skip to content

Commit b650434

Browse files
Merge pull request #22 from SLNE-Development/feat/fix-clear-command
Feat/fix clear command
2 parents 238a918 + 28bd044 commit b650434

File tree

10 files changed

+92
-76
lines changed

10 files changed

+92
-76
lines changed

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
plugins {
2-
id("dev.slne.surf.surfapi.gradle.paper-plugin")
2+
id("dev.slne.surf.surfapi.gradle.paper-plugin") version "1.21.11+"
33
}
44

55
group = "dev.slne.surf.essentials"

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
kotlin.code.style=official
22
kotlin.stdlib.default.dependency=false
33
org.gradle.parallel=true
4-
version=1.21.11-2.0.6-SNAPSHOT
4+
version=1.21.11-2.0.9-SNAPSHOT

gradle/wrapper/gradle-wrapper.jar

1.91 KB
Binary file not shown.

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions-snapshots/gradle-9.4.0-20260117005955+0000-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

gradlew

Lines changed: 4 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gradlew.bat

Lines changed: 1 addition & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

settings.gradle.kts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
1-
buildscript {
1+
pluginManagement {
22
repositories {
33
gradlePluginPortal()
44
maven("https://repo.slne.dev/repository/maven-public/") { name = "maven-public" }
55
}
6-
dependencies {
7-
classpath("dev.slne.surf:surf-api-gradle-plugin:1.21.11+")
8-
}
96
}

src/main/kotlin/dev/slne/surf/essentials/command/InfoCommand.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ fun infoCommand() = commandTree("pinfo") {
2121

2222
val name = player.name
2323
val uuid = player.uniqueId.toString()
24-
val ip = "${player.address.address.hostAddress}:${player.address.port}"
24+
val ip = "${player.address?.address?.hostAddress}:${player.address?.port}"
2525
val host =
2626
"${player.virtualHost?.hostName ?: "Unbekannt"}: ${player.virtualHost?.port ?: "Unbekannt"}"
2727
val client = player.clientBrandName

src/main/kotlin/dev/slne/surf/essentials/command/minecraft/ClearCommand.kt

Lines changed: 12 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@ package dev.slne.surf.essentials.command.minecraft
22

33
import dev.jorel.commandapi.kotlindsl.*
44
import dev.slne.surf.essentials.util.permission.EssentialsPermissionRegistry
5+
import dev.slne.surf.surfapi.core.api.messages.Colors
56
import dev.slne.surf.surfapi.core.api.messages.adventure.sendText
67
import dev.slne.surf.surfapi.core.api.util.mutableObject2ObjectMapOf
78
import dev.slne.surf.surfapi.core.api.util.mutableObjectSetOf
9+
import net.kyori.adventure.text.Component
810
import org.bukkit.entity.Player
911
import org.bukkit.inventory.ItemStack
1012

@@ -25,33 +27,6 @@ fun clearCommand() = commandTree("clear") {
2527
appendPrefix()
2628
success("Dein Inventar wurde geleert.")
2729
}
28-
29-
itemStackArgument("type") {
30-
playerExecutor { player, args ->
31-
val type: ItemStack by args
32-
33-
val amount = player.inventory.filter { it.type == type.type }.sumOf { it.amount }
34-
35-
if (amount == 0) {
36-
player.sendText {
37-
appendPrefix()
38-
error("In deinem Inventar wurden keine Items vom Typ ")
39-
variableValue(type.type.name)
40-
error(" gefunden.")
41-
}
42-
return@playerExecutor
43-
}
44-
45-
player.inventory.remove(type.type)
46-
47-
player.sendText {
48-
appendPrefix()
49-
success("Es wurden ")
50-
variableValue(amount.toString())
51-
success(" Items aus deinem Inventar entfernt.")
52-
}
53-
}
54-
}
5530
}
5631

5732
entitySelectorArgumentManyPlayers("players") {
@@ -100,8 +75,11 @@ fun clearCommand() = commandTree("clear") {
10075
val notFoundPlayers = mutableObjectSetOf<Player>()
10176

10277
for (player in players) {
103-
val amount =
104-
player.inventory.filter { it.type == type.type }.sumOf { it.amount }
78+
val amount = player.inventory.contents
79+
.filterNotNull()
80+
.filter { it.type == type.type }
81+
.sumOf { it.amount }
82+
10583

10684
if (amount == 0) {
10785
notFoundPlayers.add(player)
@@ -129,8 +107,11 @@ fun clearCommand() = commandTree("clear") {
129107
appendPrefix()
130108
error("In den Inventaren von ")
131109
variableValue(notFoundPlayers.joinToString(", ") { it.name })
132-
error(" wurden keine Items vom Typ ")
133-
variableValue(type.type.name)
110+
error(" wurden keine ")
111+
append(
112+
Component.translatable(type.type.translationKey())
113+
.colorIfAbsent(Colors.VARIABLE_VALUE)
114+
)
134115
error(" gefunden.")
135116
}
136117
}

src/main/kotlin/dev/slne/surf/essentials/command/minecraft/WhitelistCommand.kt

Lines changed: 70 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package dev.slne.surf.essentials.command.minecraft
22

3+
import com.destroystokyo.paper.profile.PlayerProfile
34
import com.github.shynixn.mccoroutine.folia.launch
4-
import dev.jorel.commandapi.arguments.PlayerProfileArgument
5+
import dev.jorel.commandapi.arguments.AsyncPlayerProfileArgument
56
import dev.jorel.commandapi.kotlindsl.*
67
import dev.slne.surf.essentials.plugin
78
import dev.slne.surf.essentials.util.permission.EssentialsPermissionRegistry
@@ -10,9 +11,11 @@ import dev.slne.surf.surfapi.core.api.messages.CommonComponents
1011
import dev.slne.surf.surfapi.core.api.messages.adventure.buildText
1112
import dev.slne.surf.surfapi.core.api.messages.adventure.sendText
1213
import dev.slne.surf.surfapi.core.api.messages.pagination.Pagination
14+
import kotlinx.coroutines.future.await
1315
import net.kyori.adventure.text.format.TextDecoration
1416
import org.bukkit.Bukkit
1517
import org.bukkit.OfflinePlayer
18+
import java.util.concurrent.CompletableFuture
1619

1720
fun 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

Comments
 (0)