| package li.cil.oc.common.container |
| |
| import li.cil.oc.api |
| import li.cil.oc.common.InventorySlots.Tier |
| import net.minecraft.entity.player.EntityPlayer |
| import net.minecraft.inventory.Slot |
| import net.minecraft.item.ItemStack |
| import net.minecraft.util.IIcon |
| import scala.collection.convert.WrapAsScala._ |
| import cpw.mods.fml.relauncher.{SideOnly, Side} |
| |
| trait ComponentSlot extends Slot { |
| def container: Player |
| |
| def slot: api.driver.Slot |
| |
| def tier: Int |
| |
| def tierIcon: IIcon |
| |
| // ----------------------------------------------------------------------- // |
| |
| @SideOnly(Side.CLIENT) |
| override def func_111238_b() = tier != Tier.None && super.func_111238_b() |
| |
| override def isItemValid(stack: ItemStack) = inventory.isItemValidForSlot(getSlotIndex, stack) |
| |
| override def onPickupFromSlot(player: EntityPlayer, stack: ItemStack) { |
| super.onPickupFromSlot(player, stack) |
| for (slot <- container.inventorySlots) slot match { |
| case dynamic: ComponentSlot => dynamic.clearIfInvalid(player) |
| case _ => |
| } |
| } |
| |
| override def onSlotChanged() { |
| super.onSlotChanged() |
| for (slot <- container.inventorySlots) slot match { |
| case dynamic: ComponentSlot => dynamic.clearIfInvalid(container.playerInventory.player) |
| case _ => |
| } |
| } |
| |
| protected def clearIfInvalid(player: EntityPlayer) {} |
| } |