From c9fbb42683627372cf06708d9d525298d26fca35 Mon Sep 17 00:00:00 2001 From: Florexiz Date: Sun, 16 Jan 2022 12:06:13 +0300 Subject: [PATCH] Added RITEG upgrade Tier 3 upgrade that can be inserted in microcontrollers, robots and drones. Generates a bit less energy than regular generator. --- .../assets/opencomputers/lang/en_US.lang | 3 ++ .../textures/items/UpgradeRITEG.png | Bin 0 -> 487 bytes src/main/scala/li/cil/oc/Constants.scala | 1 + src/main/scala/li/cil/oc/Settings.scala | 1 + .../scala/li/cil/oc/common/init/Items.scala | 2 + .../li/cil/oc/common/item/UpgradeRITEG.scala | 7 +++ .../opencomputers/DriverUpgradeRITEG.scala | 23 ++++++++++ .../opencomputers/ModOpenComputers.scala | 2 + .../oc/server/component/UpgradeRITEG.scala | 40 ++++++++++++++++++ 9 files changed, 79 insertions(+) create mode 100644 src/main/resources/assets/opencomputers/textures/items/UpgradeRITEG.png create mode 100644 src/main/scala/li/cil/oc/common/item/UpgradeRITEG.scala create mode 100644 src/main/scala/li/cil/oc/integration/opencomputers/DriverUpgradeRITEG.scala create mode 100644 src/main/scala/li/cil/oc/server/component/UpgradeRITEG.scala diff --git a/src/main/resources/assets/opencomputers/lang/en_US.lang b/src/main/resources/assets/opencomputers/lang/en_US.lang index 3786961d4..e28b48855 100644 --- a/src/main/resources/assets/opencomputers/lang/en_US.lang +++ b/src/main/resources/assets/opencomputers/lang/en_US.lang @@ -165,6 +165,7 @@ item.oc.MicrocontrollerCase3.name=Microcontroller Case (Tier 3) item.oc.Server3.name=Server (Tier 4) item.oc.TabletCase3.name=Tablet Case (Tier 3) item.oc.UpgradeBeekeeper.name=Beekeeper Upgrade +item.oc.UpgradeRITEG.name=RITEG Upgrade # Entities entity.oc.Drone.name=Drone @@ -400,6 +401,8 @@ oc:tooltip.Waypoint=Provides a point of reference to devices with a navigation u oc:tooltip.WirelessNetworkCard=Allows wireless sending of network messages in addition to normal ones. You can adjust the §fsignal strength§7 to control how far messages are sent. Higher signal strength results in higher energy consumption. oc:tooltip.WorldSensorCard=Allows reading out information about the world, such as its gravity and whether it has a breathable atmosphere. Use results at own risk. The manufacturer takes no responsibility for bodily or material harm caused by decisions made upon the cards' outputs. We have lawyers. And money. Don't even try. oc:tooltip.Wrench=A hybrid of Screwdriver and Wrench, this tool is easy to learn, but hard to master. +oc:tooltip.UpgradeRITEG=Pocket nuke for your robots. Generates energy at %s%% of the speed of a Stirling Engine. + #Achievements achievement.oc.adapter=Plug In Baby diff --git a/src/main/resources/assets/opencomputers/textures/items/UpgradeRITEG.png b/src/main/resources/assets/opencomputers/textures/items/UpgradeRITEG.png new file mode 100644 index 0000000000000000000000000000000000000000..d971dae56fe553c4fe19632c9a7c13fba3341ceb GIT binary patch literal 487 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940eneBK~y+Tm6E+~ z!axkieT4>uIFFfe1ylzo=fgkBRf7F~PpQj}y`W9c zY`uWWyWLK-UlJUTN6NB{GPh38rlLBI0$-U*0(6;o;LZrNaX|Y3pB4d?m)7ZYxHG=* z7gva+K=oR!Mw`usZL8Hvyh6L(&OOiLpnkv4RS=+wu%69k{4aKjmw1%`Gp@5-U4aeg dEhI@|z5#<0wvd3$JN5to002ovPDHLkV1i7(+4uke literal 0 HcmV?d00001 diff --git a/src/main/scala/li/cil/oc/Constants.scala b/src/main/scala/li/cil/oc/Constants.scala index 45a7b52da..226ee5c3e 100644 --- a/src/main/scala/li/cil/oc/Constants.scala +++ b/src/main/scala/li/cil/oc/Constants.scala @@ -143,6 +143,7 @@ object Constants { final val RawCircuitBoard = "rawCircuitBoard" final val RedstoneCardTier1 = "redstoneCard1" final val RedstoneCardTier2 = "redstoneCard2" + final val RITEGUpgrade = "ritegUpgrade" final val ServerCreative = "serverCreative" final val ServerTier1 = "server1" final val ServerTier2 = "server2" diff --git a/src/main/scala/li/cil/oc/Settings.scala b/src/main/scala/li/cil/oc/Settings.scala index ef60188ac..ddd8e0766 100644 --- a/src/main/scala/li/cil/oc/Settings.scala +++ b/src/main/scala/li/cil/oc/Settings.scala @@ -149,6 +149,7 @@ class Settings(val config: Config) { val chargeRateTablet = config.getDouble("power.chargerChargeRateTablet") val generatorEfficiency = config.getDouble("power.generatorEfficiency") val solarGeneratorEfficiency = config.getDouble("power.solarGeneratorEfficiency") + val ritegUpgradeEfficiency = try { config.getDouble("power.ritegEfficiency") } catch { case _ : Throwable => 0.6} val assemblerTickAmount = config.getDouble("power.assemblerTickAmount") max 1 val disassemblerTickAmount = config.getDouble("power.disassemblerTickAmount") max 1 val printerTickAmount = config.getDouble("power.printerTickAmount") max 1 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 2acdc2e1b..733e07ee9 100644 --- a/src/main/scala/li/cil/oc/common/init/Items.scala +++ b/src/main/scala/li/cil/oc/common/init/Items.scala @@ -551,6 +551,8 @@ object Items extends ItemAPI { Recipes.addSubItem(new item.WirelessNetworkCard(multi, Tier.One), Constants.ItemName.WirelessNetworkCardTier1, "oc:wlanCard1") registerItem(new item.ComponentBus(multi, Tier.Four), Constants.ItemName.ComponentBusCreative) + Recipes.addSubItem(new item.UpgradeRITEG(multi), Constants.ItemName.RITEGUpgrade) + // Register aliases. for ((k, v) <- aliases) { descriptors.getOrElseUpdate(k, descriptors(v)) diff --git a/src/main/scala/li/cil/oc/common/item/UpgradeRITEG.scala b/src/main/scala/li/cil/oc/common/item/UpgradeRITEG.scala new file mode 100644 index 000000000..10ebd9510 --- /dev/null +++ b/src/main/scala/li/cil/oc/common/item/UpgradeRITEG.scala @@ -0,0 +1,7 @@ +package li.cil.oc.common.item + +import li.cil.oc.Settings + +class UpgradeRITEG(val parent: Delegator) extends traits.Delegate with traits.ItemTier { + override protected def tooltipData = Seq((Settings.get.ritegUpgradeEfficiency * 100).toInt) +} diff --git a/src/main/scala/li/cil/oc/integration/opencomputers/DriverUpgradeRITEG.scala b/src/main/scala/li/cil/oc/integration/opencomputers/DriverUpgradeRITEG.scala new file mode 100644 index 000000000..9c4b8b899 --- /dev/null +++ b/src/main/scala/li/cil/oc/integration/opencomputers/DriverUpgradeRITEG.scala @@ -0,0 +1,23 @@ +package li.cil.oc.integration.opencomputers + +import li.cil.oc.Constants +import li.cil.oc.api +import li.cil.oc.api.driver.item.HostAware +import li.cil.oc.api.network.EnvironmentHost +import li.cil.oc.common.Slot +import li.cil.oc.common.Tier +import li.cil.oc.server.component.UpgradeRITEG +import net.minecraft.item.ItemStack + +object DriverUpgradeRITEG extends Item with HostAware { + override def worksWith(stack: ItemStack) = isOneOf(stack, + api.Items.get(Constants.ItemName.RITEGUpgrade)) + + override def createEnvironment(stack: ItemStack, host: EnvironmentHost) = + if (host.world != null && host.world.isRemote) null + else new UpgradeRITEG(host) + + override def slot(stack: ItemStack) = Slot.Upgrade + + override def tier(stack: ItemStack) = Tier.Three +} diff --git a/src/main/scala/li/cil/oc/integration/opencomputers/ModOpenComputers.scala b/src/main/scala/li/cil/oc/integration/opencomputers/ModOpenComputers.scala index f9eddae1d..e8903a77a 100644 --- a/src/main/scala/li/cil/oc/integration/opencomputers/ModOpenComputers.scala +++ b/src/main/scala/li/cil/oc/integration/opencomputers/ModOpenComputers.scala @@ -164,6 +164,7 @@ object ModOpenComputers extends ModProxy { api.Driver.add(DriverUpgradeLeash) api.Driver.add(DriverUpgradeNavigation) api.Driver.add(DriverUpgradePiston) + api.Driver.add(DriverUpgradeRITEG) api.Driver.add(DriverUpgradeSign) api.Driver.add(DriverUpgradeSolarGenerator) api.Driver.add(DriverUpgradeTank) @@ -227,6 +228,7 @@ object ModOpenComputers extends ModProxy { Constants.ItemName.InventoryUpgrade, Constants.ItemName.NavigationUpgrade, Constants.ItemName.PistonUpgrade, + Constants.ItemName.RITEGUpgrade, Constants.ItemName.SolarGeneratorUpgrade, Constants.ItemName.TankUpgrade, Constants.ItemName.TractorBeamUpgrade, diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeRITEG.scala b/src/main/scala/li/cil/oc/server/component/UpgradeRITEG.scala new file mode 100644 index 000000000..66a58047a --- /dev/null +++ b/src/main/scala/li/cil/oc/server/component/UpgradeRITEG.scala @@ -0,0 +1,40 @@ +package li.cil.oc.server.component + +import java.util + +import li.cil.oc.Constants +import li.cil.oc.api.driver.DeviceInfo.DeviceAttribute +import li.cil.oc.api.driver.DeviceInfo.DeviceClass +import li.cil.oc.Settings +import li.cil.oc.api.Network +import li.cil.oc.api.driver.DeviceInfo +import li.cil.oc.api.network.EnvironmentHost +import li.cil.oc.api.network.Visibility +import li.cil.oc.api.prefab + +import scala.collection.convert.WrapAsJava._ + +class UpgradeRITEG(val host: EnvironmentHost) extends prefab.ManagedEnvironment with DeviceInfo { + override val node = Network.newNode(this, Visibility.Network). + withConnector(). + create() + + private final lazy val deviceInfo = Map( + DeviceAttribute.Class -> DeviceClass.Power, + DeviceAttribute.Description -> "Radioisotope thermoelectric generator", + DeviceAttribute.Vendor -> Constants.DeviceInfo.DefaultVendor, + DeviceAttribute.Product -> "Hazmat protection not included" + ) + + override def getDeviceInfo: util.Map[String, String] = deviceInfo + + // ----------------------------------------------------------------------- // + + override val canUpdate = true + + override def update() { + super.update() + + node.changeBuffer(Settings.get.ritegUpgradeEfficiency) + } +}