Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ import dev.slne.surf.surfapi.core.api.messages.adventure.sendText
import dev.slne.surf.surfapi.core.api.messages.builder.SurfComponentBuilder
import dev.slne.surf.surfapi.core.api.util.dateTimeFormatter
import net.kyori.adventure.text.Component
import net.kyori.adventure.text.event.ClickCallback
import net.kyori.adventure.text.event.ClickEvent
import net.kyori.adventure.text.event.HoverEvent
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer
import org.bukkit.command.CommandSender
import org.bukkit.entity.Player
import kotlin.jvm.java

fun deathCommand() = commandAPICommand("death") {
withPermission(Permissions.PLAYER_DEATH_GENERIC_COMMAND)
Expand All @@ -29,7 +29,6 @@ fun deathCommand() = commandAPICommand("death") {
withSubcommand(lookupCommand())
}


private fun SurfComponentBuilder.appendCopyable(
label: String,
value: Any?,
Expand Down Expand Up @@ -93,31 +92,29 @@ fun CommandSender.sendDeathInfoMessage(death: Death, lastDeath: Boolean = false)
appendCopyable("Todesursache", deathReason, "die Todesursache")

appendNewInfoPrefixedLine()
append(
buildText { spacer("[Zu Todesort teleportieren]") }
.clickEvent(ClickEvent.callback { audience ->
val player = audience as? Player ?: return@callback
player.teleportAsync(death.location)
player.sendText {
appendSuccessPrefix()
success("Du wurdest zum Todesort teleportiert.")
}
})
.hoverEvent(HoverEvent.showText(buildText { info("Klicke um dich zum Todesort zu teleportieren.") }))
)
append {
spacer("[Zu Todesort teleportieren]")
clickEvent(ClickEvent.callback(ClickCallback.widen({ player ->
player.teleportAsync(death.location)
player.sendText {
appendSuccessPrefix()
success("Du wurdest zum Todesort teleportiert.")
}
}, Player::class.java)))
hoverEvent(buildText { info("Klicke um dich zum Todesort zu teleportieren.") })
}
appendSpace()
append(
buildText { spacer("[Inventar ansehen]") }
.clickEvent(ClickEvent.callback { audience ->
val player = audience as? Player ?: return@callback
viewFrame.open(
DeathHistoryView::class.java,
player,
mapOf("death" to death)
)
})
.hoverEvent(HoverEvent.showText(buildText { info("Klicke um dich zum Todesort zu teleportieren.") }))
)
append {
spacer("[Inventar ansehen]")
clickEvent(ClickEvent.callback(ClickCallback.widen({ player ->
viewFrame.open(
DeathHistoryView::class.java,
player,
mapOf("death" to death)
)
}, Player::class.java)))
hoverEvent(buildText { info("Klicke um dich zum Todesort zu teleportieren.") })
}

appendNewInfoPrefixedLine()
spacer("-".repeat(30))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package dev.slne.surf.deathmessages.commands.subcommands

import dev.jorel.commandapi.arguments.UUIDArgument
import dev.jorel.commandapi.kotlindsl.argument
import dev.jorel.commandapi.kotlindsl.getValue
import dev.jorel.commandapi.kotlindsl.subcommand
import dev.jorel.commandapi.kotlindsl.uuidArgument
import dev.slne.surf.deathmessages.commands.sendDeathInfoMessage
import dev.slne.surf.deathmessages.database.service.DeathService
import dev.slne.surf.deathmessages.permissions.Permissions
Expand All @@ -12,10 +12,10 @@ import java.util.*

fun findDeathByIdCommand() = subcommand("findById") {
withPermission(Permissions.PLAYER_DEATH_FIND_BY_ID_COMMAND)
argument(UUIDArgument("deathId"))
uuidArgument("deathId")

anyExecutorSuspend { sender, args ->
val deathId = args["deathId"] as UUID
val deathId: UUID by args
val death = DeathService.findDeathByUuid(deathId)

if (death == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import dev.slne.surf.deathmessages.database.service.DeathService
import dev.slne.surf.deathmessages.permissions.Permissions
import dev.slne.surf.surfapi.bukkit.api.command.executors.anyExecutorSuspend
import dev.slne.surf.surfapi.bukkit.api.command.util.awaitAsyncPlayerProfile
import dev.slne.surf.surfapi.bukkit.api.command.util.idOrThrow
import dev.slne.surf.surfapi.core.api.messages.adventure.sendText


Expand All @@ -17,26 +18,13 @@ fun lastDeathCommand() = subcommand("last") {

anyExecutorSuspend { sender, args ->
val profile = args.awaitAsyncPlayerProfile("player")
val uuid = profile.id

if (uuid == null) {
sender.sendText {
appendErrorPrefix()
error("Der angegebene Spieler")
appendSpace()
variableValue(profile.name ?: "#Unbekannt")
appendSpace()
error("Konnte nicht gefunden werden.")
}
return@anyExecutorSuspend
}

val uuid = profile.idOrThrow()
val lastDeath = DeathService.findLastDeath(uuid)

if (lastDeath == null) {
sender.sendText {
appendErrorPrefix()
error("Es wurden keine Tod für den Spieler")
error("Es wurden kein Tod für den Spieler")
appendSpace()
variableValue(profile.name ?: uuid.toString())
appendSpace()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ fun lookupCommand() = subcommand("lookup") {
}
}

private val rangeRegex by lazy { Regex("""(\d+)([smhdw])""", RegexOption.IGNORE_CASE) }
private val rangeRegex = Regex("""(\d+)([smhdw])""", RegexOption.IGNORE_CASE)

private suspend fun Map<String, String>.parseDeathFilters(player: Player): DeathLookupFilter {
val playerUuid = this["--player"]?.let { PlayerLookupService.getUuid(it) }
Expand Down Expand Up @@ -199,7 +199,6 @@ data class DeathLookupFilter(
}
}


object DeathLookupService {
suspend fun lookup(filter: DeathLookupFilter): List<Death> {
val source = if (filter.playerUuid != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,13 @@ import dev.slne.surf.surfapi.core.api.util.logger
import kotlinx.coroutines.flow.firstOrNull
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.toList
import net.kyori.adventure.util.Services
import org.bukkit.Bukkit
import org.bukkit.Location
import org.bukkit.inventory.ItemStack
import java.util.*

@AutoService(DeathService::class)
class DeathServiceImpl : DeathService, Services.Fallback {
class DeathServiceImpl : DeathService {

override suspend fun findLastDeath(playerUuid: UUID): Death? =
suspendTransaction {
Expand Down
Loading