49 lines
1.2 KiB
Kotlin
49 lines
1.2 KiB
Kotlin
package net.shadowfacts.phycon.util
|
|
|
|
import net.minecraft.entity.player.PlayerEntity
|
|
import net.minecraft.inventory.Inventory
|
|
import net.minecraft.item.ItemStack
|
|
import net.minecraft.screen.slot.Slot
|
|
|
|
/**
|
|
* @author shadowfacts
|
|
*/
|
|
class GhostSlot(inv: net.shadowfacts.phycon.util.GhostInv, x: Int, y: Int): Slot(GhostInv(inv), 0, x, y) {
|
|
|
|
override fun canInsert(stack: ItemStack) = false
|
|
|
|
override fun setStack(itemStack: ItemStack?) {
|
|
}
|
|
|
|
override fun canTakeItems(player: PlayerEntity) = false
|
|
|
|
private class GhostInv(private val inv: net.shadowfacts.phycon.util.GhostInv): Inventory {
|
|
override fun clear() {
|
|
inv.ghostSlotStack = ItemStack.EMPTY
|
|
}
|
|
|
|
override fun size() = 1
|
|
|
|
override fun isEmpty() = inv.ghostSlotStack.isEmpty
|
|
|
|
override fun getStack(i: Int): ItemStack {
|
|
return if (i == 0) inv.ghostSlotStack
|
|
else ItemStack.EMPTY
|
|
}
|
|
|
|
override fun removeStack(i: Int, j: Int) = ItemStack.EMPTY
|
|
|
|
override fun removeStack(i: Int) = ItemStack.EMPTY
|
|
|
|
override fun setStack(i: Int, itemStack: ItemStack) {}
|
|
|
|
override fun markDirty() {}
|
|
|
|
override fun canPlayerUse(playerEntity: PlayerEntity?) = true
|
|
}
|
|
}
|
|
|
|
interface GhostInv {
|
|
var ghostSlotStack: ItemStack
|
|
}
|