Skip to content

Commit 8e2f5a8

Browse files
hinybAX3LinoDream-MasterUltraProdigyguneykabel
authored
feat(thaumcraft): Added new item ArcaneCraftingUpgrade (#170)
Co-authored-by: AX3Lino <ax3lino@gmail.com> Co-authored-by: Martin Robertz <dream-master@gmx.net> Co-authored-by: UltraProdigy <187078471+UltraProdigy@users.noreply.github.com> Co-authored-by: guneykabel <60798455+guneykabel@users.noreply.github.com>
1 parent 5dd223b commit 8e2f5a8

10 files changed

Lines changed: 406 additions & 2 deletions

File tree

src/main/resources/assets/opencomputers/lang/en_US.lang

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ item.oc.UpgradeContainerUpgrade0.name=Upgrade Container (Tier 1)
143143
item.oc.UpgradeContainerUpgrade1.name=Upgrade Container (Tier 2)
144144
item.oc.UpgradeContainerUpgrade2.name=Upgrade Container (Tier 3)
145145
item.oc.UpgradeCrafting.name=Crafting Upgrade
146+
item.oc.UpgradeArcaneCrafting.name=Arcane Crafting Upgrade
146147
item.oc.UpgradeDatabase0.name=Database Upgrade (Tier 1)
147148
item.oc.UpgradeDatabase1.name=Database Upgrade (Tier 2)
148149
item.oc.UpgradeDatabase2.name=Database Upgrade (Tier 3)

src/main/resources/assets/opencomputers/recipes/default.recipes

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,10 @@ beekeeperUpgrade {
249249
["oc:circuitChip3", {item="Forestry:beealyzer"}, "oc:circuitChip3"]
250250
[ingotGold, "oc:materialCircuitBoardPrinted", ingotGold]]
251251
}
252+
arcaneCraftingUpgrade {
253+
type: shapeless
254+
input: ["oc:craftingUpgrade", {item="Thaumcraft:blockTable", subID=15}, "oc:circuitChip2"]
255+
}
252256

253257
configuratorUpgrade {
254258
input: [[ingotIron, "", ingotIron]
399 Bytes
Loading

src/main/scala/li/cil/oc/Constants.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ object Constants {
8181
final val CPUTier2 = "cpu2"
8282
final val CPUTier3 = "cpu3"
8383
final val CraftingUpgrade = "craftingUpgrade"
84+
final val ArcaneCraftingUpgrade = "arcaneCraftingUpgrade"
8485
final val ControlUnit = "cu"
8586
final val CuttingWire = "cuttingWire"
8687
final val DatabaseUpgradeTier1 = "databaseUpgrade1"

src/main/scala/li/cil/oc/client/Textures.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ object Textures {
6969
val blockRackTerminalServerPresence = new ResourceLocation(Settings.resourceDomain, "textures/blocks/TerminalServerFrontPresence.png")
7070

7171
val upgradeCrafting = new ResourceLocation(Settings.resourceDomain, "textures/model/UpgradeCrafting.png")
72+
val upgradeArcaneCrafting = new ResourceLocation(Settings.resourceDomain, "textures/items/UpgradeArcaneCrafting.png")
7273
val upgradeGenerator = new ResourceLocation(Settings.resourceDomain, "textures/model/UpgradeGenerator.png")
7374
val upgradeInventory = new ResourceLocation(Settings.resourceDomain, "textures/model/UpgradeInventory.png")
7475

src/main/scala/li/cil/oc/integration/opencomputers/ModOpenComputers.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@ object ModOpenComputers extends ModProxy {
227227
Constants.ItemName.BatteryUpgradeTier3,
228228
Constants.ItemName.ChunkloaderUpgrade,
229229
Constants.ItemName.CraftingUpgrade,
230+
Constants.ItemName.ArcaneCraftingUpgrade,
230231
Constants.ItemName.ExperienceUpgrade,
231232
Constants.ItemName.GeneratorUpgrade,
232233
Constants.ItemName.HoverUpgradeTier1,
@@ -260,6 +261,7 @@ object ModOpenComputers extends ModProxy {
260261
Constants.ItemName.RedstoneCardTier1,
261262
Constants.ItemName.AngelUpgrade,
262263
Constants.ItemName.CraftingUpgrade,
264+
Constants.ItemName.ArcaneCraftingUpgrade,
263265
Constants.ItemName.HoverUpgradeTier1,
264266
Constants.ItemName.HoverUpgradeTier2,
265267
Constants.ItemName.BeekeeperUpgrade,
@@ -277,6 +279,7 @@ object ModOpenComputers extends ModProxy {
277279
Constants.ItemName.GraphicsCardTier3,
278280
Constants.ItemName.AngelUpgrade,
279281
Constants.ItemName.CraftingUpgrade,
282+
Constants.ItemName.ArcaneCraftingUpgrade,
280283
Constants.ItemName.DatabaseUpgradeTier1,
281284
Constants.ItemName.DatabaseUpgradeTier2,
282285
Constants.ItemName.DatabaseUpgradeTier3,
@@ -313,6 +316,7 @@ object ModOpenComputers extends ModProxy {
313316
Constants.ItemName.AngelUpgrade,
314317
Constants.ItemName.ChunkloaderUpgrade,
315318
Constants.ItemName.CraftingUpgrade,
319+
Constants.ItemName.ArcaneCraftingUpgrade,
316320
Constants.ItemName.DatabaseUpgradeTier1,
317321
Constants.ItemName.DatabaseUpgradeTier2,
318322
Constants.ItemName.DatabaseUpgradeTier3,
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package li.cil.oc.integration.thaumcraft
2+
3+
import li.cil.oc.api.driver.EnvironmentProvider
4+
import li.cil.oc.api.driver.item.HostAware
5+
import li.cil.oc.api.internal.Robot
6+
import li.cil.oc.api.network.{EnvironmentHost, ManagedEnvironment}
7+
import li.cil.oc.common.{Slot, Tier}
8+
import li.cil.oc.integration.opencomputers.Item
9+
import li.cil.oc.{Constants, api}
10+
import net.minecraft.item.ItemStack
11+
12+
object DriverUpgradeArcaneCrafting extends Item with HostAware {
13+
override def worksWith(stack: ItemStack): Boolean = isOneOf(stack,
14+
api.Items.get(Constants.ItemName.ArcaneCraftingUpgrade))
15+
16+
override def createEnvironment(stack: ItemStack, host: EnvironmentHost): ManagedEnvironment =
17+
if (host.world != null && host.world.isRemote) null
18+
else host match {
19+
case robot: EnvironmentHost with Robot => new UpgradeArcaneCrafting(robot)
20+
case _ => null
21+
}
22+
23+
override def slot(stack: ItemStack): String = Slot.Upgrade
24+
25+
override def tier(stack: ItemStack): Int = Tier.Two
26+
27+
object Provider extends EnvironmentProvider {
28+
override def getEnvironment(stack: ItemStack): Class[_] =
29+
if (worksWith(stack))
30+
classOf[UpgradeArcaneCrafting]
31+
else null
32+
}
33+
34+
}
Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,52 @@
11
package li.cil.oc.integration.thaumcraft
22

3-
import li.cil.oc.api.Driver
3+
import cpw.mods.fml.common.registry.GameRegistry
4+
import li.cil.oc.Constants
5+
import li.cil.oc.api.{Driver, Items}
6+
import li.cil.oc.api.driver.item.UpgradeRenderer.MountPointName
7+
import li.cil.oc.api.event.RobotRenderEvent.MountPoint
8+
import li.cil.oc.api.internal.Robot
9+
import li.cil.oc.common.recipe.Recipes
410
import li.cil.oc.integration.{ModProxy, Mods}
11+
import net.minecraft.item.ItemStack
12+
import org.lwjgl.opengl.GL11
13+
import thaumcraft.client.lib.UtilsFX
14+
import thaumcraft.client.renderers.models.ModelArcaneWorkbench
515

616
object ModThaumcraft extends ModProxy {
717
override def getMod = Mods.Thaumcraft
818

919
override def initialize() {
1020
Driver.add(new DriverAspectContainer)
1121
Driver.add(new DriverInfusionMatrix)
12-
22+
Driver.add(DriverUpgradeArcaneCrafting)
23+
Driver.add(DriverUpgradeArcaneCrafting.Provider)
1324
Driver.add(ConverterAspectItem)
25+
26+
val multi = new li.cil.oc.common.item.Delegator() {
27+
private lazy val workbenchModel = new ModelArcaneWorkbench
28+
private lazy val ArcaneUpgrade = Items.get(Constants.ItemName.ArcaneCraftingUpgrade)
29+
30+
override def computePreferredMountPoint(stack: ItemStack, robot: Robot, availableMountPoints: java.util.Set[String]): String = Items.get(stack) match {
31+
case ArcaneUpgrade => MountPointName.Any
32+
case _ => MountPointName.None
33+
}
34+
35+
override def render(stack: ItemStack, mountPoint: MountPoint, robot: Robot, pt: Float): Unit = Items.get(stack) match {
36+
case ArcaneUpgrade =>
37+
UtilsFX.bindTexture("textures/models/worktable.png")
38+
GL11.glRotatef(mountPoint.rotation.getW, mountPoint.rotation.getX, mountPoint.rotation.getY, mountPoint.rotation.getZ)
39+
GL11.glTranslatef(mountPoint.offset.getX, mountPoint.offset.getY, mountPoint.offset.getZ)
40+
GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F)
41+
GL11.glTranslatef(0.0F, -0.1F, 0.0F)
42+
GL11.glScalef(0.2F, 0.2F, 0.2F)
43+
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F)
44+
workbenchModel.renderAll()
45+
case _ =>
46+
}
47+
}
48+
49+
GameRegistry.registerItem(multi, "item.thaumcraft")
50+
Recipes.addSubItem(new item.UpgradeArcaneCrafting(multi), Constants.ItemName.ArcaneCraftingUpgrade, "oc:arcaneCraftingUpgrade")
1451
}
1552
}

0 commit comments

Comments
 (0)