From 72d8a13a8a2f9cc4c79cf7ffbcc1b3a7757c6463 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Sun, 20 Mar 2016 16:31:29 +0100 Subject: [PATCH] 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!) --- .../assets/opencomputers/lang/en_US.lang | 2 + .../opencomputers/recipes/default.recipes | 90 +++++++++++------- .../opencomputers/recipes/hardmode.recipes | 15 +++ .../textures/items/DiamondNugget.png | Bin 0 -> 209 bytes src/main/scala/li/cil/oc/Constants.scala | 1 + src/main/scala/li/cil/oc/common/Proxy.scala | 37 ++++--- .../scala/li/cil/oc/common/init/Items.scala | 1 + .../li/cil/oc/common/item/DiamondNugget.scala | 3 + .../li/cil/oc/common/item/IronNugget.scala | 6 +- 9 files changed, 99 insertions(+), 56 deletions(-) create mode 100644 src/main/resources/assets/opencomputers/textures/items/DiamondNugget.png create mode 100644 src/main/scala/li/cil/oc/common/item/DiamondNugget.scala diff --git a/src/main/resources/assets/opencomputers/lang/en_US.lang b/src/main/resources/assets/opencomputers/lang/en_US.lang index 8be5a375b..68aef59c1 100644 --- a/src/main/resources/assets/opencomputers/lang/en_US.lang +++ b/src/main/resources/assets/opencomputers/lang/en_US.lang @@ -67,6 +67,7 @@ item.oc.DataCard1.name=Data Card (Tier 2) item.oc.DataCard2.name=Data Card (Tier 3) item.oc.DebugCard.name=Debug Card item.oc.Debugger.name=Network Debugger +item.oc.DiamondNugget.name=Diamond Nugget item.oc.Disk.name=Disk Platter item.oc.DiskDriveMountable.name=Disk Drive 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.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.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.Disk=Primitive medium that can be used to build persistent storage devices. oc:tooltip.DiskDrive.CC=ComputerCraft floppies are §asupported§7. diff --git a/src/main/resources/assets/opencomputers/recipes/default.recipes b/src/main/resources/assets/opencomputers/recipes/default.recipes index 6f72f538c..a009ef9d6 100644 --- a/src/main/resources/assets/opencomputers/recipes/default.recipes +++ b/src/main/resources/assets/opencomputers/recipes/default.recipes @@ -89,18 +89,18 @@ diskDriveMountable { [obsidian, "oc:materialCircuitBoardPrinted", obsidian]] } server1 { - input: [[obsidian, "oc:ram4", obsidian] - ["oc:circuitChip1", "oc:circuitChip2", "oc:circuitChip1"] + input: [[ingotIron, "oc:ram2", ingotIron] + ["oc:circuitChip1", "oc:componentBus1", "oc:circuitChip1"] [obsidian, "oc:materialCircuitBoardPrinted", obsidian]] } server2 { - input: [[obsidian, "oc:ram5", obsidian] - ["oc:circuitChip2", "oc:circuitChip3", "oc:circuitChip2"] + input: [[ingotGold, "oc:ram4", ingotGold] + ["oc:circuitChip2", "oc:componentBus2", "oc:circuitChip2"] [obsidian, "oc:materialCircuitBoardPrinted", obsidian]] } server3 { - input: [[obsidian, "oc:ram6", obsidian] - ["oc:circuitChip3", "oc:circuitChip3", "oc:circuitChip3"] + input: [[gemDiamond, "oc:ram6", gemDiamond] + ["oc:circuitChip3", "oc:componentBus3", "oc:circuitChip3"] [obsidian, "oc:materialCircuitBoardPrinted", obsidian]] } terminalServer { @@ -169,7 +169,7 @@ dataCard2 { ["", "oc:materialCard", ""]] } dataCard3 { - input: [[gemDiamond, "oc:cpu2", "oc:ram5"] + input: [[nuggetDiamond, "oc:cpu2", "oc:ram5"] ["", "oc:materialCard", ""]] } graphicsCard1 { @@ -226,19 +226,19 @@ angelUpgrade { [ingotIron, materialEnderPearl, ingotIron]] } batteryUpgrade1 { - input: [[ingotIron, nuggetGold, ingotIron] + input: [[nuggetIron, nuggetGold, nuggetIron] [fenceIron, "oc:capacitor", fenceIron] - [ingotIron, nuggetGold, ingotIron]] + [nuggetIron, nuggetGold, nuggetIron]] } batteryUpgrade2 { - input: [[ingotGold, "oc:capacitor", ingotGold] + input: [[nuggetIron, "oc:capacitor", nuggetIron] [fenceIron, nuggetGold, fenceIron] - [ingotGold, "oc:capacitor", ingotGold]] + [nuggetIron, "oc:capacitor", nuggetIron]] } batteryUpgrade3 { - input: [[gemDiamond, "oc:capacitor", gemDiamond] - [fenceIron, "oc:capacitor", fenceIron] - [gemDiamond, "oc:capacitor", gemDiamond]] + input: [[nuggetIron, "oc:capacitor", nuggetIron] + ["oc:capacitor", nuggetDiamond, "oc:capacitor"] + [nuggetIron, "oc:capacitor", nuggetIron]] } chunkloaderUpgrade { input: [[ingotGold, blockGlass, ingotGold] @@ -372,23 +372,34 @@ upgradeContainer3 { [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. nuggetIron { type: shapeless input: ingotIron output: 9 } -cuttingWire = false -acid { - type: shapeless - input: [bucketWater, sugar, slimeball, fermentedSpiderEye, bone] -} ingotIron { input: [[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 { input: [["", nuggetIron, ""] [nuggetIron, "", nuggetIron] @@ -436,24 +447,28 @@ numPad { } transistor { - input: [[nuggetIron, nuggetIron, nuggetIron] + input: [[ingotIron, ingotIron, ingotIron] [nuggetGold, paper, nuggetGold] ["", redstone, ""]] + output: 8 } chip1 { - input: [[nuggetIron, "", nuggetIron] + input: [[nuggetIron, nuggetIron, nuggetIron] [redstone, "oc:materialTransistor", redstone] - [nuggetIron, "", nuggetIron]] + [nuggetIron, nuggetIron, nuggetIron]] + output: 8 } chip2 { - input: [[nuggetGold, "", nuggetGold] + input: [[nuggetGold, nuggetGold, nuggetGold] [redstone, "oc:materialTransistor", redstone] - [nuggetGold, "", nuggetGold]] + [nuggetGold, nuggetGold, nuggetGold]] + output: 4 } chip3 { - input: [[gemDiamond, "", gemDiamond] + input: [[nuggetDiamond, nuggetDiamond, nuggetDiamond] [redstone, "oc:materialTransistor", redstone] - [gemDiamond, "", gemDiamond]] + [nuggetDiamond, nuggetDiamond, nuggetDiamond]] + output: 2 } alu { input: [[nuggetIron, redstone, nuggetIron] @@ -466,9 +481,9 @@ apu1 { [nuggetGold, "oc:circuitChip1", nuggetGold]] } apu2 { - input: [[gemDiamond, "oc:circuitChip2", gemDiamond] + input: [[nuggetDiamond, "oc:circuitChip2", nuggetDiamond] ["oc:cpu3", "oc:componentBus2", "oc:graphicsCard2"] - [gemDiamond, "oc:circuitChip2", gemDiamond]] + [nuggetDiamond, "oc:circuitChip2", nuggetDiamond]] } componentBus1 { input: [[nuggetIron, redstone, nuggetIron] @@ -481,9 +496,9 @@ componentBus2 { [nuggetGold, "oc:materialCircuitBoardPrinted", nuggetGold]] } componentBus3 { - input: [[emerald, redstone, emerald] + input: [[nuggetDiamond, redstone, nuggetDiamond] ["oc:circuitChip3", "oc:materialCU", ""] - [emerald, "oc:materialCircuitBoardPrinted", emerald]] + [nuggetDiamond, "oc:materialCircuitBoardPrinted", nuggetDiamond]] } cpu1 { input: [[nuggetIron, redstone, nuggetIron] @@ -496,9 +511,9 @@ cpu2 { [nuggetGold, "oc:materialALU", nuggetGold]] } cpu3 { - input: [[emerald, redstone, emerald] + input: [[nuggetDiamond, redstone, nuggetDiamond] ["oc:circuitChip3", "oc:materialCU", "oc:circuitChip3"] - [emerald, "oc:materialALU", emerald]] + [nuggetDiamond, "oc:materialALU", nuggetDiamond]] } cu { input: [[nuggetGold, redstone, nuggetGold] @@ -508,7 +523,8 @@ cu { rawCircuitBoard { type: shapeless - input: [nuggetGold, clay, dyeGreen] + input: [ingotGold, clay, dyeGreen] + output: 8 } circuitBoard = false printedCircuitBoard { @@ -585,12 +601,12 @@ geolyzer { } hologram1 { input: [["oc:circuitChip2", paneGlass, "oc:circuitChip2"] - ["oc:materialCircuitBoardPrinted", gemDiamond, "oc:materialCircuitBoardPrinted"] + ["oc:materialCircuitBoardPrinted", nuggetDiamond, "oc:materialCircuitBoardPrinted"] [obsidian, yellowDust, obsidian]] } hologram2 { input: [["oc:circuitChip3", blockGlass, "oc:circuitChip3"] - ["oc:materialCircuitBoardPrinted", blockDiamond, "oc:materialCircuitBoardPrinted"] + ["oc:materialCircuitBoardPrinted", gemDiamond, "oc:materialCircuitBoardPrinted"] [obsidian, blazePowder, obsidian]] } keyboard { @@ -623,7 +639,7 @@ powerDistributor { [ingotIron, "oc:materialCircuitBoardPrinted", ingotIron]] } rack { - input: [["oc:circuitChip2", "oc:wlanCard", "oc:circuitChip2"] + input: [[gemDiamond, "oc:wlanCard", gemDiamond] [fenceIron, chest, fenceIron] ["oc:relay", "oc:materialCircuitBoardPrinted", "oc:powerDistributor"]] } diff --git a/src/main/resources/assets/opencomputers/recipes/hardmode.recipes b/src/main/resources/assets/opencomputers/recipes/hardmode.recipes index 1b777e973..eee57616c 100644 --- a/src/main/resources/assets/opencomputers/recipes/hardmode.recipes +++ b/src/main/resources/assets/opencomputers/recipes/hardmode.recipes @@ -240,6 +240,11 @@ alu { ["oc:materialTransistor", "oc:materialTransistor", "oc:materialTransistor"] [nuggetIron, redstone, nuggetIron]] } +apu2 { + input: [[gemDiamond, "oc:circuitChip2", gemDiamond] + ["oc:cpu3", "oc:componentBus2", "oc:graphicsCard2"] + [gemDiamond, "oc:circuitChip2", gemDiamond]] +} componentBus1 { input: [[nuggetIron, redstone, nuggetIron] ["oc:circuitChip1", "oc:materialCU", ""] @@ -347,6 +352,16 @@ geolyzer { [eyeOfEnder, "oc:circuitChip2", eyeOfEnder] [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 { input: [["oc:materialButtonGroup", "oc:materialButtonGroup", "oc:materialButtonGroup"] ["oc:materialButtonGroup", "oc:materialArrowKey", "oc:materialNumPad"]] diff --git a/src/main/resources/assets/opencomputers/textures/items/DiamondNugget.png b/src/main/resources/assets/opencomputers/textures/items/DiamondNugget.png new file mode 100644 index 0000000000000000000000000000000000000000..447b8190af3be7bae5622d768e2e498f75f89b30 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!fo=>VS)SL@kRRN|vo-MjVr`?vr9|A*|`e)-*-YwzCz*+=)P zS^$-CmIV0)1G!+p5bR$e1Qay)ba4!+xRvz4fte?T+rYqJ0f)hc%?8GcI5rq;HZ)ws xxxr}B48~vv@q{E*g#!l - 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 _ => - } + tryRegisterNugget[item.IronNugget](Constants.ItemName.IronNugget, "nuggetIron", net.minecraft.init.Items.iron_ingot, "ingotIron") + tryRegisterNugget[item.DiamondNugget](Constants.ItemName.DiamondNugget, "nuggetDiamond", net.minecraft.init.Items.diamond, "gemDiamond") // Avoid issues with Extra Utilities registering colored obsidian as `obsidian` // oredict entry, but not normal obsidian, breaking some recipes. @@ -108,6 +99,24 @@ class Proxy { 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*) { if (OreDictionary.getOres(name).isEmpty) { for (item <- items) { diff --git a/src/main/scala/li/cil/oc/common/init/Items.scala b/src/main/scala/li/cil/oc/common/init/Items.scala index c7ff6ceac..8fc33bd8b 100644 --- a/src/main/scala/li/cil/oc/common/init/Items.scala +++ b/src/main/scala/li/cil/oc/common/init/Items.scala @@ -533,6 +533,7 @@ object Items extends ItemAPI { 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.UpgradeTrading(multi), Constants.ItemName.TradingUpgrade, "oc:tradingUpgrade") + registerItem(new item.DiamondNugget(multi), Constants.ItemName.DiamondNugget) // Register aliases. for ((k, v) <- aliases) { diff --git a/src/main/scala/li/cil/oc/common/item/DiamondNugget.scala b/src/main/scala/li/cil/oc/common/item/DiamondNugget.scala new file mode 100644 index 000000000..821a05834 --- /dev/null +++ b/src/main/scala/li/cil/oc/common/item/DiamondNugget.scala @@ -0,0 +1,3 @@ +package li.cil.oc.common.item + +class DiamondNugget(val parent: Delegator) extends traits.Delegate diff --git a/src/main/scala/li/cil/oc/common/item/IronNugget.scala b/src/main/scala/li/cil/oc/common/item/IronNugget.scala index 0d329dc8d..dd7591389 100644 --- a/src/main/scala/li/cil/oc/common/item/IronNugget.scala +++ b/src/main/scala/li/cil/oc/common/item/IronNugget.scala @@ -1,7 +1,3 @@ package li.cil.oc.common.item -import li.cil.oc.integration.Mods - -class IronNugget(val parent: Delegator) extends traits.Delegate { - showInItemList = !Mods.GregTech.isAvailable -} +class IronNugget(val parent: Delegator) extends traits.Delegate \ No newline at end of file