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 000000000..447b8190a Binary files /dev/null and b/src/main/resources/assets/opencomputers/textures/items/DiamondNugget.png differ diff --git a/src/main/scala/li/cil/oc/Constants.scala b/src/main/scala/li/cil/oc/Constants.scala index 2af38dff2..929f8ffa6 100644 --- a/src/main/scala/li/cil/oc/Constants.scala +++ b/src/main/scala/li/cil/oc/Constants.scala @@ -87,6 +87,7 @@ object Constants { final val DataCardTier3 = "dataCard3" final val DebugCard = "debugCard" final val Debugger = "debugger" + final val DiamondNugget = "nuggetDiamond" final val Disk = "disk" final val DiskDriveMountable = "diskDriveMountable" final val Drone = "drone" diff --git a/src/main/scala/li/cil/oc/common/Proxy.scala b/src/main/scala/li/cil/oc/common/Proxy.scala index 1a975d514..620adef7f 100644 --- a/src/main/scala/li/cil/oc/common/Proxy.scala +++ b/src/main/scala/li/cil/oc/common/Proxy.scala @@ -11,16 +11,19 @@ import li.cil.oc.common.entity.Drone import li.cil.oc.common.init.Blocks import li.cil.oc.common.init.Items 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.integration.Mods import li.cil.oc.server._ import li.cil.oc.server.machine.luac.LuaStateFactory import li.cil.oc.server.machine.luac.NativeLua52Architecture import li.cil.oc.server.machine.luaj.LuaJLuaArchitecture +import net.minecraft.item.Item import net.minecraft.item.ItemStack import net.minecraftforge.oredict.OreDictionary import scala.collection.convert.WrapAsScala._ +import scala.reflect.ClassTag class Proxy { 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.trapped_chest) - val nuggetIron = Items.get(Constants.ItemName.IronNugget).createItemStack(1) - registerExclusive("nuggetIron", nuggetIron) - - 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 _ => - } + 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