From d5012a6873a839bbbc6822411dac81428a59bf9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Sat, 2 Aug 2014 19:32:45 +0200 Subject: [PATCH] Added IC2 classic power support. Switched things around a bit, power traits don't implement their interfaces by default now, instead they get injected by the class transformer if the power mod is present to avoid class not found errors in conjunction with interface stripping seemingly getting confused by Scala's synthetic classes. --- libs/Factorization-0.8.34-api.jar | Bin 56360 -> 0 bytes libs/factorization-api.zip | Bin 0 -> 56683 bytes libs/ic2classic-api.zip | Bin 0 -> 6812 bytes src/main/scala/li/cil/oc/Settings.scala | 8 +- .../scala/li/cil/oc/common/EventHandler.scala | 37 ++++++--- .../cil/oc/common/asm/ClassTransformer.scala | 23 +++++- .../cil/oc/common/block/PowerConverter.scala | 2 +- .../tileentity/traits/PowerAcceptor.scala | 3 +- .../tileentity/traits/power/BuildCraft.scala | 5 +- .../traits/power/Factorization.scala | 12 +-- .../power/IndustrialCraft2Classic.scala | 71 ++++++++++++++++++ .../traits/power/IndustrialCraft2Common.scala | 7 ++ ...ala => IndustrialCraft2Experimental.scala} | 15 +--- .../tileentity/traits/power/Mekanism.scala | 14 ++-- .../traits/power/ThermalExpansion.scala | 4 +- .../traits/power/UniversalElectricity.scala | 19 ++--- src/main/scala/li/cil/oc/util/mods/Mods.scala | 26 +++++-- 17 files changed, 176 insertions(+), 70 deletions(-) delete mode 100644 libs/Factorization-0.8.34-api.jar create mode 100644 libs/factorization-api.zip create mode 100644 libs/ic2classic-api.zip create mode 100644 src/main/scala/li/cil/oc/common/tileentity/traits/power/IndustrialCraft2Classic.scala create mode 100644 src/main/scala/li/cil/oc/common/tileentity/traits/power/IndustrialCraft2Common.scala rename src/main/scala/li/cil/oc/common/tileentity/traits/power/{IndustrialCraft2.scala => IndustrialCraft2Experimental.scala} (78%) diff --git a/libs/Factorization-0.8.34-api.jar b/libs/Factorization-0.8.34-api.jar deleted file mode 100644 index df7a75b3734026430b30ec156f35fa65195e6ee2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56360 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
    { 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 b@~mVv;49I=gK-p|i;;1);3DVw2>$keDcB_^ diff --git a/libs/factorization-api.zip b/libs/factorization-api.zip new file mode 100644 index 0000000000000000000000000000000000000000..38a1ee25e6ecddbfda4e58761d6a8717a5af1ffe GIT binary patch literal 56683 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 (A&i{pnKH1O1ED@&v2@Fu)#`PPGe|Z;l1t|5Q}l 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 if (!tileEntity.addedToPowerGrid && !tileEntity.isInvalid) { - MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(tileEntity)) - tileEntity.addedToPowerGrid = true + pending += (() => if (!tileEntity.addedToIC2PowerGrid && !tileEntity.isInvalid) { + MinecraftForge.EVENT_BUS.post(new ic2.api.energy.event.EnergyTileLoadEvent(tileEntity.asInstanceOf[ic2.api.energy.tile.IEnergyTile])) + tileEntity.addedToIC2PowerGrid = true }) } } @Optional.Method(modid = Mods.IDs.IndustrialCraft2) - def scheduleIC2Remove(tileEntity: power.IndustrialCraft2) { + def scheduleIC2Remove(tileEntity: power.IndustrialCraft2Experimental) { if (SideTracker.isServer) pending.synchronized { - pending += (() => if (tileEntity.addedToPowerGrid) { - MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(tileEntity)) - tileEntity.addedToPowerGrid = false + pending += (() => if (tileEntity.addedToIC2PowerGrid) { + MinecraftForge.EVENT_BUS.post(new ic2.api.energy.event.EnergyTileUnloadEvent(tileEntity.asInstanceOf[ic2.api.energy.tile.IEnergyTile])) + tileEntity.addedToIC2PowerGrid = false + }) + } + } + + @Optional.Method(modid = Mods.IDs.IndustrialCraft2Classic) + def scheduleIC2Add(tileEntity: power.IndustrialCraft2Classic) { + if (SideTracker.isServer) pending.synchronized { + pending += (() => if (!tileEntity.addedToIC2PowerGrid && !tileEntity.isInvalid) { + MinecraftForge.EVENT_BUS.post(new ic2classic.api.energy.event.EnergyTileLoadEvent(tileEntity.asInstanceOf[ic2classic.api.energy.tile.IEnergyTile])) + tileEntity.addedToIC2PowerGrid = true + }) + } + } + + @Optional.Method(modid = Mods.IDs.IndustrialCraft2Classic) + def scheduleIC2Remove(tileEntity: power.IndustrialCraft2Classic) { + if (SideTracker.isServer) pending.synchronized { + pending += (() => if (tileEntity.addedToIC2PowerGrid) { + MinecraftForge.EVENT_BUS.post(new ic2classic.api.energy.event.EnergyTileUnloadEvent(tileEntity.asInstanceOf[ic2classic.api.energy.tile.IEnergyTile])) + tileEntity.addedToIC2PowerGrid = false }) } } diff --git a/src/main/scala/li/cil/oc/common/asm/ClassTransformer.scala b/src/main/scala/li/cil/oc/common/asm/ClassTransformer.scala index aedc70daa..2de8f0dbb 100644 --- a/src/main/scala/li/cil/oc/common/asm/ClassTransformer.scala +++ b/src/main/scala/li/cil/oc/common/asm/ClassTransformer.scala @@ -5,6 +5,7 @@ import java.util.logging.{Level, Logger} import cpw.mods.fml.common.asm.transformers.deobf.FMLDeobfuscatingRemapper import li.cil.oc.common.asm.template.SimpleComponentImpl import li.cil.oc.util.mods.Mods +import li.cil.oc.util.mods.Mods.Mod import net.minecraft.launchwrapper.{IClassTransformer, LaunchClassLoader} import org.objectweb.asm.tree._ import org.objectweb.asm.{ClassReader, ClassWriter, Opcodes} @@ -13,9 +14,19 @@ import scala.collection.convert.WrapAsJava._ import scala.collection.convert.WrapAsScala._ class ClassTransformer extends IClassTransformer { - val loader = classOf[ClassTransformer].getClassLoader.asInstanceOf[LaunchClassLoader] + private val loader = classOf[ClassTransformer].getClassLoader.asInstanceOf[LaunchClassLoader] - val log = Logger.getLogger("OpenComputers") + private val log = Logger.getLogger("OpenComputers") + + private lazy val powerTypes = Map[Mod, Array[String]]( + Mods.BuildCraftPower -> Array("buildcraft/api/power/IPowerReceptor"), + Mods.Factorization -> Array("factorization/api/IChargeConductor"), + Mods.IndustrialCraft2 -> Array("ic2/api/energy/tile/IEnergySink"), + Mods.IndustrialCraft2Classic -> Array("ic2classic/api/energy/tile/IEnergySink"), + Mods.Mekanism -> Array("mekanism/api/energy/IStrictEnergyAcceptor"), + Mods.ThermalExpansion -> Array("cofh/api/energy/IEnergyHandler"), + Mods.UniversalElectricity -> Array("universalelectricity/api/energy/IEnergyInterface", "universalelectricity/api/energy/IEnergyContainer") + ) override def transform(name: String, transformedName: String, basicClass: Array[Byte]): Array[Byte] = { var transformedClass = basicClass @@ -50,6 +61,14 @@ class ClassTransformer extends IClassTransformer { log.fine(s"Stripping method ${method.name} from class $name because the following types in its signature are missing: $missing") } classNode.methods.removeAll(incompleteMethods) + + // Inject available power interfaces into power acceptors. + if (classNode.interfaces.contains("li/cil/oc/common/tileentity/traits/PowerAcceptor")) { + for ((mod, interfaces) <- powerTypes if mod.isAvailable) { + interfaces.foreach(classNode.interfaces.add) + } + } + transformedClass = writeClass(classNode) } { diff --git a/src/main/scala/li/cil/oc/common/block/PowerConverter.scala b/src/main/scala/li/cil/oc/common/block/PowerConverter.scala index c8c5a5d1f..52bc5ff02 100644 --- a/src/main/scala/li/cil/oc/common/block/PowerConverter.scala +++ b/src/main/scala/li/cil/oc/common/block/PowerConverter.scala @@ -46,7 +46,7 @@ class PowerConverter(val parent: SimpleDelegator) extends SimpleDelegate { if (Mods.Factorization.isAvailable) { addRatio("Factorization", Settings.ratioFactorization) } - if (Mods.IndustrialCraft2.isAvailable) { + if (Mods.IndustrialCraft2.isAvailable || Mods.IndustrialCraft2Classic.isAvailable) { addRatio("IndustrialCraft2", Settings.ratioIndustrialCraft2) } if (Mods.Mekanism.isAvailable) { diff --git a/src/main/scala/li/cil/oc/common/tileentity/traits/PowerAcceptor.scala b/src/main/scala/li/cil/oc/common/tileentity/traits/PowerAcceptor.scala index 78bd6158b..078f407d3 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/traits/PowerAcceptor.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/traits/PowerAcceptor.scala @@ -4,7 +4,8 @@ trait PowerAcceptor extends power.Common with power.BuildCraft with power.Factorization - with power.IndustrialCraft2 + with power.IndustrialCraft2Experimental + with power.IndustrialCraft2Classic with power.Mekanism with power.ThermalExpansion with power.UniversalElectricity \ No newline at end of file diff --git a/src/main/scala/li/cil/oc/common/tileentity/traits/power/BuildCraft.scala b/src/main/scala/li/cil/oc/common/tileentity/traits/power/BuildCraft.scala index 73189c457..c210d4295 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/traits/power/BuildCraft.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/traits/power/BuildCraft.scala @@ -6,8 +6,7 @@ import li.cil.oc.Settings import li.cil.oc.util.mods.Mods import net.minecraftforge.common.ForgeDirection -@Optional.Interface(iface = "buildcraft.api.power.IPowerReceptor", modid = Mods.IDs.BuildCraftPower) -trait BuildCraft extends Common with IPowerReceptor { +trait BuildCraft extends Common { private var powerHandler: Option[AnyRef] = None private lazy val useBuildCraftPower = isServer && !Settings.get.ignorePower && Mods.BuildCraftPower.isAvailable @@ -32,7 +31,7 @@ trait BuildCraft extends Common with IPowerReceptor { @Optional.Method(modid = Mods.IDs.BuildCraftPower) def getPowerProvider = { if (powerHandler.isEmpty) { - val handler = new PowerHandler(this, PowerHandler.Type.MACHINE) + val handler = new PowerHandler(this.asInstanceOf[IPowerReceptor], PowerHandler.Type.MACHINE) if (handler != null) { handler.configure(1, 320, Float.MaxValue, 640) handler.configurePowerPerdition(0, 0) diff --git a/src/main/scala/li/cil/oc/common/tileentity/traits/power/Factorization.scala b/src/main/scala/li/cil/oc/common/tileentity/traits/power/Factorization.scala index 1b84311ad..6c98fa4c1 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/traits/power/Factorization.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/traits/power/Factorization.scala @@ -6,9 +6,9 @@ import li.cil.oc.Settings import li.cil.oc.util.mods.Mods import net.minecraftforge.common.ForgeDirection -@Optional.Interface(iface = "factorization.api.IChargeConductor", modid = Mods.IDs.Factorization) -trait Factorization extends Common with IChargeConductor { - private lazy val charge: AnyRef = new Charge(this) +trait Factorization extends Common { + @Optional.Method(modid = Mods.IDs.Factorization) + private lazy val charge: AnyRef = new Charge(this.asInstanceOf[IChargeConductor]) private lazy val useFactorizationPower = isServer && !Settings.get.ignorePower && Mods.Factorization.isAvailable @@ -45,11 +45,11 @@ trait Factorization extends Common with IChargeConductor { // ----------------------------------------------------------------------- // @Optional.Method(modid = Mods.IDs.Factorization) - override def getCharge = charge.asInstanceOf[Charge] + def getCharge = charge.asInstanceOf[Charge] @Optional.Method(modid = Mods.IDs.Factorization) - override def getInfo = "" + def getInfo = "" @Optional.Method(modid = Mods.IDs.Factorization) - override def getCoord = new Coord(this) + def getCoord = new Coord(this) } diff --git a/src/main/scala/li/cil/oc/common/tileentity/traits/power/IndustrialCraft2Classic.scala b/src/main/scala/li/cil/oc/common/tileentity/traits/power/IndustrialCraft2Classic.scala new file mode 100644 index 000000000..b1db4f03b --- /dev/null +++ b/src/main/scala/li/cil/oc/common/tileentity/traits/power/IndustrialCraft2Classic.scala @@ -0,0 +1,71 @@ +package li.cil.oc.common.tileentity.traits.power + +import cpw.mods.fml.common.Optional +import ic2classic.api.Direction +import li.cil.oc.Settings +import li.cil.oc.common.EventHandler +import li.cil.oc.util.mods.Mods +import net.minecraft.tileentity.TileEntity +import net.minecraftforge.common.ForgeDirection + +trait IndustrialCraft2Classic extends Common with IndustrialCraft2Common { + private var lastInjectedAmount = 0.0 + + private lazy val useIndustrialCraft2ClassicPower = isServer && !Settings.get.ignorePower && Mods.IndustrialCraft2Classic.isAvailable + + // ----------------------------------------------------------------------- // + + override def validate() { + super.validate() + if (useIndustrialCraft2ClassicPower && !addedToIC2PowerGrid) EventHandler.scheduleIC2Add(this) + } + + override def invalidate() { + super.invalidate() + if (useIndustrialCraft2ClassicPower && addedToIC2PowerGrid) EventHandler.scheduleIC2Remove(this) + } + + override def onChunkUnload() { + super.onChunkUnload() + if (useIndustrialCraft2ClassicPower && addedToIC2PowerGrid) EventHandler.scheduleIC2Remove(this) + } + + // ----------------------------------------------------------------------- // + + @Optional.Method(modid = Mods.IDs.IndustrialCraft2Classic) + def isAddedToEnergyNet = addedToIC2PowerGrid + + @Optional.Method(modid = Mods.IDs.IndustrialCraft2Classic) + def acceptsEnergyFrom(emitter: TileEntity, direction: Direction) = canConnectPower(direction.toForgeDirection) + + @Optional.Method(modid = Mods.IDs.IndustrialCraft2Classic) + def injectEnergy(directionFrom: Direction, amount: Int) = { + lastInjectedAmount = amount + var energy = amount * Settings.ratioIndustrialCraft2 + // Work around IC2 being uncooperative and always just passing 'unknown' along here. + if (directionFrom.toForgeDirection == ForgeDirection.UNKNOWN) { + for (side <- ForgeDirection.VALID_DIRECTIONS if energy > 0) { + energy -= tryChangeBuffer(side, energy) + } + (energy / Settings.ratioIndustrialCraft2).toInt + } + else (amount - tryChangeBuffer(directionFrom.toForgeDirection, energy) / Settings.ratioIndustrialCraft2).toInt + } + + @Optional.Method(modid = Mods.IDs.IndustrialCraft2Classic) + def demandsEnergy = { + if (Settings.get.ignorePower || isClient) 0 + else { + var force = false + val demand = ForgeDirection.VALID_DIRECTIONS.map(side => { + val size = globalBufferSize(side) + val value = globalBuffer(side) + val space = size - value + force = force || (space > size / 2) + space + }).max / Settings.ratioIndustrialCraft2 + if (force || lastInjectedAmount <= 0 || demand >= lastInjectedAmount) demand.toInt + else 0 + } + } +} diff --git a/src/main/scala/li/cil/oc/common/tileentity/traits/power/IndustrialCraft2Common.scala b/src/main/scala/li/cil/oc/common/tileentity/traits/power/IndustrialCraft2Common.scala new file mode 100644 index 000000000..666b9c6ae --- /dev/null +++ b/src/main/scala/li/cil/oc/common/tileentity/traits/power/IndustrialCraft2Common.scala @@ -0,0 +1,7 @@ +package li.cil.oc.common.tileentity.traits.power + +trait IndustrialCraft2Common { + var addedToIC2PowerGrid = false + + def getMaxSafeInput = Integer.MAX_VALUE +} diff --git a/src/main/scala/li/cil/oc/common/tileentity/traits/power/IndustrialCraft2.scala b/src/main/scala/li/cil/oc/common/tileentity/traits/power/IndustrialCraft2Experimental.scala similarity index 78% rename from src/main/scala/li/cil/oc/common/tileentity/traits/power/IndustrialCraft2.scala rename to src/main/scala/li/cil/oc/common/tileentity/traits/power/IndustrialCraft2Experimental.scala index 628eb1459..c61f4143d 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/traits/power/IndustrialCraft2.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/traits/power/IndustrialCraft2Experimental.scala @@ -1,16 +1,12 @@ package li.cil.oc.common.tileentity.traits.power import cpw.mods.fml.common.Optional -import ic2.api.energy.tile.IEnergySink import li.cil.oc.Settings import li.cil.oc.common.EventHandler import li.cil.oc.util.mods.Mods import net.minecraftforge.common.ForgeDirection -@Optional.Interface(iface = "ic2.api.energy.tile.IEnergySink", modid = Mods.IDs.IndustrialCraft2) -trait IndustrialCraft2 extends Common with IEnergySink { - var addedToPowerGrid = false - +trait IndustrialCraft2Experimental extends Common with IndustrialCraft2Common { private var lastInjectedAmount = 0.0 private lazy val useIndustrialCraft2Power = isServer && !Settings.get.ignorePower && Mods.IndustrialCraft2.isAvailable @@ -19,17 +15,17 @@ trait IndustrialCraft2 extends Common with IEnergySink { override def validate() { super.validate() - if (useIndustrialCraft2Power && !addedToPowerGrid) EventHandler.scheduleIC2Add(this) + if (useIndustrialCraft2Power && !addedToIC2PowerGrid) EventHandler.scheduleIC2Add(this) } override def invalidate() { super.invalidate() - if (useIndustrialCraft2Power && addedToPowerGrid) EventHandler.scheduleIC2Remove(this) + if (useIndustrialCraft2Power && addedToIC2PowerGrid) EventHandler.scheduleIC2Remove(this) } override def onChunkUnload() { super.onChunkUnload() - if (useIndustrialCraft2Power && addedToPowerGrid) EventHandler.scheduleIC2Remove(this) + if (useIndustrialCraft2Power && addedToIC2PowerGrid) EventHandler.scheduleIC2Remove(this) } // ----------------------------------------------------------------------- // @@ -51,9 +47,6 @@ trait IndustrialCraft2 extends Common with IEnergySink { else amount - tryChangeBuffer(directionFrom, energy) / Settings.ratioIndustrialCraft2 } - @Optional.Method(modid = Mods.IDs.IndustrialCraft2) - def getMaxSafeInput = Integer.MAX_VALUE - @Optional.Method(modid = Mods.IDs.IndustrialCraft2) def demandedEnergyUnits = { if (Settings.get.ignorePower || isClient) 0 diff --git a/src/main/scala/li/cil/oc/common/tileentity/traits/power/Mekanism.scala b/src/main/scala/li/cil/oc/common/tileentity/traits/power/Mekanism.scala index a2f29585b..73d0ba665 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/traits/power/Mekanism.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/traits/power/Mekanism.scala @@ -3,23 +3,21 @@ package li.cil.oc.common.tileentity.traits.power import cpw.mods.fml.common.Optional import li.cil.oc.Settings import li.cil.oc.util.mods.Mods -import mekanism.api.energy.IStrictEnergyAcceptor import net.minecraftforge.common.ForgeDirection -@Optional.Interface(iface = "mekanism.api.energy.IStrictEnergyAcceptor", modid = Mods.IDs.Mekanism) -trait Mekanism extends Common with IStrictEnergyAcceptor { +trait Mekanism extends Common { @Optional.Method(modid = Mods.IDs.Mekanism) - override def canReceiveEnergy(side: ForgeDirection) = canConnectPower(side) + def canReceiveEnergy(side: ForgeDirection) = canConnectPower(side) @Optional.Method(modid = Mods.IDs.Mekanism) - override def transferEnergyToAcceptor(side: ForgeDirection, amount: Double) = tryChangeBuffer(side, amount * Settings.ratioMekanism) / Settings.ratioMekanism + def transferEnergyToAcceptor(side: ForgeDirection, amount: Double) = tryChangeBuffer(side, amount * Settings.ratioMekanism) / Settings.ratioMekanism @Optional.Method(modid = Mods.IDs.Mekanism) - override def getMaxEnergy = ForgeDirection.VALID_DIRECTIONS.map(globalBufferSize).max / Settings.ratioMekanism + def getMaxEnergy = ForgeDirection.VALID_DIRECTIONS.map(globalBufferSize).max / Settings.ratioMekanism @Optional.Method(modid = Mods.IDs.Mekanism) - override def getEnergy = ForgeDirection.VALID_DIRECTIONS.map(globalBuffer).max / Settings.ratioMekanism + def getEnergy = ForgeDirection.VALID_DIRECTIONS.map(globalBuffer).max / Settings.ratioMekanism @Optional.Method(modid = Mods.IDs.Mekanism) - override def setEnergy(energy: Double) {} + def setEnergy(energy: Double) {} } diff --git a/src/main/scala/li/cil/oc/common/tileentity/traits/power/ThermalExpansion.scala b/src/main/scala/li/cil/oc/common/tileentity/traits/power/ThermalExpansion.scala index 69bff2ef6..d8b5c06bc 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/traits/power/ThermalExpansion.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/traits/power/ThermalExpansion.scala @@ -1,13 +1,11 @@ package li.cil.oc.common.tileentity.traits.power -import cofh.api.energy.IEnergyHandler import cpw.mods.fml.common.Optional import li.cil.oc.Settings import li.cil.oc.util.mods.Mods import net.minecraftforge.common.ForgeDirection -@Optional.Interface(iface = "cofh.api.energy.IEnergyHandler", modid = Mods.IDs.ThermalExpansion) -trait ThermalExpansion extends Common with IEnergyHandler { +trait ThermalExpansion extends Common { @Optional.Method(modid = Mods.IDs.ThermalExpansion) def canInterface(from: ForgeDirection) = canConnectPower(from) diff --git a/src/main/scala/li/cil/oc/common/tileentity/traits/power/UniversalElectricity.scala b/src/main/scala/li/cil/oc/common/tileentity/traits/power/UniversalElectricity.scala index 58f100e30..8eb9cd0c1 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/traits/power/UniversalElectricity.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/traits/power/UniversalElectricity.scala @@ -4,29 +4,24 @@ import cpw.mods.fml.common.Optional import li.cil.oc.Settings import li.cil.oc.util.mods.Mods import net.minecraftforge.common.ForgeDirection -import universalelectricity.api.energy.{IEnergyContainer, IEnergyInterface} -@Optional.InterfaceList(Array( - new Optional.Interface(iface = "universalelectricity.api.energy.IEnergyInterface", modid = Mods.IDs.UniversalElectricity), - new Optional.Interface(iface = "universalelectricity.api.energy.IEnergyContainer", modid = Mods.IDs.UniversalElectricity) -)) -trait UniversalElectricity extends Common with IEnergyInterface with IEnergyContainer { +trait UniversalElectricity extends Common { @Optional.Method(modid = Mods.IDs.UniversalElectricity) - override def canConnect(direction: ForgeDirection, source: AnyRef) = canConnectPower(direction) + def canConnect(direction: ForgeDirection, source: AnyRef) = canConnectPower(direction) @Optional.Method(modid = Mods.IDs.UniversalElectricity) - override def onReceiveEnergy(from: ForgeDirection, receive: Long, doReceive: Boolean) = + def onReceiveEnergy(from: ForgeDirection, receive: Long, doReceive: Boolean) = (tryChangeBuffer(from, receive * Settings.ratioUniversalElectricity, doReceive) / Settings.ratioUniversalElectricity).toLong @Optional.Method(modid = Mods.IDs.UniversalElectricity) - override def getEnergy(from: ForgeDirection) = (globalBuffer(from) / Settings.ratioUniversalElectricity).toLong + def getEnergy(from: ForgeDirection) = (globalBuffer(from) / Settings.ratioUniversalElectricity).toLong @Optional.Method(modid = Mods.IDs.UniversalElectricity) - override def getEnergyCapacity(from: ForgeDirection) = (globalBufferSize(from) / Settings.ratioUniversalElectricity).toLong + def getEnergyCapacity(from: ForgeDirection) = (globalBufferSize(from) / Settings.ratioUniversalElectricity).toLong @Optional.Method(modid = Mods.IDs.UniversalElectricity) - override def onExtractEnergy(from: ForgeDirection, extract: Long, doExtract: Boolean) = 0 + def onExtractEnergy(from: ForgeDirection, extract: Long, doExtract: Boolean) = 0 @Optional.Method(modid = Mods.IDs.UniversalElectricity) - override def setEnergy(from: ForgeDirection, energy: Long) {} + def setEnergy(from: ForgeDirection, energy: Long) {} } diff --git a/src/main/scala/li/cil/oc/util/mods/Mods.scala b/src/main/scala/li/cil/oc/util/mods/Mods.scala index c69bfa240..3944da5c1 100644 --- a/src/main/scala/li/cil/oc/util/mods/Mods.scala +++ b/src/main/scala/li/cil/oc/util/mods/Mods.scala @@ -3,6 +3,8 @@ package li.cil.oc.util.mods import cpw.mods.fml.common.versioning.VersionParser import cpw.mods.fml.common.{Loader, ModAPIManager} +import scala.collection.mutable + object Mods { object IDs { @@ -13,6 +15,7 @@ object Mods { final val ForgeMultipart = "ForgeMultipart" final val GregTech = "gregtech_addon" final val IndustrialCraft2 = "IC2" + final val IndustrialCraft2Classic = "IC2-Classic" final val Mekanism = "Mekanism" final val MineFactoryReloaded = "MineFactoryReloaded" final val NotEnoughItems = "NotEnoughItems" @@ -28,8 +31,12 @@ object Mods { final val WirelessRedstoneSV = "WirelessRedstoneCore" } + private val knownMods = mutable.ArrayBuffer.empty[Mod] + + lazy val isPowerProvidingModPresent = knownMods.exists(_.providesPower) + val BattleGear2 = new SimpleMod(IDs.BattleGear2) - val BuildCraftPower = new SimpleMod(IDs.BuildCraftPower) + val BuildCraftPower = new SimpleMod(IDs.BuildCraftPower, providesPower = true) val ComputerCraft15 = new SimpleMod(IDs.ComputerCraft) { override val isAvailable = isModLoaded && (try Class.forName("dan200.computer.api.ComputerCraftAPI") != null catch { case _: Throwable => false @@ -43,11 +50,12 @@ object Mods { val ComputerCraft = new Mod { override def isAvailable = ComputerCraft15.isAvailable || ComputerCraft16.isAvailable } - val Factorization = new SimpleMod(IDs.Factorization) + val Factorization = new SimpleMod(IDs.Factorization, providesPower = true) val ForgeMultipart = new SimpleMod(IDs.ForgeMultipart) val GregTech = new SimpleMod(IDs.GregTech) - val IndustrialCraft2 = new SimpleMod(IDs.IndustrialCraft2) - val Mekanism = new SimpleMod(IDs.Mekanism) + val IndustrialCraft2 = new SimpleMod(IDs.IndustrialCraft2, providesPower = true) + val IndustrialCraft2Classic = new SimpleMod(IDs.IndustrialCraft2Classic, providesPower = true) + val Mekanism = new SimpleMod(IDs.Mekanism, providesPower = true) val MineFactoryReloaded = new SimpleMod(IDs.MineFactoryReloaded) val NotEnoughItems = new SimpleMod(IDs.NotEnoughItems) val PortalGun = new SimpleMod(IDs.PortalGun) @@ -59,18 +67,22 @@ object Mods { mod.getVersion.startsWith("0.7.") } } - val ThermalExpansion = new SimpleMod(IDs.ThermalExpansion) + val ThermalExpansion = new SimpleMod(IDs.ThermalExpansion, providesPower = true) val TinkersConstruct = new SimpleMod(IDs.TinkersConstruct) - val UniversalElectricity = new SimpleMod(IDs.UniversalElectricity + "@[3.1,)") + val UniversalElectricity = new SimpleMod(IDs.UniversalElectricity + "@[3.1,)", providesPower = true) val Waila = new SimpleMod(IDs.Waila) val WirelessRedstoneCBE = new SimpleMod(IDs.WirelessRedstoneCBE) val WirelessRedstoneSV = new SimpleMod(IDs.WirelessRedstoneSV) trait Mod { + knownMods += this + def isAvailable: Boolean + + def providesPower: Boolean = false } - class SimpleMod(val id: String) extends Mod { + class SimpleMod(val id: String, override val providesPower: Boolean = false) extends Mod { protected val isModLoaded = { val version = VersionParser.parseVersionReference(id) if (Loader.isModLoaded(version.getLabel))