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
|
* 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.
|
@ -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.
|
||||||
|
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
|
// 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")
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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")
|
||||||
|
@ -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),
|
||||||
|
@ -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)
|
||||||
|
@ -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.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
|
||||||
}))
|
}))
|
||||||
|
@ -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
|
||||||
|
}
|
||||||
|
}
|