Reworked some recipes in an attempt to reduce tedium by adjusting costs and introducing more multi-output (e.g. getting multiple raw circuit boards from one crafting operation).

Also introduced a diamond chip item to reduce the massive ramp in cost for tier three stuff. The diamond prices were a little insane. Better late than never, right? Right!?
People yelling at me for the recipes being too cheap now in 3, 2, ... (hardmode hasn't changed!)
This commit is contained in:
Florian Nücke 2016-03-20 16:31:29 +01:00
parent 8a5cdada39
commit 72d8a13a8a
9 changed files with 99 additions and 56 deletions

View File

@ -67,6 +67,7 @@ item.oc.DataCard1.name=Data Card (Tier 2)
item.oc.DataCard2.name=Data Card (Tier 3) item.oc.DataCard2.name=Data Card (Tier 3)
item.oc.DebugCard.name=Debug Card item.oc.DebugCard.name=Debug Card
item.oc.Debugger.name=Network Debugger item.oc.Debugger.name=Network Debugger
item.oc.DiamondNugget.name=Diamond Nugget
item.oc.Disk.name=Disk Platter item.oc.Disk.name=Disk Platter
item.oc.DiskDriveMountable.name=Disk Drive item.oc.DiskDriveMountable.name=Disk Drive
item.oc.Drone.name=Drone item.oc.Drone.name=Drone
@ -277,6 +278,7 @@ oc:tooltip.DataCard1=Provides a couple of advanced algorithms such as hashing, A
oc:tooltip.DataCard2=Provides a couple of advanced algorithms such as hashing, AES encryption, elliptic curve cryptography and deflate/inflate. oc:tooltip.DataCard2=Provides a couple of advanced algorithms such as hashing, AES encryption, elliptic curve cryptography and deflate/inflate.
oc:tooltip.DebugCard=Creative mode item, allows manipulating the world to make testing easier. Use at your own peril. oc:tooltip.DebugCard=Creative mode item, allows manipulating the world to make testing easier. Use at your own peril.
oc:tooltip.Debugger=Can be used to output debug information on OC's internal network grid. Only use if so instructed by a dev. oc:tooltip.Debugger=Can be used to output debug information on OC's internal network grid. Only use if so instructed by a dev.
oc:tooltip.DiamondNugget=A small piece of a once radiant diamond. The pieces fit together flawlessly.
oc:tooltip.Disassembler=Separates items into their original components. §lWarning§7: returned items have a %s%% chance of breaking in the process! oc:tooltip.Disassembler=Separates items into their original components. §lWarning§7: returned items have a %s%% chance of breaking in the process!
oc:tooltip.Disk=Primitive medium that can be used to build persistent storage devices. oc:tooltip.Disk=Primitive medium that can be used to build persistent storage devices.
oc:tooltip.DiskDrive.CC=ComputerCraft floppies are §asupported§7. oc:tooltip.DiskDrive.CC=ComputerCraft floppies are §asupported§7.

View File

@ -89,18 +89,18 @@ diskDriveMountable {
[obsidian, "oc:materialCircuitBoardPrinted", obsidian]] [obsidian, "oc:materialCircuitBoardPrinted", obsidian]]
} }
server1 { server1 {
input: [[obsidian, "oc:ram4", obsidian] input: [[ingotIron, "oc:ram2", ingotIron]
["oc:circuitChip1", "oc:circuitChip2", "oc:circuitChip1"] ["oc:circuitChip1", "oc:componentBus1", "oc:circuitChip1"]
[obsidian, "oc:materialCircuitBoardPrinted", obsidian]] [obsidian, "oc:materialCircuitBoardPrinted", obsidian]]
} }
server2 { server2 {
input: [[obsidian, "oc:ram5", obsidian] input: [[ingotGold, "oc:ram4", ingotGold]
["oc:circuitChip2", "oc:circuitChip3", "oc:circuitChip2"] ["oc:circuitChip2", "oc:componentBus2", "oc:circuitChip2"]
[obsidian, "oc:materialCircuitBoardPrinted", obsidian]] [obsidian, "oc:materialCircuitBoardPrinted", obsidian]]
} }
server3 { server3 {
input: [[obsidian, "oc:ram6", obsidian] input: [[gemDiamond, "oc:ram6", gemDiamond]
["oc:circuitChip3", "oc:circuitChip3", "oc:circuitChip3"] ["oc:circuitChip3", "oc:componentBus3", "oc:circuitChip3"]
[obsidian, "oc:materialCircuitBoardPrinted", obsidian]] [obsidian, "oc:materialCircuitBoardPrinted", obsidian]]
} }
terminalServer { terminalServer {
@ -169,7 +169,7 @@ dataCard2 {
["", "oc:materialCard", ""]] ["", "oc:materialCard", ""]]
} }
dataCard3 { dataCard3 {
input: [[gemDiamond, "oc:cpu2", "oc:ram5"] input: [[nuggetDiamond, "oc:cpu2", "oc:ram5"]
["", "oc:materialCard", ""]] ["", "oc:materialCard", ""]]
} }
graphicsCard1 { graphicsCard1 {
@ -226,19 +226,19 @@ angelUpgrade {
[ingotIron, materialEnderPearl, ingotIron]] [ingotIron, materialEnderPearl, ingotIron]]
} }
batteryUpgrade1 { batteryUpgrade1 {
input: [[ingotIron, nuggetGold, ingotIron] input: [[nuggetIron, nuggetGold, nuggetIron]
[fenceIron, "oc:capacitor", fenceIron] [fenceIron, "oc:capacitor", fenceIron]
[ingotIron, nuggetGold, ingotIron]] [nuggetIron, nuggetGold, nuggetIron]]
} }
batteryUpgrade2 { batteryUpgrade2 {
input: [[ingotGold, "oc:capacitor", ingotGold] input: [[nuggetIron, "oc:capacitor", nuggetIron]
[fenceIron, nuggetGold, fenceIron] [fenceIron, nuggetGold, fenceIron]
[ingotGold, "oc:capacitor", ingotGold]] [nuggetIron, "oc:capacitor", nuggetIron]]
} }
batteryUpgrade3 { batteryUpgrade3 {
input: [[gemDiamond, "oc:capacitor", gemDiamond] input: [[nuggetIron, "oc:capacitor", nuggetIron]
[fenceIron, "oc:capacitor", fenceIron] ["oc:capacitor", nuggetDiamond, "oc:capacitor"]
[gemDiamond, "oc:capacitor", gemDiamond]] [nuggetIron, "oc:capacitor", nuggetIron]]
} }
chunkloaderUpgrade { chunkloaderUpgrade {
input: [[ingotGold, blockGlass, ingotGold] input: [[ingotGold, blockGlass, ingotGold]
@ -372,23 +372,34 @@ upgradeContainer3 {
[ingotGold, "oc:materialCircuitBoardPrinted", ingotGold]] [ingotGold, "oc:materialCircuitBoardPrinted", ingotGold]]
} }
# Note: iron ingot and nugget recipes are *only* registered if no other mod # Note: ingot/gem <-> nugget recipes are *only* registered if no other mod
# already provides the same functionality. # already provides the same functionality.
nuggetIron { nuggetIron {
type: shapeless type: shapeless
input: ingotIron input: ingotIron
output: 9 output: 9
} }
cuttingWire = false
acid {
type: shapeless
input: [bucketWater, sugar, slimeball, fermentedSpiderEye, bone]
}
ingotIron { ingotIron {
input: [[nuggetIron, nuggetIron, nuggetIron], input: [[nuggetIron, nuggetIron, nuggetIron],
[nuggetIron, nuggetIron, nuggetIron], [nuggetIron, nuggetIron, nuggetIron],
[nuggetIron, nuggetIron, nuggetIron]] [nuggetIron, nuggetIron, nuggetIron]]
} }
nuggetDiamond {
type: shapeless
input: gemDiamond
output: 9
}
gemDiamond {
input: [[nuggetDiamond, nuggetDiamond, nuggetDiamond],
[nuggetDiamond, nuggetDiamond, nuggetDiamond],
[nuggetDiamond, nuggetDiamond, nuggetDiamond]]
}
cuttingWire = false
acid {
type: shapeless
input: [bucketWater, sugar, slimeball, fermentedSpiderEye, bone]
}
disk { disk {
input: [["", nuggetIron, ""] input: [["", nuggetIron, ""]
[nuggetIron, "", nuggetIron] [nuggetIron, "", nuggetIron]
@ -436,24 +447,28 @@ numPad {
} }
transistor { transistor {
input: [[nuggetIron, nuggetIron, nuggetIron] input: [[ingotIron, ingotIron, ingotIron]
[nuggetGold, paper, nuggetGold] [nuggetGold, paper, nuggetGold]
["", redstone, ""]] ["", redstone, ""]]
output: 8
} }
chip1 { chip1 {
input: [[nuggetIron, "", nuggetIron] input: [[nuggetIron, nuggetIron, nuggetIron]
[redstone, "oc:materialTransistor", redstone] [redstone, "oc:materialTransistor", redstone]
[nuggetIron, "", nuggetIron]] [nuggetIron, nuggetIron, nuggetIron]]
output: 8
} }
chip2 { chip2 {
input: [[nuggetGold, "", nuggetGold] input: [[nuggetGold, nuggetGold, nuggetGold]
[redstone, "oc:materialTransistor", redstone] [redstone, "oc:materialTransistor", redstone]
[nuggetGold, "", nuggetGold]] [nuggetGold, nuggetGold, nuggetGold]]
output: 4
} }
chip3 { chip3 {
input: [[gemDiamond, "", gemDiamond] input: [[nuggetDiamond, nuggetDiamond, nuggetDiamond]
[redstone, "oc:materialTransistor", redstone] [redstone, "oc:materialTransistor", redstone]
[gemDiamond, "", gemDiamond]] [nuggetDiamond, nuggetDiamond, nuggetDiamond]]
output: 2
} }
alu { alu {
input: [[nuggetIron, redstone, nuggetIron] input: [[nuggetIron, redstone, nuggetIron]
@ -466,9 +481,9 @@ apu1 {
[nuggetGold, "oc:circuitChip1", nuggetGold]] [nuggetGold, "oc:circuitChip1", nuggetGold]]
} }
apu2 { apu2 {
input: [[gemDiamond, "oc:circuitChip2", gemDiamond] input: [[nuggetDiamond, "oc:circuitChip2", nuggetDiamond]
["oc:cpu3", "oc:componentBus2", "oc:graphicsCard2"] ["oc:cpu3", "oc:componentBus2", "oc:graphicsCard2"]
[gemDiamond, "oc:circuitChip2", gemDiamond]] [nuggetDiamond, "oc:circuitChip2", nuggetDiamond]]
} }
componentBus1 { componentBus1 {
input: [[nuggetIron, redstone, nuggetIron] input: [[nuggetIron, redstone, nuggetIron]
@ -481,9 +496,9 @@ componentBus2 {
[nuggetGold, "oc:materialCircuitBoardPrinted", nuggetGold]] [nuggetGold, "oc:materialCircuitBoardPrinted", nuggetGold]]
} }
componentBus3 { componentBus3 {
input: [[emerald, redstone, emerald] input: [[nuggetDiamond, redstone, nuggetDiamond]
["oc:circuitChip3", "oc:materialCU", ""] ["oc:circuitChip3", "oc:materialCU", ""]
[emerald, "oc:materialCircuitBoardPrinted", emerald]] [nuggetDiamond, "oc:materialCircuitBoardPrinted", nuggetDiamond]]
} }
cpu1 { cpu1 {
input: [[nuggetIron, redstone, nuggetIron] input: [[nuggetIron, redstone, nuggetIron]
@ -496,9 +511,9 @@ cpu2 {
[nuggetGold, "oc:materialALU", nuggetGold]] [nuggetGold, "oc:materialALU", nuggetGold]]
} }
cpu3 { cpu3 {
input: [[emerald, redstone, emerald] input: [[nuggetDiamond, redstone, nuggetDiamond]
["oc:circuitChip3", "oc:materialCU", "oc:circuitChip3"] ["oc:circuitChip3", "oc:materialCU", "oc:circuitChip3"]
[emerald, "oc:materialALU", emerald]] [nuggetDiamond, "oc:materialALU", nuggetDiamond]]
} }
cu { cu {
input: [[nuggetGold, redstone, nuggetGold] input: [[nuggetGold, redstone, nuggetGold]
@ -508,7 +523,8 @@ cu {
rawCircuitBoard { rawCircuitBoard {
type: shapeless type: shapeless
input: [nuggetGold, clay, dyeGreen] input: [ingotGold, clay, dyeGreen]
output: 8
} }
circuitBoard = false circuitBoard = false
printedCircuitBoard { printedCircuitBoard {
@ -585,12 +601,12 @@ geolyzer {
} }
hologram1 { hologram1 {
input: [["oc:circuitChip2", paneGlass, "oc:circuitChip2"] input: [["oc:circuitChip2", paneGlass, "oc:circuitChip2"]
["oc:materialCircuitBoardPrinted", gemDiamond, "oc:materialCircuitBoardPrinted"] ["oc:materialCircuitBoardPrinted", nuggetDiamond, "oc:materialCircuitBoardPrinted"]
[obsidian, yellowDust, obsidian]] [obsidian, yellowDust, obsidian]]
} }
hologram2 { hologram2 {
input: [["oc:circuitChip3", blockGlass, "oc:circuitChip3"] input: [["oc:circuitChip3", blockGlass, "oc:circuitChip3"]
["oc:materialCircuitBoardPrinted", blockDiamond, "oc:materialCircuitBoardPrinted"] ["oc:materialCircuitBoardPrinted", gemDiamond, "oc:materialCircuitBoardPrinted"]
[obsidian, blazePowder, obsidian]] [obsidian, blazePowder, obsidian]]
} }
keyboard { keyboard {
@ -623,7 +639,7 @@ powerDistributor {
[ingotIron, "oc:materialCircuitBoardPrinted", ingotIron]] [ingotIron, "oc:materialCircuitBoardPrinted", ingotIron]]
} }
rack { rack {
input: [["oc:circuitChip2", "oc:wlanCard", "oc:circuitChip2"] input: [[gemDiamond, "oc:wlanCard", gemDiamond]
[fenceIron, chest, fenceIron] [fenceIron, chest, fenceIron]
["oc:relay", "oc:materialCircuitBoardPrinted", "oc:powerDistributor"]] ["oc:relay", "oc:materialCircuitBoardPrinted", "oc:powerDistributor"]]
} }

View File

@ -240,6 +240,11 @@ alu {
["oc:materialTransistor", "oc:materialTransistor", "oc:materialTransistor"] ["oc:materialTransistor", "oc:materialTransistor", "oc:materialTransistor"]
[nuggetIron, redstone, nuggetIron]] [nuggetIron, redstone, nuggetIron]]
} }
apu2 {
input: [[gemDiamond, "oc:circuitChip2", gemDiamond]
["oc:cpu3", "oc:componentBus2", "oc:graphicsCard2"]
[gemDiamond, "oc:circuitChip2", gemDiamond]]
}
componentBus1 { componentBus1 {
input: [[nuggetIron, redstone, nuggetIron] input: [[nuggetIron, redstone, nuggetIron]
["oc:circuitChip1", "oc:materialCU", ""] ["oc:circuitChip1", "oc:materialCU", ""]
@ -347,6 +352,16 @@ geolyzer {
[eyeOfEnder, "oc:circuitChip2", eyeOfEnder] [eyeOfEnder, "oc:circuitChip2", eyeOfEnder]
[ingotGold, "oc:materialCircuitBoardPrinted", ingotGold]] [ingotGold, "oc:materialCircuitBoardPrinted", ingotGold]]
} }
hologram1 {
input: [["oc:circuitChip2", paneGlass, "oc:circuitChip2"]
["oc:materialCircuitBoardPrinted", gemDiamond, "oc:materialCircuitBoardPrinted"]
[obsidian, yellowDust, obsidian]]
}
hologram2 {
input: [["oc:circuitChip3", blockGlass, "oc:circuitChip3"]
["oc:materialCircuitBoardPrinted", blockDiamond, "oc:materialCircuitBoardPrinted"]
[obsidian, blazePowder, obsidian]]
}
keyboard { keyboard {
input: [["oc:materialButtonGroup", "oc:materialButtonGroup", "oc:materialButtonGroup"] input: [["oc:materialButtonGroup", "oc:materialButtonGroup", "oc:materialButtonGroup"]
["oc:materialButtonGroup", "oc:materialArrowKey", "oc:materialNumPad"]] ["oc:materialButtonGroup", "oc:materialArrowKey", "oc:materialNumPad"]]

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

View File

@ -87,6 +87,7 @@ object Constants {
final val DataCardTier3 = "dataCard3" final val DataCardTier3 = "dataCard3"
final val DebugCard = "debugCard" final val DebugCard = "debugCard"
final val Debugger = "debugger" final val Debugger = "debugger"
final val DiamondNugget = "nuggetDiamond"
final val Disk = "disk" final val Disk = "disk"
final val DiskDriveMountable = "diskDriveMountable" final val DiskDriveMountable = "diskDriveMountable"
final val Drone = "drone" final val Drone = "drone"

View File

@ -11,16 +11,19 @@ import li.cil.oc.common.entity.Drone
import li.cil.oc.common.init.Blocks import li.cil.oc.common.init.Blocks
import li.cil.oc.common.init.Items import li.cil.oc.common.init.Items
import li.cil.oc.common.item.Delegator import li.cil.oc.common.item.Delegator
import li.cil.oc.common.item.traits.Delegate
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.server._ import li.cil.oc.server._
import li.cil.oc.server.machine.luac.LuaStateFactory import li.cil.oc.server.machine.luac.LuaStateFactory
import li.cil.oc.server.machine.luac.NativeLua52Architecture import li.cil.oc.server.machine.luac.NativeLua52Architecture
import li.cil.oc.server.machine.luaj.LuaJLuaArchitecture import li.cil.oc.server.machine.luaj.LuaJLuaArchitecture
import net.minecraft.item.Item
import net.minecraft.item.ItemStack import net.minecraft.item.ItemStack
import net.minecraftforge.oredict.OreDictionary import net.minecraftforge.oredict.OreDictionary
import scala.collection.convert.WrapAsScala._ import scala.collection.convert.WrapAsScala._
import scala.reflect.ClassTag
class Proxy { class Proxy {
def preInit(e: FMLPreInitializationEvent) { def preInit(e: FMLPreInitializationEvent) {
@ -43,20 +46,8 @@ class Proxy {
OreDictionary.registerOre("chest", net.minecraft.init.Blocks.chest) OreDictionary.registerOre("chest", net.minecraft.init.Blocks.chest)
OreDictionary.registerOre("chest", net.minecraft.init.Blocks.trapped_chest) OreDictionary.registerOre("chest", net.minecraft.init.Blocks.trapped_chest)
val nuggetIron = Items.get(Constants.ItemName.IronNugget).createItemStack(1) tryRegisterNugget[item.IronNugget](Constants.ItemName.IronNugget, "nuggetIron", net.minecraft.init.Items.iron_ingot, "ingotIron")
registerExclusive("nuggetIron", nuggetIron) tryRegisterNugget[item.DiamondNugget](Constants.ItemName.DiamondNugget, "nuggetDiamond", net.minecraft.init.Items.diamond, "gemDiamond")
Delegator.subItem(nuggetIron) match {
case Some(subItem: item.IronNugget) =>
if (OreDictionary.getOres("nuggetIron").exists(nuggetIron.isItemEqual)) {
Recipes.addSubItem(subItem, "nuggetIron")
Recipes.addItem(net.minecraft.init.Items.iron_ingot, "ingotIron")
}
else {
subItem.showInItemList = false
}
case _ =>
}
// Avoid issues with Extra Utilities registering colored obsidian as `obsidian` // Avoid issues with Extra Utilities registering colored obsidian as `obsidian`
// oredict entry, but not normal obsidian, breaking some recipes. // oredict entry, but not normal obsidian, breaking some recipes.
@ -108,6 +99,24 @@ class Proxy {
driver.Registry.locked = true driver.Registry.locked = true
} }
def tryRegisterNugget[TItem <: Delegate : ClassTag](nuggetItemName: String, nuggetOredictName: String, ingotItem: Item, ingotOredictName: String): Unit = {
val nugget = Items.get(nuggetItemName).createItemStack(1)
registerExclusive(nuggetOredictName, nugget)
Delegator.subItem(nugget) match {
case Some(subItem: TItem) =>
if (OreDictionary.getOres(nuggetOredictName).exists(nugget.isItemEqual)) {
Recipes.addSubItem(subItem, nuggetItemName)
Recipes.addItem(ingotItem, ingotOredictName)
}
else {
subItem.showInItemList = false
}
case _ =>
}
}
private def registerExclusive(name: String, items: ItemStack*) { private def registerExclusive(name: String, items: ItemStack*) {
if (OreDictionary.getOres(name).isEmpty) { if (OreDictionary.getOres(name).isEmpty) {
for (item <- items) { for (item <- items) {

View File

@ -533,6 +533,7 @@ object Items extends ItemAPI {
Recipes.addSubItem(new item.TerminalServer(multi), Constants.ItemName.TerminalServer, "oc:terminalServer") Recipes.addSubItem(new item.TerminalServer(multi), Constants.ItemName.TerminalServer, "oc:terminalServer")
Recipes.addSubItem(new item.DiskDriveMountable(multi), Constants.ItemName.DiskDriveMountable, "oc:diskDriveMountable") Recipes.addSubItem(new item.DiskDriveMountable(multi), Constants.ItemName.DiskDriveMountable, "oc:diskDriveMountable")
Recipes.addSubItem(new item.UpgradeTrading(multi), Constants.ItemName.TradingUpgrade, "oc:tradingUpgrade") Recipes.addSubItem(new item.UpgradeTrading(multi), Constants.ItemName.TradingUpgrade, "oc:tradingUpgrade")
registerItem(new item.DiamondNugget(multi), Constants.ItemName.DiamondNugget)
// Register aliases. // Register aliases.
for ((k, v) <- aliases) { for ((k, v) <- aliases) {

View File

@ -0,0 +1,3 @@
package li.cil.oc.common.item
class DiamondNugget(val parent: Delegator) extends traits.Delegate

View File

@ -1,7 +1,3 @@
package li.cil.oc.common.item package li.cil.oc.common.item
import li.cil.oc.integration.Mods class IronNugget(val parent: Delegator) extends traits.Delegate
class IronNugget(val parent: Delegator) extends traits.Delegate {
showInItemList = !Mods.GregTech.isAvailable
}