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 }