blob: 4e3dbf1f773c2872d3c9a52def952c7eba1989bc (
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.screens.Screen
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.inventory.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 AbstractContainerScreen<*>) return mapOf()
if (lastScreen === this) return slotsByIndex
lastScreen = this
slotsByIndex = this.menu.slots.associate {
SlotIndex(it.containerSlot, it.container is Inventory) to it
}
return slotsByIndex
}
fun Screen.getSlotByIndex(index: Int, isPlayerInventory: Boolean): Slot? =
getSlotsByIndex()[SlotIndex(index, isPlayerInventory)]
}
|