Coloring tooltips of devices according to their tier now (robots, mcus, drones).

Added creative drone and mcu case.
Added preconfigured robot, mcu and drone to creative tab (mcu and drone still need a programmed EEPROM to be put in).
This commit is contained in:
Florian Nücke 2015-01-11 16:01:35 +01:00
parent b13f319018
commit 7bbed622f9
26 changed files with 248 additions and 37 deletions

Binary file not shown.

View File

@ -57,6 +57,7 @@ item.oc.Disk.name=Disk Platter
item.oc.Drone.name=Drone item.oc.Drone.name=Drone
item.oc.DroneCase0.name=Drone Case (Tier 1) item.oc.DroneCase0.name=Drone Case (Tier 1)
item.oc.DroneCase1.name=Drone Case (Tier 2) item.oc.DroneCase1.name=Drone Case (Tier 2)
item.oc.DroneCase3.name=Drone Case (Creative)
item.oc.eeprom.name=EEPROM item.oc.eeprom.name=EEPROM
item.oc.FloppyDisk.name=Floppy Disk item.oc.FloppyDisk.name=Floppy Disk
item.oc.GraphicsCard0.name=Graphics Card (Tier 1) item.oc.GraphicsCard0.name=Graphics Card (Tier 1)
@ -80,6 +81,7 @@ item.oc.Microchip1.name=Microchip (Tier 2)
item.oc.Microchip2.name=Microchip (Tier 3) item.oc.Microchip2.name=Microchip (Tier 3)
item.oc.MicrocontrollerCase0.name=Microcontroller Case (Tier 1) item.oc.MicrocontrollerCase0.name=Microcontroller Case (Tier 1)
item.oc.MicrocontrollerCase1.name=Microcontroller Case (Tier 2) item.oc.MicrocontrollerCase1.name=Microcontroller Case (Tier 2)
item.oc.MicrocontrollerCase3.name=Microcontroller Case (Creative)
item.oc.NetworkCard.name=Network Card item.oc.NetworkCard.name=Network Card
item.oc.NumPad.name=Numeric Keypad item.oc.NumPad.name=Numeric Keypad
item.oc.Present.name=A little something... item.oc.Present.name=A little something...

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 B

View File

@ -11,10 +11,10 @@ import li.cil.oc.common.tileentity
import li.cil.oc.integration.util.Wrench import li.cil.oc.integration.util.Wrench
import li.cil.oc.util.BlockPosition import li.cil.oc.util.BlockPosition
import li.cil.oc.util.Color import li.cil.oc.util.Color
import li.cil.oc.util.Rarity
import li.cil.oc.util.Tooltip import li.cil.oc.util.Tooltip
import net.minecraft.client.renderer.texture.IIconRegister import net.minecraft.client.renderer.texture.IIconRegister
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.EnumRarity
import net.minecraft.item.ItemStack import net.minecraft.item.ItemStack
import net.minecraft.util.IIcon import net.minecraft.util.IIcon
import net.minecraft.world.IBlockAccess import net.minecraft.world.IBlockAccess
@ -56,7 +56,7 @@ class Case(val tier: Int) extends RedstoneAware with traits.PowerAcceptor with t
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
override def rarity = Array(EnumRarity.common, EnumRarity.uncommon, EnumRarity.rare, EnumRarity.epic).apply(tier) override def rarity(stack: ItemStack) = Rarity.byTier(tier)
override protected def tooltipBody(metadata: Int, stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) { override protected def tooltipBody(metadata: Int, stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
tooltip.addAll(Tooltip.get(getClass.getSimpleName, slots)) tooltip.addAll(Tooltip.get(getClass.getSimpleName, slots))

View File

@ -5,9 +5,9 @@ import java.util
import cpw.mods.fml.relauncher.Side import cpw.mods.fml.relauncher.Side
import cpw.mods.fml.relauncher.SideOnly import cpw.mods.fml.relauncher.SideOnly
import li.cil.oc.common.tileentity import li.cil.oc.common.tileentity
import li.cil.oc.util.Rarity
import li.cil.oc.util.Tooltip import li.cil.oc.util.Tooltip
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.EnumRarity
import net.minecraft.item.ItemStack import net.minecraft.item.ItemStack
import net.minecraft.world.IBlockAccess import net.minecraft.world.IBlockAccess
import net.minecraft.world.World import net.minecraft.world.World
@ -37,7 +37,7 @@ class Hologram(val tier: Int) extends SimpleBlock with traits.SpecialBlock {
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
override def rarity = Array(EnumRarity.uncommon, EnumRarity.rare).apply(tier) override def rarity(stack: ItemStack) = Rarity.byTier(tier)
override protected def tooltipBody(metadata: Int, stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) { override protected def tooltipBody(metadata: Int, stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
tooltip.addAll(Tooltip.get(getClass.getSimpleName + tier)) tooltip.addAll(Tooltip.get(getClass.getSimpleName + tier))

View File

@ -42,7 +42,7 @@ class Item(value: Block) extends ItemBlock(value) {
} }
override def getRarity(stack: ItemStack) = block match { override def getRarity(stack: ItemStack) = block match {
case simple: SimpleBlock => simple.rarity case simple: SimpleBlock => simple.rarity(stack)
case _ => EnumRarity.common case _ => EnumRarity.common
} }

View File

@ -10,6 +10,7 @@ import li.cil.oc.integration.util.NEI
import li.cil.oc.integration.util.Wrench import li.cil.oc.integration.util.Wrench
import li.cil.oc.util.BlockPosition import li.cil.oc.util.BlockPosition
import li.cil.oc.util.ItemUtils import li.cil.oc.util.ItemUtils
import li.cil.oc.util.Rarity
import net.minecraft.entity.EntityLivingBase import net.minecraft.entity.EntityLivingBase
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack import net.minecraft.item.ItemStack
@ -55,6 +56,11 @@ class Microcontroller extends RedstoneAware with traits.PowerAcceptor with trait
} }
} }
override def rarity(stack: ItemStack) = {
val data = new ItemUtils.MicrocontrollerData(stack)
Rarity.byTier(data.tier)
}
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
override def energyThroughput = Settings.get.caseRate(Tier.One) override def energyThroughput = Settings.get.caseRate(Tier.One)

View File

@ -8,9 +8,11 @@ import li.cil.oc.Settings
import li.cil.oc.api import li.cil.oc.api
import li.cil.oc.common.tileentity import li.cil.oc.common.tileentity
import li.cil.oc.integration.util.NEI import li.cil.oc.integration.util.NEI
import li.cil.oc.util.ItemUtils
import li.cil.oc.util.Rarity
import net.minecraft.client.renderer.texture.IIconRegister import net.minecraft.client.renderer.texture.IIconRegister
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.EnumRarity import net.minecraft.item.ItemStack
import net.minecraft.util.IIcon import net.minecraft.util.IIcon
import net.minecraft.util.MovingObjectPosition import net.minecraft.util.MovingObjectPosition
import net.minecraft.world.IBlockAccess import net.minecraft.world.IBlockAccess
@ -47,7 +49,10 @@ class RobotAfterimage extends SimpleBlock with traits.SpecialBlock {
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
override def rarity = EnumRarity.epic override def rarity(stack: ItemStack) = {
val data = new ItemUtils.RobotData(stack)
Rarity.byTier(data.tier)
}
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //

View File

@ -14,12 +14,12 @@ import li.cil.oc.integration.util.NEI
import li.cil.oc.server.PacketSender import li.cil.oc.server.PacketSender
import li.cil.oc.server.component.robot import li.cil.oc.server.component.robot
import li.cil.oc.util.ItemUtils import li.cil.oc.util.ItemUtils
import li.cil.oc.util.Rarity
import li.cil.oc.util.Tooltip import li.cil.oc.util.Tooltip
import net.minecraft.client.renderer.texture.IIconRegister import net.minecraft.client.renderer.texture.IIconRegister
import net.minecraft.entity.Entity import net.minecraft.entity.Entity
import net.minecraft.entity.EntityLivingBase import net.minecraft.entity.EntityLivingBase
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.EnumRarity
import net.minecraft.item.ItemStack import net.minecraft.item.ItemStack
import net.minecraft.util.AxisAlignedBB import net.minecraft.util.AxisAlignedBB
import net.minecraft.util.IIcon import net.minecraft.util.IIcon
@ -65,7 +65,10 @@ class RobotProxy extends RedstoneAware with traits.SpecialBlock with traits.Stat
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
override def rarity = EnumRarity.epic override def rarity(stack: ItemStack) = {
val data = new ItemUtils.RobotData(stack)
Rarity.byTier(data.tier)
}
override protected def tooltipHead(metadata: Int, stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) { override protected def tooltipHead(metadata: Int, stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
super.tooltipHead(metadata, stack, player, tooltip, advanced) super.tooltipHead(metadata, stack, player, tooltip, advanced)

View File

@ -9,16 +9,12 @@ import li.cil.oc.Settings
import li.cil.oc.common.GuiType import li.cil.oc.common.GuiType
import li.cil.oc.common.tileentity import li.cil.oc.common.tileentity
import li.cil.oc.integration.util.Wrench import li.cil.oc.integration.util.Wrench
import li.cil.oc.util.BlockPosition import li.cil.oc.util._
import li.cil.oc.util.Color
import li.cil.oc.util.PackedColor
import li.cil.oc.util.Tooltip
import net.minecraft.client.renderer.texture.IIconRegister import net.minecraft.client.renderer.texture.IIconRegister
import net.minecraft.entity.Entity import net.minecraft.entity.Entity
import net.minecraft.entity.EntityLivingBase import net.minecraft.entity.EntityLivingBase
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
import net.minecraft.entity.projectile.EntityArrow import net.minecraft.entity.projectile.EntityArrow
import net.minecraft.item.EnumRarity
import net.minecraft.item.ItemStack import net.minecraft.item.ItemStack
import net.minecraft.util.IIcon import net.minecraft.util.IIcon
import net.minecraft.world.IBlockAccess import net.minecraft.world.IBlockAccess
@ -33,7 +29,7 @@ class Screen(val tier: Int) extends RedstoneAware {
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
override def rarity = Array(EnumRarity.common, EnumRarity.uncommon, EnumRarity.rare).apply(tier) override def rarity(stack: ItemStack) = Rarity.byTier(tier)
override protected def tooltipBody(metadata: Int, stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) { override protected def tooltipBody(metadata: Int, stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
val (w, h) = Settings.screenResolutionsByTier(tier) val (w, h) = Settings.screenResolutionsByTier(tier)

View File

@ -97,7 +97,7 @@ class SimpleBlock(material: Material = Material.iron) extends Block(material) {
// ItemBlock // ItemBlock
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
def rarity = EnumRarity.common def rarity(stack: ItemStack) = EnumRarity.common
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
def addInformation(metadata: Int, stack: ItemStack, player: EntityPlayer, tooltip: java.util.List[String], advanced: Boolean) { def addInformation(metadata: Int, stack: ItemStack, player: EntityPlayer, tooltip: java.util.List[String], advanced: Boolean) {

View File

@ -15,6 +15,7 @@ import li.cil.oc.common.item.UpgradeLeash
import li.cil.oc.common.recipe.Recipes import li.cil.oc.common.recipe.Recipes
import li.cil.oc.integration.Mods import li.cil.oc.integration.Mods
import li.cil.oc.util.Color import li.cil.oc.util.Color
import li.cil.oc.util.ItemUtils
import net.minecraft.block.Block import net.minecraft.block.Block
import net.minecraft.creativetab.CreativeTabs import net.minecraft.creativetab.CreativeTabs
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
@ -139,6 +140,98 @@ object Items extends ItemAPI {
stack stack
} }
def createConfiguredDrone() = {
val data = new ItemUtils.MicrocontrollerData()
data.tier = Tier.Four
data.storedEnergy = Settings.get.bufferDrone.toInt
data.components = Array(
get("inventoryUpgrade").createItemStack(1),
get("inventoryUpgrade").createItemStack(1),
get("inventoryControllerUpgrade").createItemStack(1),
get("tankUpgrade").createItemStack(1),
get("tankControllerUpgrade").createItemStack(1),
get("wlanCard").createItemStack(1),
get("cpu3").createItemStack(1),
get("ram6").createItemStack(1),
get("ram6").createItemStack(1)
)
val stack = get("drone").createItemStack(1)
data.save(stack)
stack
}
def createConfiguredMicrocontroller() = {
val data = new ItemUtils.MicrocontrollerData()
data.tier = Tier.Four
data.storedEnergy = Settings.get.bufferMicrocontroller.toInt
data.components = Array(
get("signUpgrade").createItemStack(1),
get("pistonUpgrade").createItemStack(1),
get("redstoneCard2").createItemStack(1),
get("wlanCard").createItemStack(1),
get("cpu3").createItemStack(1),
get("ram6").createItemStack(1),
get("ram6").createItemStack(1)
)
val stack = get("microcontroller").createItemStack(1)
data.save(stack)
stack
}
def createConfiguredRobot() = {
val data = new ItemUtils.RobotData()
data.name = "Creatix"
data.tier = Tier.Four
data.robotEnergy = Settings.get.bufferRobot.toInt
data.totalEnergy = data.robotEnergy
data.components = Array(
get("screen1").createItemStack(1),
get("keyboard").createItemStack(1),
get("inventoryUpgrade").createItemStack(1),
get("inventoryUpgrade").createItemStack(1),
get("inventoryUpgrade").createItemStack(1),
get("inventoryUpgrade").createItemStack(1),
get("inventoryControllerUpgrade").createItemStack(1),
get("tankUpgrade").createItemStack(1),
get("tankControllerUpgrade").createItemStack(1),
get("craftingUpgrade").createItemStack(1),
get("graphicsCard3").createItemStack(1),
get("redstoneCard2").createItemStack(1),
get("wlanCard").createItemStack(1),
get("internetCard").createItemStack(1),
get("cpu3").createItemStack(1),
get("ram6").createItemStack(1),
get("ram6").createItemStack(1),
createLuaBios(),
createOpenOS(),
get("hdd3").createItemStack(1)
)
data.containers = Array(
get("cardContainer3").createItemStack(1),
get("upgradeContainer3").createItemStack(1),
get("upgradeContainer3").createItemStack(1)
)
val stack = get("robot").createItemStack(1)
data.save(stack)
stack
}
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
var multi: item.Delegator = _ var multi: item.Delegator = _
@ -149,13 +242,20 @@ object Items extends ItemAPI {
def init() { def init() {
multi = new item.Delegator() { multi = new item.Delegator() {
lazy val configuredItems = Array(
createOpenOS(),
createLuaBios(),
createConfiguredDrone(),
createConfiguredMicrocontroller(),
createConfiguredRobot()
)
override def getSubItems(item: Item, tab: CreativeTabs, list: java.util.List[_]) { override def getSubItems(item: Item, tab: CreativeTabs, list: java.util.List[_]) {
// Workaround for MC's untyped lists... // Workaround for MC's untyped lists...
def add[T](list: java.util.List[T], value: Any) = list.add(value.asInstanceOf[T]) def add[T](list: java.util.List[T], value: Any) = list.add(value.asInstanceOf[T])
super.getSubItems(item, tab, list) super.getSubItems(item, tab, list)
Loot.worldDisks.values.foreach(entry => add(list, entry._1)) Loot.worldDisks.values.foreach(entry => add(list, entry._1))
add(list, createOpenOS()) configuredItems.foreach(add(list, _))
add(list, createLuaBios())
} }
} }
@ -323,5 +423,9 @@ object Items extends ItemAPI {
if (Mods.Galacticraft.isAvailable) { if (Mods.Galacticraft.isAvailable) {
Recipes.addMultiItem(worldSensorCard, "worldSensorCard", "oc:worldSensorCard") Recipes.addMultiItem(worldSensorCard, "worldSensorCard", "oc:worldSensorCard")
} }
// 1.4.4
registerItem(new item.MicrocontrollerCase(multi, Tier.Four), "microcontrollerCaseCreative")
registerItem(new item.DroneCase(multi, Tier.Four), "droneCaseCreative")
} }
} }

View File

@ -60,15 +60,13 @@ trait Delegate {
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
def rarity = Rarity.byTier(tierFromDriver) def rarity(stack: ItemStack) = Rarity.byTier(tierFromDriver(stack))
protected def tierFromDriver = { protected def tierFromDriver(stack: ItemStack) =
val stack = createItemStack()
api.Driver.driverFor(stack) match { api.Driver.driverFor(stack) match {
case driver: api.driver.Item => driver.tier(stack) case driver: api.driver.Item => driver.tier(stack)
case _ => 0 case _ => 0
} }
}
def color(stack: ItemStack, pass: Int) = 0xFFFFFF def color(stack: ItemStack, pass: Int) = 0xFFFFFF

View File

@ -83,7 +83,7 @@ class Delegator extends Item {
override def isBookEnchantable(itemA: ItemStack, itemB: ItemStack): Boolean = false override def isBookEnchantable(itemA: ItemStack, itemB: ItemStack): Boolean = false
override def getRarity(stack: ItemStack) = subItem(stack) match { override def getRarity(stack: ItemStack) = subItem(stack) match {
case Some(subItem) => subItem.rarity case Some(subItem) => subItem.rarity(stack)
case _ => EnumRarity.common case _ => EnumRarity.common
} }

View File

@ -9,6 +9,7 @@ import li.cil.oc.common.entity
import li.cil.oc.integration.util.NEI import li.cil.oc.integration.util.NEI
import li.cil.oc.util.BlockPosition import li.cil.oc.util.BlockPosition
import li.cil.oc.util.ItemUtils import li.cil.oc.util.ItemUtils
import li.cil.oc.util.Rarity
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack import net.minecraft.item.ItemStack
@ -24,6 +25,11 @@ class Drone(val parent: Delegator) extends Delegate {
} }
} }
override def rarity(stack: ItemStack) = {
val data = new ItemUtils.MicrocontrollerData(stack)
Rarity.byTier(data.tier)
}
override def onItemUse(stack: ItemStack, player: EntityPlayer, position: BlockPosition, side: Int, hitX: Float, hitY: Float, hitZ: Float) = { override def onItemUse(stack: ItemStack, player: EntityPlayer, position: BlockPosition, side: Int, hitX: Float, hitY: Float, hitZ: Float) = {
val world = position.world.get val world = position.world.get
if (!world.isRemote) { if (!world.isRemote) {

View File

@ -1,9 +1,11 @@
package li.cil.oc.common.item package li.cil.oc.common.item
import net.minecraft.item.ItemStack
class DroneCase(val parent: Delegator, val tier: Int) extends Delegate with ItemTier { class DroneCase(val parent: Delegator, val tier: Int) extends Delegate with ItemTier {
override val unlocalizedName = super.unlocalizedName + tier override val unlocalizedName = super.unlocalizedName + tier
override protected def tierFromDriver = tier override protected def tierFromDriver(stack: ItemStack) = tier
override protected def tooltipName = Option(super.unlocalizedName) override protected def tooltipName = Option(super.unlocalizedName)
} }

View File

@ -14,7 +14,7 @@ trait ItemTier extends Delegate {
override def tooltipLines(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) { override def tooltipLines(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
super.tooltipLines(stack, player, tooltip, advanced) super.tooltipLines(stack, player, tooltip, advanced)
if (advanced) { if (advanced) {
tooltip.add(Localization.Tooltip.Tier(tierFromDriver + 1)) tooltip.add(Localization.Tooltip.Tier(tierFromDriver(stack) + 1))
} }
} }
} }

View File

@ -1,11 +1,12 @@
package li.cil.oc.common.item package li.cil.oc.common.item
import li.cil.oc.util.Rarity import li.cil.oc.util.Rarity
import net.minecraft.item.ItemStack
class Microchip(val parent: Delegator, val tier: Int) extends Delegate { class Microchip(val parent: Delegator, val tier: Int) extends Delegate {
override val unlocalizedName = super.unlocalizedName + tier override val unlocalizedName = super.unlocalizedName + tier
override protected def tooltipName = Option(super.unlocalizedName) override protected def tooltipName = Option(super.unlocalizedName)
override def rarity = Rarity.byTier(tier) override def rarity(stack: ItemStack) = Rarity.byTier(tier)
} }

View File

@ -1,9 +1,11 @@
package li.cil.oc.common.item package li.cil.oc.common.item
import net.minecraft.item.ItemStack
class MicrocontrollerCase(val parent: Delegator, val tier: Int) extends Delegate with ItemTier { class MicrocontrollerCase(val parent: Delegator, val tier: Int) extends Delegate with ItemTier {
override val unlocalizedName = super.unlocalizedName + tier override val unlocalizedName = super.unlocalizedName + tier
override protected def tierFromDriver = tier override protected def tierFromDriver(stack: ItemStack) = tier
override protected def tooltipName = Option(super.unlocalizedName) override protected def tooltipName = Option(super.unlocalizedName)
} }

View File

@ -23,7 +23,7 @@ class Server(val parent: Delegator, val tier: Int) extends Delegate {
override protected def tooltipData = Seq(Settings.get.terminalsPerTier(math.min(Tier.Three, tier))) override protected def tooltipData = Seq(Settings.get.terminalsPerTier(math.min(Tier.Three, tier)))
override def rarity = Rarity.byTier(tier) override def rarity(stack: ItemStack) = Rarity.byTier(tier)
override def maxStackSize = 1 override def maxStackSize = 1

View File

@ -15,7 +15,7 @@ class UpgradeDatabase(val parent: Delegator, val tier: Int) extends Delegate wit
override protected def tooltipData = Seq(Settings.get.databaseEntriesPerTier(tier)) override protected def tooltipData = Seq(Settings.get.databaseEntriesPerTier(tier))
override def rarity = Rarity.byTier(tier) override def rarity(stack: ItemStack) = Rarity.byTier(tier)
override def onItemRightClick(stack: ItemStack, world: World, player: EntityPlayer) = { override def onItemRightClick(stack: ItemStack, world: World, player: EntityPlayer) = {
if (!player.isSneaking) { if (!player.isSneaking) {

View File

@ -23,6 +23,8 @@ object DroneTemplate extends Template {
def selectTier2(stack: ItemStack) = api.Items.get(stack) == api.Items.get("droneCase2") def selectTier2(stack: ItemStack) = api.Items.get(stack) == api.Items.get("droneCase2")
def selectTierCreative(stack: ItemStack) = api.Items.get(stack) == api.Items.get("droneCaseCreative")
def validate(inventory: IInventory): Array[AnyRef] = validateComputer(inventory) def validate(inventory: IInventory): Array[AnyRef] = validateComputer(inventory)
def assemble(inventory: IInventory) = { def assemble(inventory: IInventory) = {
@ -42,7 +44,9 @@ object DroneTemplate extends Template {
def disassemble(stack: ItemStack, ingredients: Array[ItemStack]) = { def disassemble(stack: ItemStack, ingredients: Array[ItemStack]) = {
val info = new ItemUtils.MicrocontrollerData(stack) val info = new ItemUtils.MicrocontrollerData(stack)
Array(api.Items.get("droneCase" + (info.tier + 1)).createItemStack(1)) ++ info.components val itemName = ItemUtils.caseNameWithTierSuffix("droneCase", info.tier)
Array(api.Items.get(itemName).createItemStack(1)) ++ info.components
} }
def register() { def register() {
@ -101,6 +105,40 @@ object DroneTemplate extends Template {
FMLInterModComms.sendMessage("OpenComputers", "registerAssemblerTemplate", nbt) FMLInterModComms.sendMessage("OpenComputers", "registerAssemblerTemplate", nbt)
} }
// Creative
{
val nbt = new NBTTagCompound()
nbt.setString("name", "Drone (Creative)")
nbt.setString("select", "li.cil.oc.common.template.DroneTemplate.selectTierCreative")
nbt.setString("validate", "li.cil.oc.common.template.DroneTemplate.validate")
nbt.setString("assemble", "li.cil.oc.common.template.DroneTemplate.assemble")
nbt.setString("hostClass", "li.cil.oc.api.internal.Drone")
val upgradeSlots = new NBTTagList()
upgradeSlots.appendTag(Map("tier" -> Tier.Three))
upgradeSlots.appendTag(Map("tier" -> Tier.Three))
upgradeSlots.appendTag(Map("tier" -> Tier.Three))
upgradeSlots.appendTag(Map("tier" -> Tier.Three))
upgradeSlots.appendTag(Map("tier" -> Tier.Three))
upgradeSlots.appendTag(Map("tier" -> Tier.Three))
upgradeSlots.appendTag(Map("tier" -> Tier.Three))
upgradeSlots.appendTag(Map("tier" -> Tier.Three))
upgradeSlots.appendTag(Map("tier" -> Tier.Three))
nbt.setTag("upgradeSlots", upgradeSlots)
val componentSlots = new NBTTagList()
componentSlots.appendTag(Map("type" -> Slot.Card, "tier" -> Tier.Three))
componentSlots.appendTag(Map("type" -> Slot.Card, "tier" -> Tier.Three))
componentSlots.appendTag(Map("type" -> Slot.Card, "tier" -> Tier.Three))
componentSlots.appendTag(Map("type" -> Slot.CPU, "tier" -> Tier.Three))
componentSlots.appendTag(Map("type" -> Slot.Memory, "tier" -> Tier.Three))
componentSlots.appendTag(Map("type" -> Slot.Memory, "tier" -> Tier.Three))
componentSlots.appendTag(Map("type" -> Slot.EEPROM, "tier" -> Tier.Any))
nbt.setTag("componentSlots", componentSlots)
FMLInterModComms.sendMessage("OpenComputers", "registerAssemblerTemplate", nbt)
}
// Disassembler // Disassembler
{ {
val nbt = new NBTTagCompound() val nbt = new NBTTagCompound()
@ -112,7 +150,10 @@ object DroneTemplate extends Template {
} }
} }
override protected def maxComplexity(inventory: IInventory) = if (caseTier(inventory) == Tier.Two) 8 else 5 override protected def maxComplexity(inventory: IInventory) =
if (caseTier(inventory) == Tier.Two) 8
else if (caseTier(inventory) == Tier.Four) 9001 // Creative
else 5
override protected def caseTier(inventory: IInventory) = ItemUtils.caseTier(inventory.getStackInSlot(0)) override protected def caseTier(inventory: IInventory) = ItemUtils.caseTier(inventory.getStackInSlot(0))
} }

View File

@ -23,6 +23,8 @@ object MicrocontrollerTemplate extends Template {
def selectTier2(stack: ItemStack) = api.Items.get(stack) == api.Items.get("microcontrollerCase2") def selectTier2(stack: ItemStack) = api.Items.get(stack) == api.Items.get("microcontrollerCase2")
def selectTierCreative(stack: ItemStack) = api.Items.get(stack) == api.Items.get("microcontrollerCaseCreative")
def validate(inventory: IInventory): Array[AnyRef] = validateComputer(inventory) def validate(inventory: IInventory): Array[AnyRef] = validateComputer(inventory)
def assemble(inventory: IInventory) = { def assemble(inventory: IInventory) = {
@ -42,7 +44,9 @@ object MicrocontrollerTemplate extends Template {
def disassemble(stack: ItemStack, ingredients: Array[ItemStack]) = { def disassemble(stack: ItemStack, ingredients: Array[ItemStack]) = {
val info = new ItemUtils.MicrocontrollerData(stack) val info = new ItemUtils.MicrocontrollerData(stack)
Array(api.Items.get("microcontrollerCase" + (info.tier + 1)).createItemStack(1)) ++ info.components val itemName = ItemUtils.caseNameWithTierSuffix("microcontrollerCase", info.tier)
Array(api.Items.get(itemName).createItemStack(1)) ++ info.components
} }
def register() { def register() {
@ -98,6 +102,40 @@ object MicrocontrollerTemplate extends Template {
FMLInterModComms.sendMessage("OpenComputers", "registerAssemblerTemplate", nbt) FMLInterModComms.sendMessage("OpenComputers", "registerAssemblerTemplate", nbt)
} }
// Creative
{
val nbt = new NBTTagCompound()
nbt.setString("name", "Microcontroller (Creative)")
nbt.setString("select", "li.cil.oc.common.template.MicrocontrollerTemplate.selectTierCreative")
nbt.setString("validate", "li.cil.oc.common.template.MicrocontrollerTemplate.validate")
nbt.setString("assemble", "li.cil.oc.common.template.MicrocontrollerTemplate.assemble")
nbt.setString("hostClass", "li.cil.oc.api.internal.Microcontroller")
val upgradeSlots = new NBTTagList()
upgradeSlots.appendTag(Map("tier" -> Tier.Three))
upgradeSlots.appendTag(Map("tier" -> Tier.Three))
upgradeSlots.appendTag(Map("tier" -> Tier.Three))
upgradeSlots.appendTag(Map("tier" -> Tier.Three))
upgradeSlots.appendTag(Map("tier" -> Tier.Three))
upgradeSlots.appendTag(Map("tier" -> Tier.Three))
upgradeSlots.appendTag(Map("tier" -> Tier.Three))
upgradeSlots.appendTag(Map("tier" -> Tier.Three))
upgradeSlots.appendTag(Map("tier" -> Tier.Three))
nbt.setTag("upgradeSlots", upgradeSlots)
val componentSlots = new NBTTagList()
componentSlots.appendTag(Map("type" -> Slot.Card, "tier" -> Tier.Three))
componentSlots.appendTag(Map("type" -> Slot.Card, "tier" -> Tier.Three))
componentSlots.appendTag(Map("type" -> Slot.Card, "tier" -> Tier.Three))
componentSlots.appendTag(Map("type" -> Slot.CPU, "tier" -> Tier.Three))
componentSlots.appendTag(Map("type" -> Slot.Memory, "tier" -> Tier.Three))
componentSlots.appendTag(Map("type" -> Slot.Memory, "tier" -> Tier.Three))
componentSlots.appendTag(Map("type" -> Slot.EEPROM, "tier" -> Tier.Any))
nbt.setTag("componentSlots", componentSlots)
FMLInterModComms.sendMessage("OpenComputers", "registerAssemblerTemplate", nbt)
}
// Disassembler // Disassembler
{ {
val nbt = new NBTTagCompound() val nbt = new NBTTagCompound()
@ -109,7 +147,10 @@ object MicrocontrollerTemplate extends Template {
} }
} }
override protected def maxComplexity(inventory: IInventory) = if (caseTier(inventory) == Tier.Two) 5 else 4 override protected def maxComplexity(inventory: IInventory) =
if (caseTier(inventory) == Tier.Two) 5
else if (caseTier(inventory) == Tier.Four) 9001 // Creative
else 4
override protected def caseTier(inventory: IInventory) = ItemUtils.caseTier(inventory.getStackInSlot(0)) override protected def caseTier(inventory: IInventory) = ItemUtils.caseTier(inventory.getStackInSlot(0))
} }

View File

@ -46,9 +46,8 @@ object RobotTemplate extends Template {
def disassemble(stack: ItemStack, ingredients: Array[ItemStack]) = { def disassemble(stack: ItemStack, ingredients: Array[ItemStack]) = {
val info = new ItemUtils.RobotData(stack) val info = new ItemUtils.RobotData(stack)
val itemName = val itemName = ItemUtils.caseNameWithTierSuffix("case", info.tier)
if (info.tier == Tier.Four) "caseCreative"
else "case" + (info.tier + 1)
Array(api.Items.get(itemName).createItemStack(1)) ++ info.containers ++ info.components Array(api.Items.get(itemName).createItemStack(1)) ++ info.containers ++ info.components
} }

View File

@ -39,14 +39,19 @@ object ItemUtils {
else if (descriptor == api.Items.get("caseCreative")) Tier.Four else if (descriptor == api.Items.get("caseCreative")) Tier.Four
else if (descriptor == api.Items.get("microcontrollerCase1")) Tier.One else if (descriptor == api.Items.get("microcontrollerCase1")) Tier.One
else if (descriptor == api.Items.get("microcontrollerCase2")) Tier.Two else if (descriptor == api.Items.get("microcontrollerCase2")) Tier.Two
else if (descriptor == api.Items.get("microcontrollerCaseCreative")) Tier.Four
else if (descriptor == api.Items.get("droneCase1")) Tier.One else if (descriptor == api.Items.get("droneCase1")) Tier.One
else if (descriptor == api.Items.get("droneCase2")) Tier.Two else if (descriptor == api.Items.get("droneCase2")) Tier.Two
else if (descriptor == api.Items.get("droneCaseCreative")) Tier.Four
else if (descriptor == api.Items.get("server1")) Tier.One else if (descriptor == api.Items.get("server1")) Tier.One
else if (descriptor == api.Items.get("server2")) Tier.Two else if (descriptor == api.Items.get("server2")) Tier.Two
else if (descriptor == api.Items.get("server3")) Tier.Three else if (descriptor == api.Items.get("server3")) Tier.Three
else if (descriptor == api.Items.get("serverCreative")) Tier.Four
else Tier.None else Tier.None
} }
def caseNameWithTierSuffix(name: String, tier: Int) = name + (if (tier == Tier.Four) "Creative" else (tier + 1).toString)
def loadStack(nbt: NBTTagCompound) = DelegatorConverter.convert(ItemStack.loadItemStackFromNBT(nbt)) def loadStack(nbt: NBTTagCompound) = DelegatorConverter.convert(ItemStack.loadItemStackFromNBT(nbt))
def getIngredients(stack: ItemStack): Array[ItemStack] = try { def getIngredients(stack: ItemStack): Array[ItemStack] = try {
@ -253,7 +258,7 @@ object ItemUtils {
} }
override def save(nbt: NBTTagCompound) { override def save(nbt: NBTTagCompound) {
if (name != null) { if (!Strings.isNullOrEmpty(name)) {
if (!nbt.hasKey("display")) { if (!nbt.hasKey("display")) {
nbt.setTag("display", new NBTTagCompound()) nbt.setTag("display", new NBTTagCompound())
} }