| package li.cil.oc.integration.opencomputers | |
| import li.cil.oc.Constants | |
| import li.cil.oc.api | |
| import li.cil.oc.api.driver.EnvironmentProvider | |
| import li.cil.oc.api.network.EnvironmentHost | |
| import li.cil.oc.common | |
| import li.cil.oc.common.Slot | |
| import li.cil.oc.common.Tier | |
| import li.cil.oc.common.item.Delegator | |
| import li.cil.oc.server.component | |
| import net.minecraft.item.ItemStack | |
| object DriverDataCard extends Item { | |
| override def worksWith(stack: ItemStack) = isOneOf(stack, | |
| api.Items.get(Constants.ItemName.DataCardTier1), | |
| api.Items.get(Constants.ItemName.DataCardTier2), | |
| api.Items.get(Constants.ItemName.DataCardTier3)) | |
| override def createEnvironment(stack: ItemStack, host: EnvironmentHost) = | |
| if (host.world != null && host.world.isRemote) null | |
| else tier(stack) match { | |
| case Tier.One => new component.DataCard.Tier1() | |
| case Tier.Two => new component.DataCard.Tier2() | |
| case Tier.Three => new component.DataCard.Tier3() | |
| case _ => null | |
| } | |
| override def slot(stack: ItemStack) = Slot.Card | |
| override def tier(stack: ItemStack) = | |
| Delegator.subItem(stack) match { | |
| case Some(data: common.item.DataCard) => data.tier | |
| case _ => Tier.One | |
| } | |
| object Provider extends EnvironmentProvider { | |
| override def getEnvironment(stack: ItemStack): Class[_] = | |
| if (worksWith(stack)) tier(stack) match { | |
| case Tier.One => classOf[component.DataCard.Tier1] | |
| case Tier.Two => classOf[component.DataCard.Tier2] | |
| case Tier.Three => classOf[component.DataCard.Tier3] | |
| case _ => null | |
| } | |
| else null | |
| } | |
| } |