summaryrefslogtreewikicommitdiff
path: root/bukkit/src/Inventory.kt
blob: 2a1d7ead4c069f1d0f2334cd3fd2d92f5682fafc (plain)
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
59
package cat.freya.khs.bukkit

import cat.freya.khs.player.Inventory as KhsInventory
import cat.freya.khs.player.PlayerInventory as KhsPlayerInventory
import cat.freya.khs.world.Item
import org.bukkit.inventory.Inventory as BukkitInventory
import org.bukkit.inventory.PlayerInventory as BukkitPlayerInventory

open class BukkitKhsInventory(
    open val shim: BukkitKhsShim,
    open val inner: BukkitInventory,
    open override val title: String?,
) : KhsInventory {
    override fun get(index: UInt): Item? = inner.getItem(index.toInt())?.let { toKhsItem(it) }

    override fun set(index: UInt, item: Item) =
        inner.setItem(index.toInt(), (item as BukkitKhsItem).inner)

    override fun remove(item: Item) = inner.remove((item as BukkitKhsItem).inner)

    override var contents: List<Item?>
        get() = inner.contents.map { toKhsItem(it) }
        set(contents: List<Item?>) =
            inner.setContents(contents.map { (it as BukkitKhsItem).inner }.toTypedArray())

    override fun clear() {
        inner.clear()
    }
}

class BukkitKhsPlayerInventory(
    override val shim: BukkitKhsShim,
    override val inner: BukkitPlayerInventory,
    override val title: String?,
) : BukkitKhsInventory(shim, inner, title), KhsPlayerInventory {
    override var helmet: Item?
        get() = toKhsItem(inner.helmet)
        set(item: Item?) {
            inner.helmet = (item as? BukkitKhsItem)?.inner
        }

    override var chestplate: Item?
        get() = toKhsItem(inner.chestplate)
        set(item: Item?) {
            inner.chestplate = (item as? BukkitKhsItem)?.inner
        }

    override var leggings: Item?
        get() = toKhsItem(inner.leggings)
        set(item: Item?) {
            inner.leggings = (item as? BukkitKhsItem)?.inner
        }

    override var boots: Item?
        get() = toKhsItem(inner.boots)
        set(item: Item?) {
            inner.boots = (item as? BukkitKhsItem)?.inner
        }
}