1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
package cat.freya.khs.inv
import cat.freya.khs.Khs
import cat.freya.khs.config.ItemConfig
import cat.freya.khs.game.Game
import cat.freya.khs.player.Inventory
import cat.freya.khs.player.Player
import cat.freya.khs.world.Item
const val TELEPORT_TITLE = "Teleport to players"
fun createPageItem(plugin: Khs, page: UInt): Item? {
val config = ItemConfig("Page ${page + 1u}", "ENCHANTED_BOOK")
return plugin.shim.parseItem(config)
}
fun createPlayerItem(plugin: Khs, player: Player): Item? {
val team = plugin.game.getTeam(player.uuid) ?: return null
val teamName =
when (team) {
Game.Team.HIDER -> plugin.locale.game.team.hider
Game.Team.SEEKER -> plugin.locale.game.team.seeker
else -> ""
}
val config =
ItemConfig(
name = player.name,
material = "PLAYER_HEAD",
owner = player.name,
lore = listOf(teamName),
)
return plugin.shim.parseItem(config)
}
fun createTeleportMenu(plugin: Khs, page: UInt): Inventory? {
val pageSize = 7u
val offset = pageSize * page
// make items
val players = (plugin.game.seekerPlayers + plugin.game.hiderPlayers)
val items =
players.drop(offset.toInt()).take(pageSize.toInt()).mapNotNull {
createPlayerItem(plugin, it)
}
val prev = if (page > 0u) createPageItem(plugin, page - 1u) else null
val next =
if (players.size.toUInt() > offset + pageSize) createPageItem(plugin, page + 1u) else null
// create inv
val inv = plugin.shim.createInventory(TELEPORT_TITLE, 9u) ?: return null
for ((i, item) in items.withIndex()) {
inv.set(i.toUInt() + 1u, item)
}
if (prev != null) inv.set(0u, prev)
if (next != null) inv.set(8u, next)
return inv
}
|