blob: 36feb6bf5a1dac369a1c5b63e211b32da695f131 (
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
|
package moe.nea.firmament.util.mc
import net.minecraft.client.gui.screen.Screen
import net.minecraft.client.gui.screen.ingame.HandledScreen
import net.minecraft.entity.player.PlayerInventory
import net.minecraft.screen.slot.Slot
object ScreenUtil {
private var lastScreen: Screen? = null
private var slotsByIndex: Map<SlotIndex, Slot> = mapOf()
data class SlotIndex(val index: Int, val isPlayerInventory: Boolean)
fun Screen.getSlotsByIndex(): Map<SlotIndex, Slot> {
if (this !is HandledScreen<*>) return mapOf()
if (lastScreen === this) return slotsByIndex
lastScreen = this
slotsByIndex = this.screenHandler.slots.associate {
SlotIndex(it.index, it.inventory is PlayerInventory) to it
}
return slotsByIndex
}
fun Screen.getSlotByIndex( index: Int, isPlayerInventory: Boolean): Slot? =
getSlotsByIndex()[SlotIndex(index, isPlayerInventory)]
}
|