@@ -6,6 +6,7 @@ import com.github.benmanes.caffeine.cache.Caffeine
66import com.github.shynixn.mccoroutine.folia.launch
77import com.sksamuel.aedile.core.expireAfterWrite
88import dev.slne.surf.api.core.font.toSmallCaps
9+ import dev.slne.surf.api.core.messages.adventure.buildText
910import dev.slne.surf.api.core.messages.adventure.clickOpensUrl
1011import dev.slne.surf.api.core.messages.adventure.playSound
1112import dev.slne.surf.api.core.messages.adventure.sendText
@@ -15,8 +16,11 @@ import dev.slne.surf.api.paper.builder.displayName
1516import dev.slne.surf.api.paper.inventory.framework.dsl.onItemClick
1617import dev.slne.surf.api.paper.inventory.framework.dsl.openForPlayer
1718import dev.slne.surf.api.paper.inventory.framework.dsl.slot
18- import dev.slne.surf.api.paper.inventory.framework.view.*
19+ import dev.slne.surf.api.paper.inventory.framework.view.layoutTarget
20+ import dev.slne.surf.api.paper.inventory.framework.view.onFirstRender
21+ import dev.slne.surf.api.paper.inventory.framework.view.paginatedSurfView
1922import dev.slne.surf.api.paper.inventory.framework.view.pagination.pagination
23+ import dev.slne.surf.api.paper.inventory.framework.view.settings
2024import dev.slne.surf.api.paper.inventory.framework.view.settings.PaginationViewRows
2125import dev.slne.surf.core.api.common.SurfCoreApi
2226import dev.slne.surf.core.api.common.server.state.SurfServerState
@@ -26,93 +30,87 @@ import dev.slne.surf.lobby.event.eventServerBridge
2630import dev.slne.surf.lobby.lobbyConfig
2731import dev.slne.surf.lobby.plugin
2832import dev.slne.surf.lobby.utils.Locations
33+ import me.devnatan.inventoryframework.View
34+ import me.devnatan.inventoryframework.ViewConfigBuilder
35+ import me.devnatan.inventoryframework.context.RenderContext
2936import org.bukkit.Material
3037import org.bukkit.Sound
3138import org.bukkit.inventory.ItemType
3239import java.util.*
3340import kotlin.time.Duration.Companion.minutes
3441
35- private val connectingPlayers =
36- Caffeine .newBuilder().expireAfterWrite(5 .minutes).build<UUID , Long >()
37-
38- fun navigatorView () = surfView(" <shift:-48><glyph:server_selector>" ) {
39- settings {
40- rows(6 )
41- cancelAllInteractions()
42+ object NavigatorInventory : View() {
43+ override fun onInit (config : ViewConfigBuilder ) {
44+ config.size(6 ).cancelInteractions().layout(
45+ " ASSSAEEEA" ,
46+ " ASSSAEEEA" ,
47+ " ASSSAEEEA" ,
48+ " AAAAAAAAA" ,
49+ " LLPPARRCC" ,
50+ " LLPPARRCC"
51+ ).title(buildText {
52+ text(" <shift:-48><glyph:server_selector>" )
53+ })
4254 }
4355
44- onFirstRender {
45- slot(2 , 2 ) {
46- withItem(survivalServerItem)
47- onClick { click ->
48- val player = click.player
49- player.teleportAsync(Locations .SURVIVAL_TELEPORT .getLocation()).thenRun {
50- player.playSound(true ) {
51- type(Sound .ENTITY_ENDERMAN_TELEPORT )
52- pitch(2.0f )
53- }
56+ override fun onFirstRender (render : RenderContext ) {
57+ render.layoutSlot(' S' ).withItem(survivalServerItem).onClick { click ->
58+ val player = click.player
59+ player.teleportAsync(Locations .SURVIVAL_TELEPORT .getLocation()).thenRun {
60+ player.playSound(true ) {
61+ type(Sound .ENTITY_ENDERMAN_TELEPORT )
62+ pitch(2.0f )
5463 }
55- player.closeInventory()
5664 }
65+ player.closeInventory()
5766 }
5867
59- slot(6 , 2 ) {
60- withItem(eventServerItem)
61- onClick { click ->
62- val player = click.player
63- player.teleportAsync(Locations .EVENT_TELEPORT .getLocation()).thenRun {
64- player.playSound(true ) {
65- type(Sound .ENTITY_ENDERMAN_TELEPORT )
66- pitch(2.0f )
67- }
68+ render.layoutSlot(' E' ).withItem(eventServerItem).onClick { click ->
69+ val player = click.player
70+ player.teleportAsync(Locations .EVENT_TELEPORT .getLocation()).thenRun {
71+ player.playSound(true ) {
72+ type(Sound .ENTITY_ENDERMAN_TELEPORT )
73+ pitch(2.0f )
6874 }
69- player.closeInventory()
7075 }
76+ player.closeInventory()
7177 }
7278
73- slot(1 , 5 ) {
74- withItem(lobbySelectorItem)
75- onClick { click ->
76- click.openForPlayer(lobbySelectorView())
77- }
79+ render.layoutSlot(' L' ).withItem(lobbySelectorItem).onClick { click ->
80+ click.openForPlayer(lobbySelectorView())
7881 }
7982
80- slot(3 , 5 ) {
81- withItem(spawnItem)
82- onClick { click ->
83- val player = click.player
84- player.closeInventory()
85- player.teleportAsync(lobbyConfig.spawnPoint.toLocation()).thenRun {
86- player.sendText {
87- appendInfoPrefix()
88- info(" Du wurdest zum Spawn teleportiert." )
89- }
83+ render.layoutSlot(' P' ).withItem(spawnItem).onClick { click ->
84+ val player = click.player
85+ player.closeInventory()
86+ player.teleportAsync(lobbyConfig.spawnPoint.toLocation()).thenRun {
87+ player.sendText {
88+ appendInfoPrefix()
89+ info(" Du wurdest zum Spawn teleportiert." )
9090 }
9191 }
9292 }
9393
94- slot(6 , 5 ) {
95- withItem(rulesItem)
96- onClick { click ->
97- val player = click.player
98- player.closeInventory()
99- player.sendText {
100- appendInfoPrefix()
101- info(" Das Regelwerk findest du hier: " )
102- append {
103- variableValue(" server.castcrafter.de/rules" )
104- clickOpensUrl(" https://server.castcrafter.de/rules" )
105- }
94+ render.layoutSlot(' R' ).withItem(rulesItem).onClick { click ->
95+ val player = click.player
96+ player.closeInventory()
97+ player.sendText {
98+ appendInfoPrefix()
99+ info(" Das Regelwerk findest du hier: " )
100+ append {
101+ variableValue(" server.castcrafter.de/rules" )
102+ clickOpensUrl(" https://server.castcrafter.de/rules" )
106103 }
107104 }
108105 }
109106
110- slot(8 , 5 ) {
111- withItem(cosmeticsItem)
112- }
107+ render.layoutSlot(' C' ).withItem(cosmeticsItem)
113108 }
114109}
115110
111+ private val connectingPlayers =
112+ Caffeine .newBuilder().expireAfterWrite(5 .minutes).build<UUID , Long >()
113+
116114fun lobbySelectorView () = paginatedSurfView(" Lobby Auswahl" ) {
117115 pagination {
118116 lazySource {
0 commit comments