diff --git a/gradle/forge.gradle b/gradle/forge.gradle index 284f54d95..989f1621c 100644 --- a/gradle/forge.gradle +++ b/gradle/forge.gradle @@ -3,11 +3,16 @@ repositories { name = "ic2" url = "http://maven.ic2.player.to/" } + maven { + name = "ue" + url = "http://calclavia.com/maven/" + } } dependencies { compile "codechicken:CodeChickenLib:${config.cc.mc.version}-${config.ccl.version}:dev" compile "codechicken:ForgeMultipart:${config.cc.mc.version}-${config.fmp.version}:dev" compile "net.industrial-craft:industrialcraft-2:2.2.509-experimental:api" + compile "dev.calclavia.universalelectricity:universal-electricity:+:dev" } minecraft { diff --git a/src/main/scala/li/cil/oc/Settings.scala b/src/main/scala/li/cil/oc/Settings.scala index c342c70b8..de40482e3 100644 --- a/src/main/scala/li/cil/oc/Settings.scala +++ b/src/main/scala/li/cil/oc/Settings.scala @@ -240,9 +240,9 @@ object Settings { // Power conversion values. These are the same values used by Universal // Electricity to provide global power support. - val valueBC = 56280.0 - val valueIC2 = 22512.0 - val valueTE = 5628.0 + val valueBC = 500.0 + val valueIC2 = 200.0 + val valueTE = 50.0 val valueUE = 1.0 val valueOC = valueBC 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 04ef65f45..335a54451 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 @@ -5,4 +5,4 @@ trait PowerAcceptor with power.BuildCraft with power.IndustrialCraft2 with power.ThermalExpansion -// with power.UniversalElectricity \ No newline at end of file + with power.UniversalElectricity \ No newline at end of file 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 5ebcd1326..fbe2b9f8b 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 @@ -1,39 +1,51 @@ -//package li.cil.oc.common.tileentity.traits.power -// -//import cpw.mods.fml.common.Optional -//import li.cil.oc.Settings -//import net.minecraftforge.common.util.ForgeDirection -//import universalelectricity.api.core.grid.{INode, INodeProvider} -//import universalelectricity.api.core.grid.electric.{IElectricNode, IEnergyContainer} -// -//@Optional.InterfaceList(Array( -// new Optional.Interface(iface = "universalelectricity.api.core.grid.INodeProvider", modid = "UniversalElectricity"), -// new Optional.Interface(iface = "universalelectricity.api.core.grid.electric.IEnergyContainer", modid = "UniversalElectricity") -//)) -//trait UniversalElectricity extends Common with INodeProvider with IEnergyContainer { -// @Optional.Method(modid = "UniversalElectricity") -// override def canConnect(direction: ForgeDirection, source: AnyRef) = canConnectPower(direction) -// -// @Optional.Method(modid = "UniversalElectricity") -// override def onReceiveEnergy(from: ForgeDirection, receive: Long, doReceive: Boolean) = -// (tryChangeBuffer(from, receive * Settings.ratioUE, doReceive) / Settings.ratioUE).toLong -// -// @Optional.Method(modid = "UniversalElectricity") -// override def onExtractEnergy(from: ForgeDirection, extract: Long, doExtract: Boolean) = 0 -// -// override def getNode[N <: INode](nodeType: Class[N], from: ForgeDirection) = { -// if (canConnectPower(from) && nodeType == classOf[IElectricNode]) { -// -// } -// else null -// } -// -// @Optional.Method(modid = "UniversalElectricity") -// override def setEnergy(from: ForgeDirection, energy: Double) {} -// -// @Optional.Method(modid = "UniversalElectricity") -// override def getEnergy(from: ForgeDirection) = globalBuffer(from) / Settings.ratioUE -// -// @Optional.Method(modid = "UniversalElectricity") -// override def getEnergyCapacity(from: ForgeDirection) = globalBufferSize(from) / Settings.ratioUE -//} +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 net.minecraftforge.common.util.ForgeDirection +import universalelectricity.api.core.grid.electric.{IElectricNode, IEnergyContainer} +import universalelectricity.api.core.grid.{INode, INodeProvider} + +@Optional.InterfaceList(Array( + new Optional.Interface(iface = "universalelectricity.api.core.grid.INodeProvider", modid = "UniversalElectricity"), + new Optional.Interface(iface = "universalelectricity.api.core.grid.electric.IEnergyContainer", modid = "UniversalElectricity") +)) +trait UniversalElectricity extends Common with INodeProvider with IEnergyContainer { + private lazy val ueNode: AnyRef = universalelectricity.api.core.grid.NodeRegistry.get(this, classOf[IElectricNode]) + + private lazy val useUniversalElectricityPower = isServer && !Settings.get.ignorePower && Mods.BuildCraftPower.isAvailable + + // ----------------------------------------------------------------------- // + + override def updateEntity() { + super.updateEntity() + if (useUniversalElectricityPower && world.getWorldTime % Settings.get.tickFrequency == 0) { + val electric = ueNode.asInstanceOf[IElectricNode] + for (side <- ForgeDirection.VALID_DIRECTIONS) { + val demand = (globalBufferSize(side) - globalBuffer(side)) / Settings.ratioUE + val power = math.min(demand, electric.getEnergy(100)) + if (power > 1) { + electric.drawPower(power) + tryChangeBuffer(side, power * Settings.ratioUE) + } + } + } + } + + // ----------------------------------------------------------------------- // + + override def getNode[N <: INode](nodeType: Class[N], from: ForgeDirection) = { + if (canConnectPower(from) && nodeType == classOf[IElectricNode]) ueNode.asInstanceOf[N] + else null.asInstanceOf[N] + } + + @Optional.Method(modid = "UniversalElectricity") + override def setEnergy(from: ForgeDirection, energy: Double) {} + + @Optional.Method(modid = "UniversalElectricity") + override def getEnergy(from: ForgeDirection) = globalBuffer(from) / Settings.ratioUE + + @Optional.Method(modid = "UniversalElectricity") + override def getEnergyCapacity(from: ForgeDirection) = globalBufferSize(from) / Settings.ratioUE +}