Card and upgrade container upgrade items.
@ -11,7 +11,7 @@ import net.minecraft.item.ItemStack;
|
||||
* These drivers will not be queried for environments. The reported tier is the
|
||||
* 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
|
||||
* for other upgrades, but may be for any type of item component.
|
@ -124,15 +124,20 @@ craftingUpgrade {
|
||||
[ingotIron, "oc:materialCircuitBoardPrinted", ingotIron]]
|
||||
}
|
||||
experienceUpgrade {
|
||||
input: [[ingotIron, "", ingotIron]
|
||||
["oc:circuitChip1", expBottle, "oc:circuitChip1"]
|
||||
[ingotIron, "oc:materialCircuitBoardPrinted", ingotIron]]
|
||||
input: [[ingotGold, "", ingotGold]
|
||||
["oc:circuitChip2", emerald, "oc:circuitChip2"]
|
||||
[ingotGold, "oc:materialCircuitBoardPrinted", ingotGold]]
|
||||
}
|
||||
generatorUpgrade {
|
||||
input: [[ingotIron, "", ingotIron]
|
||||
["oc:circuitChip1", craftingPiston, "oc:circuitChip1"]
|
||||
[ingotIron, "oc:materialCircuitBoardPrinted", ingotIron]]
|
||||
}
|
||||
inventoryUpgrade {
|
||||
input: [[plankWood, hopper, plankWood]
|
||||
[dispenser, chest, craftingPiston]
|
||||
[plankWood, "oc:circuitChip1", plankWood]]
|
||||
}
|
||||
navigationUpgrade {
|
||||
input: [[ingotGold, compass, ingotGold]
|
||||
["oc:circuitChip3", {item=map, subID=any}, "oc:circuitChip3"]
|
||||
@ -147,6 +152,36 @@ solarGeneratorUpgrade {
|
||||
input: [[glass, glass, glass]
|
||||
["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
|
||||
# already provides the same functionality.
|
||||
|
After Width: | Height: | Size: 412 B |
After Width: | Height: | Size: 412 B |
After Width: | Height: | Size: 412 B |
After Width: | Height: | Size: 275 B |
After Width: | Height: | Size: 275 B |
After Width: | Height: | Size: 275 B |
Before Width: | Height: | Size: 304 B After Width: | Height: | Size: 446 B |
After Width: | Height: | Size: 304 B |
@ -173,5 +173,12 @@ object Items extends ItemAPI {
|
||||
// v1.3.0
|
||||
Recipes.addItemDelegate(new item.LinkedCard(multi), "linkedCard", "oc:linkedCard")
|
||||
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")
|
||||
}
|
||||
}
|
@ -23,6 +23,7 @@ object Icons {
|
||||
bySlotType += Slot.Processor -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_cpu")
|
||||
bySlotType += Slot.Tool -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_tool")
|
||||
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 += 1 -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_tier1")
|
||||
|
@ -51,15 +51,15 @@ object InventorySlots {
|
||||
val assembler = Array(
|
||||
Array(
|
||||
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.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.One),
|
||||
InventorySlot(Slot.UpgradeContainer, Tier.One),
|
||||
|
@ -77,6 +77,9 @@ class Proxy {
|
||||
api.Driver.add(driver.item.Processor)
|
||||
api.Driver.add(driver.item.RedstoneCard)
|
||||
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.UpgradeExperience)
|
||||
api.Driver.add(driver.item.UpgradeGenerator)
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
@ -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)
|
||||
}
|
||||
}
|
@ -7,6 +7,7 @@ import li.cil.oc.api.Driver
|
||||
import li.cil.oc.common.InventorySlots.Tier
|
||||
import li.cil.oc.common.InventorySlots
|
||||
import li.cil.oc.util.ItemUtils
|
||||
import li.cil.oc.api.driver.UpgradeContainer
|
||||
|
||||
class RobotAssembler extends traits.Environment with traits.Inventory with traits.Rotatable {
|
||||
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
|
||||
|
||||
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 _ => 0
|
||||
}))
|
||||
|
@ -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
|
||||
}
|
||||
}
|
@ -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
|
||||
}
|
@ -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
|
||||
}
|
||||
}
|