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 000000000..d971dae56 Binary files /dev/null and b/src/main/resources/assets/opencomputers/textures/items/UpgradeRITEG.png differ 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) + } +}