diff --git a/src/main/scala/li/cil/oc/common/Proxy.scala b/src/main/scala/li/cil/oc/common/Proxy.scala index 4641909f3..f6e91caf9 100644 --- a/src/main/scala/li/cil/oc/common/Proxy.scala +++ b/src/main/scala/li/cil/oc/common/Proxy.scala @@ -83,6 +83,7 @@ class Proxy { api.Driver.add(driver.item.Keyboard) api.Driver.add(driver.item.RedstoneCard) api.Driver.add(driver.item.Screen) + api.Driver.add(driver.item.Tablet) api.Driver.add(driver.item.UpgradeAngel) api.Driver.add(driver.item.UpgradeBattery) api.Driver.add(driver.item.UpgradeChunkloader) diff --git a/src/main/scala/li/cil/oc/server/driver/item/Tablet.scala b/src/main/scala/li/cil/oc/server/driver/item/Tablet.scala new file mode 100644 index 000000000..809e14785 --- /dev/null +++ b/src/main/scala/li/cil/oc/server/driver/item/Tablet.scala @@ -0,0 +1,32 @@ +package li.cil.oc.server.driver.item + +import li.cil.oc.api.driver.{Container, Slot} +import li.cil.oc.util.ItemUtils +import li.cil.oc.{Settings, api} +import net.minecraft.item.ItemStack +import net.minecraft.nbt.NBTTagCompound + +object Tablet extends Item { + override def worksWith(stack: ItemStack) = isOneOf(stack, api.Items.get("tablet")) + + override def createEnvironment(stack: ItemStack, container: Container) = { + val data = new ItemUtils.TabletData(stack) + data.items.collect { + case Some(fs) if FileSystem.worksWith(fs) => fs + }.headOption.map(FileSystem.createEnvironment(_, container)).orNull + } + + override def slot(stack: ItemStack) = Slot.Disk + + override def dataTag(stack: ItemStack) = { + val data = new ItemUtils.TabletData(stack) + val index = data.items.indexWhere { + case Some(fs) => FileSystem.worksWith(fs) + case _ => false + } + if (index >= 0 && stack.hasTagCompound && stack.getTagCompound.hasKey(Settings.namespace + "items")) { + stack.getTagCompound.getTagList(Settings.namespace + "items").tagAt(index).asInstanceOf[NBTTagCompound].getCompoundTag("tag") + } + else new NBTTagCompound() + } +}