blob: de5f719e0ffff3bf8ee9e007d675b6f2e7c7de9e [file] [log] [blame] [raw]
package li.cil.oc.common.container
import li.cil.oc.common.tileentity
import net.minecraft.entity.player.{EntityPlayer, InventoryPlayer}
import net.minecraft.inventory.Slot
import net.minecraft.item.ItemStack
class Adapter(playerInventory: InventoryPlayer, adapter: tileentity.Adapter) extends Player(playerInventory, adapter) {
addSlotToContainer(new ComponentSlot(otherInventory, 0, 80, 35) {
override def decrStackSize(amount: Int) = {
val stack = super.decrStackSize(math.max(amount, 1))
if (stack == null || stack.stackSize < 1) null
else stack
}
})
addPlayerInventorySlots(8, 84)
override def slotClick(index: Int, mouseClick: Int, holdingShift: Int, player: EntityPlayer) = {
if (index == 0) clearIfNecessary(player.inventory.getItemStack)
super.slotClick(index, mouseClick, holdingShift, player)
}
override protected def tryTransferStackInSlot(from: Slot, offset: Int, length: Int, intoPlayerInventory: Boolean) = {
if (!intoPlayerInventory) clearIfNecessary(from.getStack)
super.tryTransferStackInSlot(from, offset, length, intoPlayerInventory)
}
private def clearIfNecessary(stack: ItemStack) {
inventorySlots.get(0) match {
case slot: Slot if stack == null || slot.isItemValid(stack) => slot.putStack(null)
case _ =>
}
}
}