Card and upgrade container upgrade items.

This commit is contained in:
Florian Nücke 2014-05-12 00:31:24 +02:00
parent dae9c15a0a
commit 33e680d197
20 changed files with 169 additions and 7 deletions

View File

@ -11,7 +11,7 @@ import net.minecraft.item.ItemStack;
* These drivers will not be queried for environments. The reported tier is the * These drivers will not be queried for environments. The reported tier is the
* maximum tier supported in the dynamic slot they provide. * maximum tier supported in the dynamic slot they provide.
*/ */
public interface UpgradeSlot extends Item { public interface UpgradeContainer extends Item {
/** /**
* The type of slot provided as the dynamic slot. This will usually be * The type of slot provided as the dynamic slot. This will usually be
* for other upgrades, but may be for any type of item component. * for other upgrades, but may be for any type of item component.

View File

@ -124,15 +124,20 @@ craftingUpgrade {
[ingotIron, "oc:materialCircuitBoardPrinted", ingotIron]] [ingotIron, "oc:materialCircuitBoardPrinted", ingotIron]]
} }
experienceUpgrade { experienceUpgrade {
input: [[ingotIron, "", ingotIron] input: [[ingotGold, "", ingotGold]
["oc:circuitChip1", expBottle, "oc:circuitChip1"] ["oc:circuitChip2", emerald, "oc:circuitChip2"]
[ingotIron, "oc:materialCircuitBoardPrinted", ingotIron]] [ingotGold, "oc:materialCircuitBoardPrinted", ingotGold]]
} }
generatorUpgrade { generatorUpgrade {
input: [[ingotIron, "", ingotIron] input: [[ingotIron, "", ingotIron]
["oc:circuitChip1", craftingPiston, "oc:circuitChip1"] ["oc:circuitChip1", craftingPiston, "oc:circuitChip1"]
[ingotIron, "oc:materialCircuitBoardPrinted", ingotIron]] [ingotIron, "oc:materialCircuitBoardPrinted", ingotIron]]
} }
inventoryUpgrade {
input: [[plankWood, hopper, plankWood]
[dispenser, chest, craftingPiston]
[plankWood, "oc:circuitChip1", plankWood]]
}
navigationUpgrade { navigationUpgrade {
input: [[ingotGold, compass, ingotGold] input: [[ingotGold, compass, ingotGold]
["oc:circuitChip3", {item=map, subID=any}, "oc:circuitChip3"] ["oc:circuitChip3", {item=map, subID=any}, "oc:circuitChip3"]
@ -147,6 +152,36 @@ solarGeneratorUpgrade {
input: [[glass, glass, glass] input: [[glass, glass, glass]
["oc:circuitChip3", "oc:generatorUpgrade", "oc:circuitChip3"]] ["oc:circuitChip3", "oc:generatorUpgrade", "oc:circuitChip3"]]
} }
cardContainer1 {
input: [[ingotIron, "oc:materialTransistor", ingotIron]
[craftingPiston, chest, ""]
[ingotIron, "oc:materialCard", ingotIron]]
}
cardContainer2 {
input: [[ingotIron, "oc:circuitChip2", ingotIron]
[craftingPiston, chest, ""]
[ingotIron, "oc:materialCard", ingotIron]]
}
cardContainer3 {
input: [[ingotGold, "oc:circuitChip2", ingotGold]
[craftingPiston, chest, ""]
[ingotGold, "oc:materialCard", ingotGold]]
}
upgradeContainer1 {
input: [[ingotIron, "oc:circuitChip1", ingotIron]
[craftingPiston, chest, ""]
[ingotIron, "oc:materialCircuitBoardPrinted", ingotIron]]
}
upgradeContainer2 {
input: [[ingotIron, "oc:circuitChip2", ingotIron]
[craftingPiston, chest, ""]
[ingotIron, "oc:materialCircuitBoardPrinted", ingotIron]]
}
upgradeContainer3 {
input: [[ingotGold, "oc:circuitChip2", ingotGold]
[craftingPiston, chest, ""]
[ingotGold, "oc:materialCircuitBoardPrinted", ingotGold]]
}
# Note: iron ingot and nugget recipes are *only* registered if no other mod # Note: iron ingot and nugget recipes are *only* registered if no other mod
# already provides the same functionality. # already provides the same functionality.

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 304 B

After

Width:  |  Height:  |  Size: 446 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 B

View File

@ -173,5 +173,12 @@ object Items extends ItemAPI {
// v1.3.0 // v1.3.0
Recipes.addItemDelegate(new item.LinkedCard(multi), "linkedCard", "oc:linkedCard") Recipes.addItemDelegate(new item.LinkedCard(multi), "linkedCard", "oc:linkedCard")
Recipes.addItemDelegate(new item.UpgradeExperience(multi), "experienceUpgrade", "oc:experienceUpgrade") Recipes.addItemDelegate(new item.UpgradeExperience(multi), "experienceUpgrade", "oc:experienceUpgrade")
Recipes.addItemDelegate(new item.UpgradeInventory(multi), "inventoryUpgrade", "oc:inventoryUpgrade")
Recipes.addItemDelegate(new item.UpgradeContainerUpgrade(multi, 0), "upgradeContainer1", "oc:upgradeContainer1")
Recipes.addItemDelegate(new item.UpgradeContainerUpgrade(multi, 1), "upgradeContainer2", "oc:upgradeContainer2")
Recipes.addItemDelegate(new item.UpgradeContainerUpgrade(multi, 2), "upgradeContainer3", "oc:upgradeContainer3")
Recipes.addItemDelegate(new item.UpgradeContainerCard(multi, 0), "cardContainer1", "oc:cardContainer1")
Recipes.addItemDelegate(new item.UpgradeContainerCard(multi, 1), "cardContainer2", "oc:cardContainer2")
Recipes.addItemDelegate(new item.UpgradeContainerCard(multi, 2), "cardContainer3", "oc:cardContainer3")
} }
} }

View File

@ -23,6 +23,7 @@ object Icons {
bySlotType += Slot.Processor -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_cpu") bySlotType += Slot.Processor -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_cpu")
bySlotType += Slot.Tool -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_tool") bySlotType += Slot.Tool -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_tool")
bySlotType += Slot.Upgrade -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_upgrade") bySlotType += Slot.Upgrade -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_upgrade")
bySlotType += Slot.UpgradeContainer -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_upgrade_dynamic")
byTier += 0 -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_tier0") byTier += 0 -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_tier0")
byTier += 1 -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_tier1") byTier += 1 -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_tier1")

View File

@ -51,15 +51,15 @@ object InventorySlots {
val assembler = Array( val assembler = Array(
Array( Array(
InventorySlot(Slot.None, Tier.None), // Reserved for computer case. InventorySlot(Slot.None, Tier.None), // Reserved for computer case.
InventorySlot(Slot.Upgrade, Tier.Two),
InventorySlot(Slot.Upgrade, Tier.Two),
InventorySlot(Slot.Upgrade, Tier.Two),
InventorySlot(Slot.Upgrade, Tier.One), InventorySlot(Slot.Upgrade, Tier.One),
InventorySlot(Slot.Upgrade, Tier.One), InventorySlot(Slot.Upgrade, Tier.One),
InventorySlot(Slot.Upgrade, Tier.One), InventorySlot(Slot.Upgrade, Tier.One),
InventorySlot(Slot.None, Tier.None), InventorySlot(Slot.None, Tier.None),
InventorySlot(Slot.None, Tier.None), InventorySlot(Slot.None, Tier.None),
InventorySlot(Slot.None, Tier.None), InventorySlot(Slot.None, Tier.None),
InventorySlot(Slot.None, Tier.None),
InventorySlot(Slot.None, Tier.None),
InventorySlot(Slot.None, Tier.None),
InventorySlot(Slot.UpgradeContainer, Tier.Two), InventorySlot(Slot.UpgradeContainer, Tier.Two),
InventorySlot(Slot.UpgradeContainer, Tier.One), InventorySlot(Slot.UpgradeContainer, Tier.One),
InventorySlot(Slot.UpgradeContainer, Tier.One), InventorySlot(Slot.UpgradeContainer, Tier.One),

View File

@ -77,6 +77,9 @@ class Proxy {
api.Driver.add(driver.item.Processor) api.Driver.add(driver.item.Processor)
api.Driver.add(driver.item.RedstoneCard) api.Driver.add(driver.item.RedstoneCard)
api.Driver.add(driver.item.Screen) api.Driver.add(driver.item.Screen)
api.Driver.add(driver.item.UpgradeContainerCard)
api.Driver.add(driver.item.UpgradeContainerFloppy)
api.Driver.add(driver.item.UpgradeContainerUpgrade)
api.Driver.add(driver.item.UpgradeCrafting) api.Driver.add(driver.item.UpgradeCrafting)
api.Driver.add(driver.item.UpgradeExperience) api.Driver.add(driver.item.UpgradeExperience)
api.Driver.add(driver.item.UpgradeGenerator) api.Driver.add(driver.item.UpgradeGenerator)

View File

@ -0,0 +1,26 @@
package li.cil.oc.common.item
import java.util
import li.cil.oc.{Settings, server}
import li.cil.oc.util.{Tooltip, Rarity}
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.client.renderer.texture.IconRegister
class UpgradeContainerCard(val parent: Delegator, val tier: Int) extends Delegate {
val baseName = "UpgradeContainerCard"
val unlocalizedName = baseName + tier
override def rarity = Rarity.byTier(server.driver.item.UpgradeContainerCard.tier(createItemStack()))
override def tooltipLines(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
tooltip.addAll(Tooltip.get(unlocalizedName))
super.tooltipLines(stack, player, tooltip, advanced)
}
override def registerIcons(iconRegister: IconRegister) = {
super.registerIcons(iconRegister)
icon = iconRegister.registerIcon(Settings.resourceDomain + ":container_card" + tier)
}
}

View File

@ -0,0 +1,26 @@
package li.cil.oc.common.item
import java.util
import li.cil.oc.{Settings, server}
import li.cil.oc.util.{Tooltip, Rarity}
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.client.renderer.texture.IconRegister
class UpgradeContainerUpgrade(val parent: Delegator, val tier: Int) extends Delegate {
val baseName = "UpgradeContainerUpgrade"
val unlocalizedName = baseName + tier
override def rarity = Rarity.byTier(server.driver.item.UpgradeContainerUpgrade.tier(createItemStack()))
override def tooltipLines(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
tooltip.addAll(Tooltip.get(unlocalizedName))
super.tooltipLines(stack, player, tooltip, advanced)
}
override def registerIcons(iconRegister: IconRegister) = {
super.registerIcons(iconRegister)
icon = iconRegister.registerIcon(Settings.resourceDomain + ":container_upgrade" + tier)
}
}

View File

@ -7,6 +7,7 @@ import li.cil.oc.api.Driver
import li.cil.oc.common.InventorySlots.Tier import li.cil.oc.common.InventorySlots.Tier
import li.cil.oc.common.InventorySlots import li.cil.oc.common.InventorySlots
import li.cil.oc.util.ItemUtils import li.cil.oc.util.ItemUtils
import li.cil.oc.api.driver.UpgradeContainer
class RobotAssembler extends traits.Environment with traits.Inventory with traits.Rotatable { class RobotAssembler extends traits.Environment with traits.Inventory with traits.Rotatable {
val node = api.Network.newNode(this, Visibility.None). val node = api.Network.newNode(this, Visibility.None).
@ -16,6 +17,7 @@ class RobotAssembler extends traits.Environment with traits.Inventory with trait
var isAssembling = false var isAssembling = false
def complexity = items.drop(1).foldLeft(0)((acc, stack) => acc + (Option(api.Driver.driverFor(stack.orNull)) match { def complexity = items.drop(1).foldLeft(0)((acc, stack) => acc + (Option(api.Driver.driverFor(stack.orNull)) match {
case Some(driver: UpgradeContainer) => (1 + driver.tier(stack.get)) * 2
case Some(driver) => 1 + driver.tier(stack.get) case Some(driver) => 1 + driver.tier(stack.get)
case _ => 0 case _ => 0
})) }))

View File

@ -0,0 +1,23 @@
package li.cil.oc.server.driver.item
import li.cil.oc.{Items, api}
import li.cil.oc.api.driver.{UpgradeContainer, Slot}
import li.cil.oc.server.component
import net.minecraft.item.ItemStack
import li.cil.oc.common.item
object UpgradeContainerCard extends Item with UpgradeContainer {
override def worksWith(stack: ItemStack) = isOneOf(stack, api.Items.get("cardContainer1"), api.Items.get("cardContainer2"), api.Items.get("cardContainer3"))
override def createEnvironment(stack: ItemStack, container: component.Container) = null
override def slot(stack: ItemStack) = Slot.UpgradeContainer
override def providedSlot(stack: ItemStack) = Slot.Card
override def tier(stack: ItemStack) =
Items.multi.subItem(stack) match {
case Some(container: item.UpgradeContainerCard) => container.tier
case _ => 0
}
}

View File

@ -0,0 +1,16 @@
package li.cil.oc.server.driver.item
import li.cil.oc.api
import li.cil.oc.api.driver.{UpgradeContainer, Slot}
import li.cil.oc.server.component
import net.minecraft.item.ItemStack
object UpgradeContainerFloppy extends Item with UpgradeContainer {
override def worksWith(stack: ItemStack) = isOneOf(stack, api.Items.get("diskDrive"))
override def createEnvironment(stack: ItemStack, container: component.Container) = null
override def slot(stack: ItemStack) = Slot.UpgradeContainer
override def providedSlot(stack: ItemStack) = Slot.Disk
}

View File

@ -0,0 +1,23 @@
package li.cil.oc.server.driver.item
import li.cil.oc.{Items, api}
import li.cil.oc.api.driver.{UpgradeContainer, Slot}
import li.cil.oc.server.component
import net.minecraft.item.ItemStack
import li.cil.oc.common.item
object UpgradeContainerUpgrade extends Item with UpgradeContainer {
override def worksWith(stack: ItemStack) = isOneOf(stack, api.Items.get("upgradeContainer1"), api.Items.get("upgradeContainer2"), api.Items.get("upgradeContainer3"))
override def createEnvironment(stack: ItemStack, container: component.Container) = null
override def slot(stack: ItemStack) = Slot.UpgradeContainer
override def providedSlot(stack: ItemStack) = Slot.Upgrade
override def tier(stack: ItemStack) =
Items.multi.subItem(stack) match {
case Some(container: item.UpgradeContainerUpgrade) => container.tier
case _ => 0
}
}