Merge branch 'master' of github.com:MightyPirates/OpenComputers into master-MC1.7.10

Conflicts:
	src/main/scala/li/cil/oc/client/Proxy.scala
	src/main/scala/li/cil/oc/common/Proxy.scala
	src/main/scala/li/cil/oc/common/tileentity/traits/power/IndustrialCraft2Classic.scala
	src/main/scala/li/cil/oc/common/tileentity/traits/power/IndustrialCraft2Experimental.scala
	src/main/scala/li/cil/oc/common/tileentity/traits/power/ThermalExpansion.scala
	src/main/scala/li/cil/oc/common/tileentity/traits/power/UniversalElectricity.scala
This commit is contained in:
Florian Nücke 2014-08-06 00:08:18 +02:00
commit 81f99a74a5
12 changed files with 64 additions and 56 deletions

View File

@ -463,6 +463,13 @@ opencomputers {
# controls the speed at which items are disassembled, basically.
disassemblerTickAmount: 25
# If you don't want OpenComputers to accept power from one or more of the
# supported power mods, for example because it doesn't suit the vision
# of your mod pack, you can disable support for them here. To stop
# OpenComputers accepting power from a mod, enter its mod id here, e.g.
# `BuildCraftAPI|power`, `IC2`, `factorization`, ...
modBlacklist: []
# Default "buffer" sizes, i.e. how much energy certain blocks can store.
buffer {
# The amount of energy a single capacitor can store.

View File

@ -111,13 +111,14 @@ class Settings(config: Config) {
// power
val pureIgnorePower = config.getBoolean("power.ignorePower")
val ignorePower = pureIgnorePower || !Mods.isPowerProvidingModPresent
lazy val ignorePower = pureIgnorePower || !Mods.isPowerProvidingModPresent
val tickFrequency = config.getDouble("power.tickFrequency") max 1
val chargeRate = config.getDouble("power.chargerChargeRate")
val generatorEfficiency = config.getDouble("power.generatorEfficiency")
val solarGeneratorEfficiency = config.getDouble("power.solarGeneratorEfficiency")
val assemblerTickAmount = config.getDouble("power.assemblerTickAmount") max 1
val disassemblerTickAmount = config.getDouble("power.disassemblerTickAmount") max 1
val powerModBlacklist = config.getStringList("power.modBlacklist")
// power.buffer
val bufferCapacitor = config.getDouble("power.buffer.capacitor") max 0

View File

@ -2,7 +2,7 @@ package li.cil.oc.client
import cpw.mods.fml.client.registry.{ClientRegistry, RenderingRegistry}
import cpw.mods.fml.common.FMLCommonHandler
import cpw.mods.fml.common.event.{FMLInitializationEvent, FMLPostInitializationEvent, FMLPreInitializationEvent}
import cpw.mods.fml.common.event.{FMLInitializationEvent, FMLPreInitializationEvent}
import cpw.mods.fml.common.network.NetworkRegistry
import li.cil.oc.client.renderer.block.BlockRenderer
import li.cil.oc.client.renderer.item.ItemRenderer
@ -27,7 +27,7 @@ private[oc] class Proxy extends CommonProxy {
override def init(e: FMLInitializationEvent) {
super.init(e)
NetworkRegistry.INSTANCE.registerGuiHandler(OpenComputers, GuiHandler)
OpenComputers.channel.register(client.PacketHandler)
Settings.blockRenderId = RenderingRegistry.getNextAvailableRenderId
RenderingRegistry.registerBlockHandler(BlockRenderer)
@ -48,25 +48,20 @@ private[oc] class Proxy extends CommonProxy {
MinecraftForgeClient.registerItemRenderer(Items.multi, ItemRenderer)
OpenComputers.channel.register(client.PacketHandler)
ClientRegistry.registerKeyBinding(KeyBindings.extendedTooltip)
ClientRegistry.registerKeyBinding(KeyBindings.materialCosts)
ClientRegistry.registerKeyBinding(KeyBindings.clipboardPaste)
}
override def postInit(e: FMLPostInitializationEvent) {
super.postInit(e)
FMLCommonHandler.instance.bus.register(Audio)
FMLCommonHandler.instance.bus.register(HologramRenderer)
FMLCommonHandler.instance.bus.register(PetRenderer)
FMLCommonHandler.instance.bus.register(ScreenRenderer)
FMLCommonHandler.instance.bus.register(TextBufferRenderCache)
MinecraftForge.EVENT_BUS.register(PetRenderer)
MinecraftForge.EVENT_BUS.register(ServerRack)
MinecraftForge.EVENT_BUS.register(TextBuffer)
MinecraftForge.EVENT_BUS.register(WirelessNetworkDebugRenderer)
NetworkRegistry.INSTANCE.registerGuiHandler(OpenComputers, GuiHandler)
FMLCommonHandler.instance.bus.register(Audio)
FMLCommonHandler.instance.bus.register(HologramRenderer)
FMLCommonHandler.instance.bus.register(PetRenderer)
FMLCommonHandler.instance.bus.register(TextBufferRenderCache)
}
}

View File

@ -67,6 +67,9 @@ class Proxy {
}
def init(e: FMLInitializationEvent) {
OpenComputers.channel = NetworkRegistry.INSTANCE.newEventDrivenChannel("OpenComputers")
OpenComputers.channel.register(server.PacketHandler)
OpenComputers.log.info("Initializing OpenComputers drivers.")
api.Driver.add(driver.item.FileSystem)
api.Driver.add(driver.item.GraphicsCard)
@ -115,19 +118,26 @@ class Proxy {
OpenComputers.log.info("Initializing recipes.")
Recipes.init()
OpenComputers.log.info("Initializing event handlers.")
ForgeChunkManager.setForcedChunkLoadingCallback(OpenComputers, ChunkloaderUpgradeHandler)
OpenComputers.channel = NetworkRegistry.INSTANCE.newEventDrivenChannel("OpenComputers")
OpenComputers.channel.register(server.PacketHandler)
Loot.init()
FMLCommonHandler.instance.bus.register(EventHandler)
FMLCommonHandler.instance.bus.register(SimpleComponentTickHandler.Instance)
FMLCommonHandler.instance.bus.register(Tablet)
MinecraftForge.EVENT_BUS.register(AngelUpgradeHandler)
MinecraftForge.EVENT_BUS.register(ChunkloaderUpgradeHandler)
MinecraftForge.EVENT_BUS.register(RobotCommonHandler)
MinecraftForge.EVENT_BUS.register(EventHandler)
MinecraftForge.EVENT_BUS.register(ExperienceUpgradeHandler)
MinecraftForge.EVENT_BUS.register(Loot)
MinecraftForge.EVENT_BUS.register(RobotCommonHandler)
MinecraftForge.EVENT_BUS.register(SaveHandler)
MinecraftForge.EVENT_BUS.register(Tablet)
MinecraftForge.EVENT_BUS.register(WirelessNetwork)
MinecraftForge.EVENT_BUS.register(WirelessNetworkCardHandler)
if (Mods.TinkersConstruct.isAvailable) {
OpenComputers.log.info("Initializing Tinker's Construct tool support.")
MinecraftForge.EVENT_BUS.register(TinkersConstructToolHandler)
@ -136,13 +146,6 @@ class Proxy {
OpenComputers.log.info("Initializing electric tool support.")
MinecraftForge.EVENT_BUS.register(UniversalElectricityToolHandler)
}
MinecraftForge.EVENT_BUS.register(Loot)
if (Mods.Waila.isAvailable) {
OpenComputers.log.info("Initializing Waila support.")
FMLInterModComms.sendMessage("Waila", "register", "li.cil.oc.util.mods.Waila.init")
}
if (Mods.VersionChecker.isAvailable) {
UpdateCheck.info onSuccess {
case Some(release) =>
@ -156,19 +159,15 @@ class Proxy {
FMLInterModComms.sendRuntimeMessage(OpenComputers.ID, Mods.IDs.VersionChecker, "addUpdate", nbt)
}
}
if (Mods.Waila.isAvailable) {
OpenComputers.log.info("Initializing Waila support.")
FMLInterModComms.sendMessage("Waila", "register", "li.cil.oc.util.mods.Waila.init")
}
}
def postInit(e: FMLPostInitializationEvent) {
// Don't allow driver registration after this point, to avoid issues.
driver.Registry.locked = true
FMLCommonHandler.instance.bus.register(EventHandler)
FMLCommonHandler.instance.bus.register(SimpleComponentTickHandler.Instance)
FMLCommonHandler.instance.bus.register(Tablet)
MinecraftForge.EVENT_BUS.register(EventHandler)
MinecraftForge.EVENT_BUS.register(WirelessNetwork)
MinecraftForge.EVENT_BUS.register(SaveHandler)
MinecraftForge.EVENT_BUS.register(Tablet)
}
private def registerExclusive(name: String, items: ItemStack*) {

View File

@ -7,9 +7,9 @@ import li.cil.oc.util.mods.Mods
import net.minecraftforge.common.util.ForgeDirection
trait BuildCraft extends Common {
private var powerHandler: Option[AnyRef] = None
private lazy val useBuildCraftPower = isServer && Mods.BuildCraftPower.isAvailable
private lazy val useBuildCraftPower = isServer && !Settings.get.ignorePower && Mods.BuildCraftPower.isAvailable
private var powerHandler: Option[AnyRef] = None
// ----------------------------------------------------------------------- //
@ -30,7 +30,7 @@ trait BuildCraft extends Common {
@Optional.Method(modid = Mods.IDs.BuildCraftPower)
def getPowerProvider = {
if (powerHandler.isEmpty) {
if (Mods.BuildCraftPower.isAvailable && powerHandler.isEmpty) {
val handler = new PowerHandler(this.asInstanceOf[IPowerReceptor], PowerHandler.Type.MACHINE)
if (handler != null) {
handler.configure(1, 320, Float.MaxValue, 640)
@ -45,7 +45,7 @@ trait BuildCraft extends Common {
@Optional.Method(modid = Mods.IDs.BuildCraftPower)
def getPowerReceiver(side: ForgeDirection) =
if (canConnectPower(side))
if (Mods.BuildCraftPower.isAvailable && canConnectPower(side))
getPowerProvider.getPowerReceiver
else null

View File

@ -7,11 +7,11 @@ import li.cil.oc.util.mods.Mods
import net.minecraftforge.common.util.ForgeDirection
trait Factorization extends Common {
private lazy val useFactorizationPower = isServer && Mods.Factorization.isAvailable
@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
// ----------------------------------------------------------------------- //
override def updateEntity() {
@ -45,7 +45,7 @@ trait Factorization extends Common {
// ----------------------------------------------------------------------- //
@Optional.Method(modid = Mods.IDs.Factorization)
def getCharge = charge.asInstanceOf[Charge]
def getCharge = if (Mods.Factorization.isAvailable) charge.asInstanceOf[Charge] else null
@Optional.Method(modid = Mods.IDs.Factorization)
def getInfo = ""

View File

@ -11,7 +11,7 @@ import net.minecraftforge.common.util.ForgeDirection
trait IndustrialCraft2Classic extends Common with IndustrialCraft2Common {
private var lastInjectedAmount = 0.0
private lazy val useIndustrialCraft2ClassicPower = isServer && !Settings.get.ignorePower && Mods.IndustrialCraft2Classic.isAvailable
private lazy val useIndustrialCraft2ClassicPower = isServer && Mods.IndustrialCraft2Classic.isAvailable
// ----------------------------------------------------------------------- //
@ -39,7 +39,7 @@ trait IndustrialCraft2Classic extends Common with IndustrialCraft2Common {
def getMaxSafeInput = Integer.MAX_VALUE
@Optional.Method(modid = Mods.IDs.IndustrialCraft2Classic)
def acceptsEnergyFrom(emitter: TileEntity, direction: Direction) = canConnectPower(direction.toForgeDirection)
def acceptsEnergyFrom(emitter: TileEntity, direction: Direction) = Mods.IndustrialCraft2Classic.isAvailable && canConnectPower(direction.toForgeDirection)
@Optional.Method(modid = Mods.IDs.IndustrialCraft2Classic)
def injectEnergy(directionFrom: Direction, amount: Int) = {
@ -57,7 +57,7 @@ trait IndustrialCraft2Classic extends Common with IndustrialCraft2Common {
@Optional.Method(modid = Mods.IDs.IndustrialCraft2Classic)
def demandsEnergy = {
if (Settings.get.ignorePower || isClient) 0
if (!useIndustrialCraft2ClassicPower) 0
else {
var force = false
val demand = ForgeDirection.VALID_DIRECTIONS.map(side => {

View File

@ -9,7 +9,7 @@ import net.minecraftforge.common.util.ForgeDirection
trait IndustrialCraft2Experimental extends Common with IndustrialCraft2Common {
private var lastInjectedAmount = 0.0
private lazy val useIndustrialCraft2Power = isServer && !Settings.get.ignorePower && Mods.IndustrialCraft2.isAvailable
private lazy val useIndustrialCraft2Power = isServer && Mods.IndustrialCraft2.isAvailable
// ----------------------------------------------------------------------- //
@ -34,7 +34,7 @@ trait IndustrialCraft2Experimental extends Common with IndustrialCraft2Common {
def getSinkTier = Int.MaxValue
@Optional.Method(modid = Mods.IDs.IndustrialCraft2)
def acceptsEnergyFrom(emitter: net.minecraft.tileentity.TileEntity, direction: ForgeDirection) = canConnectPower(direction)
def acceptsEnergyFrom(emitter: net.minecraft.tileentity.TileEntity, direction: ForgeDirection) = Mods.IndustrialCraft2.isAvailable && canConnectPower(direction)
@Optional.Method(modid = Mods.IDs.IndustrialCraft2)
def injectEnergy(directionFrom: ForgeDirection, amount: Double, voltage: Double): Double = {
@ -52,7 +52,7 @@ trait IndustrialCraft2Experimental extends Common with IndustrialCraft2Common {
@Optional.Method(modid = Mods.IDs.IndustrialCraft2)
def getDemandedEnergy = {
if (Settings.get.ignorePower || isClient) 0
if (!useIndustrialCraft2Power) 0
else {
var force = false
val demand = ForgeDirection.VALID_DIRECTIONS.map(side => {

View File

@ -7,10 +7,12 @@ import net.minecraftforge.common.util.ForgeDirection
trait Mekanism extends Common {
@Optional.Method(modid = Mods.IDs.Mekanism)
def canReceiveEnergy(side: ForgeDirection) = canConnectPower(side)
def canReceiveEnergy(side: ForgeDirection) = Mods.Mekanism.isAvailable && canConnectPower(side)
@Optional.Method(modid = Mods.IDs.Mekanism)
def transferEnergyToAcceptor(side: ForgeDirection, amount: Double) = tryChangeBuffer(side, amount * Settings.ratioMekanism) / Settings.ratioMekanism
def transferEnergyToAcceptor(side: ForgeDirection, amount: Double) =
if (!Mods.Mekanism.isAvailable) 0
else tryChangeBuffer(side, amount * Settings.ratioMekanism) / Settings.ratioMekanism
@Optional.Method(modid = Mods.IDs.Mekanism)
def getMaxEnergy = ForgeDirection.VALID_DIRECTIONS.map(globalBufferSize).max / Settings.ratioMekanism

View File

@ -7,11 +7,12 @@ import net.minecraftforge.common.util.ForgeDirection
trait RedstoneFlux extends Common {
@Optional.Method(modid = Mods.IDs.RedstoneFlux)
def canConnectEnergy(from: ForgeDirection) = canConnectPower(from)
def canConnectEnergy(from: ForgeDirection) = Mods.RedstoneFlux.isAvailable && canConnectPower(from)
@Optional.Method(modid = Mods.IDs.RedstoneFlux)
def receiveEnergy(from: ForgeDirection, maxReceive: Int, simulate: Boolean) =
(tryChangeBuffer(from, maxReceive * Settings.ratioRedstoneFlux, !simulate) / Settings.ratioRedstoneFlux).toInt
if (!Mods.RedstoneFlux.isAvailable) 0
else (tryChangeBuffer(from, maxReceive * Settings.ratioRedstoneFlux, !simulate) / Settings.ratioRedstoneFlux).toInt
@Optional.Method(modid = Mods.IDs.RedstoneFlux)
def getEnergyStored(from: ForgeDirection) = (globalBuffer(from) / Settings.ratioRedstoneFlux).toInt

View File

@ -8,9 +8,9 @@ import universalelectricity.api.core.grid.electric.IElectricNode
import universalelectricity.api.core.grid.{INode, INodeProvider}
trait UniversalElectricity extends Common {
private lazy val ueNode: AnyRef = universalelectricity.api.core.grid.NodeRegistry.get(this.asInstanceOf[INodeProvider], classOf[IElectricNode])
private lazy val useUniversalElectricityPower = isServer && Mods.UniversalElectricity.isAvailable
private lazy val useUniversalElectricityPower = isServer && !Settings.get.ignorePower && Mods.BuildCraftPower.isAvailable
private lazy val ueNode: AnyRef = universalelectricity.api.core.grid.NodeRegistry.get(this.asInstanceOf[INodeProvider], classOf[IElectricNode])
// ----------------------------------------------------------------------- //
@ -33,8 +33,8 @@ trait UniversalElectricity extends Common {
@Optional.Method(modid = Mods.IDs.UniversalElectricity)
def getNode[N <: INode](nodeType: Class[N], from: ForgeDirection) = {
if (canConnectPower(from) && nodeType == classOf[IElectricNode]) ueNode.asInstanceOf[N]
else null.asInstanceOf[N]
if (Mods.UniversalElectricity.isAvailable && canConnectPower(from) && nodeType == classOf[IElectricNode]) ueNode.asInstanceOf[N]
else null
}
@Optional.Method(modid = Mods.IDs.UniversalElectricity)

View File

@ -2,6 +2,7 @@ package li.cil.oc.util.mods
import cpw.mods.fml.common.versioning.VersionParser
import cpw.mods.fml.common.{Loader, ModAPIManager}
import li.cil.oc.Settings
import scala.collection.mutable
@ -84,7 +85,9 @@ object Mods {
else ModAPIManager.INSTANCE.hasAPI(version.getLabel)
}
override def isAvailable = isModLoaded
protected val isPowerModEnabled = !providesPower || (!Settings.get.pureIgnorePower && !Settings.get.powerModBlacklist.contains(id))
override def isAvailable = isModLoaded && isPowerModEnabled
}
}