Skip to content

Commit abe5760

Browse files
feat: enhance trophy display with dynamic lore and formatting on join
- Added `displayName` and `buildLore` builders to customize off-hand trophy item appearance. - Included trophy description and received date in lore with localized formatting.
1 parent e99405d commit abe5760

1 file changed

Lines changed: 42 additions & 1 deletion

File tree

surf-trophy-paper/src/main/kotlin/dev/slne/surf/trophy/paper/listener/PlayerConnectionListener.kt

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
package dev.slne.surf.trophy.paper.listener
22

33
import com.github.shynixn.mccoroutine.folia.launch
4+
import dev.slne.surf.surfapi.bukkit.api.builder.buildLore
5+
import dev.slne.surf.surfapi.bukkit.api.builder.displayName
6+
import dev.slne.surf.surfapi.core.api.font.toSmallCaps
7+
import dev.slne.surf.surfapi.core.api.util.dateTimeFormatter
48
import dev.slne.surf.trophy.core.service.trophyPlayerService
59
import dev.slne.surf.trophy.paper.plugin
610
import org.bukkit.event.EventHandler
711
import org.bukkit.event.Listener
812
import org.bukkit.event.player.PlayerJoinEvent
913
import org.bukkit.event.player.PlayerQuitEvent
14+
import java.time.Instant
15+
import java.time.ZoneId
16+
import java.time.ZonedDateTime
1017

1118
object PlayerConnectionListener : Listener {
1219
@EventHandler
@@ -18,7 +25,41 @@ object PlayerConnectionListener : Listener {
1825
)
1926
trophyPlayerService.cachePlayer(player)
2027

21-
event.player.inventory.setItemInOffHand(player.selectedTrophy?.trophy?.item)
28+
player.selectedTrophy?.let {
29+
event.player.inventory.setItemInOffHand(it.trophy.item.apply {
30+
displayName {
31+
variableValue(it.trophy.name)
32+
}
33+
34+
buildLore {
35+
emptyLine()
36+
line {
37+
variableValue("Beschreibung:".toSmallCaps())
38+
}
39+
40+
line {
41+
note(it.trophy.description)
42+
}
43+
44+
emptyLine()
45+
46+
line {
47+
variableValue("Erhalten am:".toSmallCaps())
48+
}
49+
50+
line {
51+
note(
52+
dateTimeFormatter.format(
53+
ZonedDateTime.ofInstant(
54+
Instant.ofEpochMilli(it.receivedAt),
55+
ZoneId.of("Europe/Berlin")
56+
)
57+
)
58+
)
59+
}
60+
}
61+
})
62+
}
2263
}
2364
}
2465

0 commit comments

Comments
 (0)