blob: b7ff97971c68787c8a2b18c45b78515f4b57df2a [file] [log] [blame] [raw]
package li.cil.oc.common.item
import java.util
import com.google.common.base.Strings
import cpw.mods.fml.relauncher.Side
import cpw.mods.fml.relauncher.SideOnly
import li.cil.oc.api
import li.cil.oc.common.item.data.NanomachineData
import li.cil.oc.common.nanomachines.ControllerImpl
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.EnumAction
import net.minecraft.item.EnumRarity
import net.minecraft.item.ItemStack
import net.minecraft.world.World
class Nanomachines(val parent: Delegator) extends traits.Delegate {
override def rarity(stack: ItemStack): EnumRarity = EnumRarity.uncommon
@SideOnly(Side.CLIENT)
override def tooltipLines(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean): Unit = {
super.tooltipLines(stack, player, tooltip, advanced)
if (stack.hasTagCompound) {
val data = new NanomachineData(stack)
if (!Strings.isNullOrEmpty(data.uuid)) {
tooltip.add("§8" + data.uuid.substring(0, 13) + "...§7")
}
}
}
override def onItemRightClick(stack: ItemStack, world: World, player: EntityPlayer): ItemStack = {
player.setItemInUse(stack, getMaxItemUseDuration(stack))
stack
}
override def getItemUseAction(stack: ItemStack): EnumAction = EnumAction.eat
override def getMaxItemUseDuration(stack: ItemStack): Int = 32
override def onEaten(stack: ItemStack, world: World, player: EntityPlayer): ItemStack = {
if (!world.isRemote) {
val data = new NanomachineData(stack)
// Re-install to get new address, make sure we're configured.
api.Nanomachines.uninstallController(player)
api.Nanomachines.installController(player) match {
case controller: ControllerImpl =>
data.configuration match {
case Some(nbt) =>
if (!Strings.isNullOrEmpty(data.uuid)) {
controller.uuid = data.uuid
}
controller.configuration.load(nbt)
case _ => controller.reconfigure()
}
case controller => controller.reconfigure() // Huh.
}
}
stack.stackSize -= 1
if (stack.stackSize > 0) stack
else null
}
}