PhysicalConnectivity/src/main/kotlin/net/shadowfacts/phycon/util/GhostSlot.kt

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
}