Mod ids as constants instead of strings all over the place.

This commit is contained in:
Florian Nücke 2014-07-19 17:42:14 +02:00
parent 672d9d6b83
commit 72e47bc7c2
30 changed files with 147 additions and 114 deletions

View File

@ -13,9 +13,9 @@ do
function rom.open(file) return rom.invoke("open", file) end
function rom.read(handle) return rom.invoke("read", handle, math.huge) end
function rom.close(handle) return rom.invoke("close", handle) end
function rom.inits(file) return ipairs(rom.invoke("list", "boot")) end
function rom.inits() return ipairs(rom.invoke("list", "boot")) end
function rom.isDirectory(path) return rom.invoke("isDirectory", path) end
local screen = component.list('screen')()
for address in component.list('screen') do
if #component.invoke(address, 'getKeyboards') > 0 then

View File

@ -533,23 +533,23 @@ local libcomputer = {
maxEnergy = computer.maxEnergy,
getBootAddress = computer.getBootAddress,
setBootAddress = function(address)
return spcall(computer.setBootAddress, address)
setBootAddress = function(...)
return spcall(computer.setBootAddress, ...)
end,
users = computer.users,
addUser = function(name)
return spcall(computer.addUser, name)
addUser = function(...)
return spcall(computer.addUser, ...)
end,
removeUser = function(name)
return spcall(computer.removeUser, name)
removeUser = function(...)
return spcall(computer.removeUser, ...)
end,
shutdown = function(reboot)
coroutine.yield(reboot ~= nil and reboot ~= false)
end,
pushSignal = function(name, ...)
return spcall(computer.pushSignal, name, ...)
pushSignal = function(...)
return spcall(computer.pushSignal, ...)
end,
pullSignal = function(timeout)
local deadline = computer.uptime() +

View File

@ -35,14 +35,14 @@ object EventHandler extends ITickHandler with IConnectionHandler with ICraftingH
}
}
@Optional.Method(modid = "ForgeMultipart")
@Optional.Method(modid = Mods.IDs.ForgeMultipart)
def schedule(tileEntity: () => TileEntity) {
if (SideTracker.isServer) pending.synchronized {
pending += (() => Network.joinOrCreateNetwork(tileEntity()))
}
}
@Optional.Method(modid = "IC2")
@Optional.Method(modid = Mods.IDs.IndustrialCraft2)
def scheduleIC2Add(tileEntity: power.IndustrialCraft2) {
if (SideTracker.isServer) pending.synchronized {
pending += (() => if (!tileEntity.addedToPowerGrid && !tileEntity.isInvalid) {
@ -52,7 +52,7 @@ object EventHandler extends ITickHandler with IConnectionHandler with ICraftingH
}
}
@Optional.Method(modid = "IC2")
@Optional.Method(modid = Mods.IDs.IndustrialCraft2)
def scheduleIC2Remove(tileEntity: power.IndustrialCraft2) {
if (SideTracker.isServer) pending.synchronized {
pending += (() => if (tileEntity.addedToPowerGrid) {
@ -95,7 +95,7 @@ object EventHandler extends ITickHandler with IConnectionHandler with ICraftingH
if (!LuaStateFactory.isAvailable) {
p.sendChatToPlayer(Localization.Chat.WarningLuaFallback)
}
if (Mods.ProjectRed.isAvailable && !mods.ProjectRed.isAPIAvailable) {
if (Mods.ProjectRedTransmission.isAvailable && !mods.ProjectRed.isAPIAvailable) {
p.sendChatToPlayer(Localization.Chat.WarningProjectRed)
}
if (!Settings.get.pureIgnorePower && Settings.get.ignorePower) {

View File

@ -4,6 +4,7 @@ import java.util
import cpw.mods.fml.common.Optional
import li.cil.oc.common.tileentity
import li.cil.oc.util.mods.Mods
import li.cil.oc.{Localization, Settings}
import mcp.mobius.waila.api.{IWailaConfigHandler, IWailaDataAccessor}
import net.minecraft.item.ItemStack
@ -20,7 +21,7 @@ class AccessPoint(parent: SimpleDelegator) extends Switch(parent) {
Some("SwitchSide")
)
@Optional.Method(modid = "Waila")
@Optional.Method(modid = Mods.IDs.Waila)
override def wailaBody(stack: ItemStack, tooltip: util.List[String], accessor: IWailaDataAccessor, config: IWailaConfigHandler) {
val nbt = accessor.getNBTData
val node = nbt.getTagList(Settings.namespace + "componentNodes").tagAt(accessor.getSide.ordinal).asInstanceOf[NBTTagCompound]

View File

@ -4,6 +4,7 @@ import java.util
import cpw.mods.fml.common.Optional
import li.cil.oc.common.tileentity
import li.cil.oc.util.mods.Mods
import li.cil.oc.{Localization, Settings}
import mcp.mobius.waila.api.{IWailaConfigHandler, IWailaDataAccessor}
import net.minecraft.item.ItemStack
@ -19,7 +20,7 @@ class Capacitor(val parent: SimpleDelegator) extends SimpleDelegate {
Some("CapacitorSide")
)
@Optional.Method(modid = "Waila")
@Optional.Method(modid = Mods.IDs.Waila)
override def wailaBody(stack: ItemStack, tooltip: util.List[String], accessor: IWailaDataAccessor, config: IWailaConfigHandler) {
val node = accessor.getNBTData.getCompoundTag(Settings.namespace + "node")
if (node.hasKey("buffer")) {

View File

@ -5,7 +5,7 @@ import java.util
import cpw.mods.fml.common.Optional
import cpw.mods.fml.relauncher.{Side, SideOnly}
import li.cil.oc.common.{GuiType, tileentity}
import li.cil.oc.util.mods.BuildCraft
import li.cil.oc.util.mods.{BuildCraft, Mods}
import li.cil.oc.util.{Color, Tooltip}
import li.cil.oc.{Localization, OpenComputers, Settings}
import mcp.mobius.waila.api.{IWailaConfigHandler, IWailaDataAccessor}
@ -43,7 +43,7 @@ class Case(val parent: SimpleDelegator, val tier: Int) extends RedstoneAware wit
tooltip.addAll(Tooltip.get("Case", slots))
}
@Optional.Method(modid = "Waila")
@Optional.Method(modid = Mods.IDs.Waila)
override def wailaBody(stack: ItemStack, tooltip: util.List[String], accessor: IWailaDataAccessor, config: IWailaConfigHandler) {
val nbt = accessor.getNBTData
val node = nbt.getCompoundTag(Settings.namespace + "computer").getCompoundTag("node")

View File

@ -6,7 +6,7 @@ import cpw.mods.fml.common.Optional
import li.cil.oc.client.Textures
import li.cil.oc.common.tileentity
import li.cil.oc.server.PacketSender
import li.cil.oc.util.mods.BuildCraft
import li.cil.oc.util.mods.{BuildCraft, Mods}
import li.cil.oc.{Localization, Settings}
import mcp.mobius.waila.api.{IWailaConfigHandler, IWailaDataAccessor}
import net.minecraft.entity.player.EntityPlayer
@ -24,7 +24,7 @@ class Charger(val parent: SimpleDelegator) extends RedstoneAware with SimpleDele
Some("ChargerSide")
)
@Optional.Method(modid = "Waila")
@Optional.Method(modid = Mods.IDs.Waila)
override def wailaBody(stack: ItemStack, tooltip: util.List[String], accessor: IWailaDataAccessor, config: IWailaConfigHandler) {
accessor.getTileEntity match {
case charger: tileentity.Charger =>

View File

@ -8,6 +8,7 @@ import li.cil.oc.Settings
import li.cil.oc.common.tileentity
import li.cil.oc.common.tileentity.traits.Inventory
import li.cil.oc.util.Tooltip
import li.cil.oc.util.mods.Mods
import mcp.mobius.waila.api.{IWailaConfigHandler, IWailaDataAccessor}
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.entity.{Entity, EntityLivingBase}
@ -115,7 +116,7 @@ trait Delegate {
tooltip.addAll(Tooltip.get(unlocalizedName))
}
@Optional.Method(modid = "Waila")
@Optional.Method(modid = Mods.IDs.Waila)
def wailaBody(stack: ItemStack, tooltip: util.List[String], accessor: IWailaDataAccessor, config: IWailaConfigHandler) {
}

View File

@ -475,7 +475,7 @@ class SpecialDelegator(id: Int) extends Delegator[SpecialDelegate](id) {
}
}
@Optional.Interface(iface = "powercrystals.minefactoryreloaded.api.rednet.IConnectableRedNet", modid = "MineFactoryReloaded")
@Optional.Interface(iface = "powercrystals.minefactoryreloaded.api.rednet.IConnectableRedNet", modid = Mods.IDs.MineFactoryReloaded)
trait RedstoneDelegator[Child <: Delegate] extends Delegator[Child] with IConnectableRedNet {
override def getConnectionType(world: World, x: Int, y: Int, z: Int, side: ForgeDirection) = RedNetConnectionType.CableAll

View File

@ -31,7 +31,7 @@ class DiskDrive(val parent: SimpleDelegator) extends SimpleDelegate {
}
}
@Optional.Method(modid = "Waila")
@Optional.Method(modid = Mods.IDs.Waila)
override def wailaBody(stack: ItemStack, tooltip: util.List[String], accessor: IWailaDataAccessor, config: IWailaConfigHandler) {
val items = accessor.getNBTData.getTagList(Settings.namespace + "items")
if (items.tagCount > 0) {

View File

@ -5,6 +5,7 @@ import java.util
import cpw.mods.fml.common.Optional
import cpw.mods.fml.relauncher.{Side, SideOnly}
import li.cil.oc.common.tileentity
import li.cil.oc.util.mods.Mods
import li.cil.oc.{Localization, Settings}
import mcp.mobius.waila.api.{IWailaConfigHandler, IWailaDataAccessor}
import net.minecraft.item.{EnumRarity, ItemStack}
@ -26,7 +27,7 @@ class Hologram(val parent: SpecialDelegator, val tier: Int) extends SpecialDeleg
override def rarity = Array(EnumRarity.uncommon, EnumRarity.rare).apply(tier)
@Optional.Method(modid = "Waila")
@Optional.Method(modid = Mods.IDs.Waila)
override def wailaBody(stack: ItemStack, tooltip: util.List[String], accessor: IWailaDataAccessor, config: IWailaConfigHandler) {
val node = accessor.getNBTData.getCompoundTag(Settings.namespace + "node")
if (node.hasKey("address")) {

View File

@ -4,6 +4,7 @@ import java.util
import cpw.mods.fml.common.Optional
import li.cil.oc.common.tileentity
import li.cil.oc.util.mods.Mods
import li.cil.oc.{Localization, Settings}
import mcp.mobius.waila.api.{IWailaConfigHandler, IWailaDataAccessor}
import net.minecraft.entity.player.EntityPlayer
@ -16,7 +17,7 @@ import org.lwjgl.opengl.GL11
class Keyboard(val parent: SpecialDelegator) extends SpecialDelegate {
var icon: Icon = null
@Optional.Method(modid = "Waila")
@Optional.Method(modid = Mods.IDs.Waila)
override def wailaBody(stack: ItemStack, tooltip: util.List[String], accessor: IWailaDataAccessor, config: IWailaConfigHandler) {
val node = accessor.getNBTData.getCompoundTag(Settings.namespace + "keyboard").getCompoundTag("node")
if (node.hasKey("address")) {

View File

@ -8,6 +8,7 @@ import li.cil.oc.client.KeyBindings
import li.cil.oc.common.{GuiType, tileentity}
import li.cil.oc.server.PacketSender
import li.cil.oc.server.component.robot
import li.cil.oc.util.mods.Mods
import li.cil.oc.util.{ItemUtils, Tooltip}
import li.cil.oc.{Blocks, OpenComputers, Settings}
import mcp.mobius.waila.api.{IWailaConfigHandler, IWailaDataAccessor}
@ -44,7 +45,7 @@ class RobotProxy(val parent: SpecialDelegator) extends RedstoneAware with Specia
}
}
@Optional.Method(modid = "Waila")
@Optional.Method(modid = Mods.IDs.Waila)
override def wailaBody(stack: ItemStack, tooltip: util.List[String], accessor: IWailaDataAccessor, config: IWailaConfigHandler) {
addLines(stack, tooltip)
}

View File

@ -5,7 +5,7 @@ import java.util
import cpw.mods.fml.common.Optional
import cpw.mods.fml.relauncher.{Side, SideOnly}
import li.cil.oc.common.{GuiType, tileentity}
import li.cil.oc.util.mods.BuildCraft
import li.cil.oc.util.mods.{BuildCraft, Mods}
import li.cil.oc.util.{Color, PackedColor, Tooltip}
import li.cil.oc.{Localization, OpenComputers, Settings}
import mcp.mobius.waila.api.{IWailaConfigHandler, IWailaDataAccessor}
@ -30,7 +30,7 @@ class Screen(val parent: SimpleDelegator, val tier: Int) extends RedstoneAware w
tooltip.addAll(Tooltip.get(super.unlocalizedName, w, h, depth))
}
@Optional.Method(modid = "Waila")
@Optional.Method(modid = Mods.IDs.Waila)
override def wailaBody(stack: ItemStack, tooltip: util.List[String], accessor: IWailaDataAccessor, config: IWailaConfigHandler) {
val node = accessor.getNBTData.getCompoundTag("node")
if (node.hasKey("address")) {

View File

@ -16,7 +16,7 @@ class RedstoneCard(val parent: Delegator, val tier: Int) extends Delegate {
override def tooltipLines(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
tooltip.addAll(Tooltip.get(super.unlocalizedName))
if (tier == Tier.Two) {
if (Mods.ProjectRed.isAvailable) {
if (Mods.ProjectRedTransmission.isAvailable) {
tooltip.addAll(Tooltip.get(super.unlocalizedName + ".ProjectRed"))
}
if (Mods.RedLogic.isAvailable) {

View File

@ -4,6 +4,7 @@ import cpw.mods.fml.common.Optional
import cpw.mods.fml.relauncher.{Side, SideOnly}
import li.cil.oc.api
import li.cil.oc.api.network._
import li.cil.oc.util.mods.Mods
import mods.immibis.redlogic.api.wiring.IWire
import net.minecraft.entity.Entity
import net.minecraft.entity.player.EntityPlayer
@ -152,22 +153,22 @@ class RobotProxy(val robot: Robot) extends traits.Computer with traits.PowerInfo
override def checkRedstoneInputChanged() = robot.checkRedstoneInputChanged()
@Optional.Method(modid = "RedLogic")
@Optional.Method(modid = Mods.IDs.RedLogic)
override def connects(wire: IWire, blockFace: Int, fromDirection: Int) = robot.connects(wire, blockFace, fromDirection)
@Optional.Method(modid = "RedLogic")
@Optional.Method(modid = Mods.IDs.RedLogic)
override def connectsAroundCorner(wire: IWire, blockFace: Int, fromDirection: Int) = robot.connectsAroundCorner(wire, blockFace, fromDirection)
@Optional.Method(modid = "RedLogic")
@Optional.Method(modid = Mods.IDs.RedLogic)
override def getBundledCableStrength(blockFace: Int, toDirection: Int) = robot.getBundledCableStrength(blockFace, toDirection)
@Optional.Method(modid = "RedLogic")
@Optional.Method(modid = Mods.IDs.RedLogic)
override def getEmittedSignalStrength(blockFace: Int, toDirection: Int) = robot.getEmittedSignalStrength(blockFace, toDirection)
@Optional.Method(modid = "RedLogic")
@Optional.Method(modid = Mods.IDs.RedLogic)
override def onBundledInputChanged() = robot.onBundledInputChanged()
@Optional.Method(modid = "RedLogic")
@Optional.Method(modid = Mods.IDs.RedLogic)
override def onRedstoneInputChanged() = robot.onRedstoneInputChanged()
// ----------------------------------------------------------------------- //

View File

@ -23,7 +23,7 @@ import stargatetech2.api.bus.IBusDevice
import scala.collection.mutable
// See AbstractBusAware as to why we have to define the IBusDevice here.
@Optional.Interface(iface = "stargatetech2.api.bus.IBusDevice", modid = "StargateTech2")
@Optional.Interface(iface = "stargatetech2.api.bus.IBusDevice", modid = Mods.IDs.StargateTech2)
class ServerRack extends traits.PowerAcceptor with traits.Hub with traits.PowerBalancer with traits.Inventory with traits.Rotatable with traits.BundledRedstoneAware with traits.AbstractBusAware with Analyzable with IBusDevice {
val servers = Array.fill(getSizeInventory)(None: Option[component.Server])
@ -53,7 +53,7 @@ class ServerRack extends traits.PowerAcceptor with traits.Hub with traits.PowerB
override def canConnect(side: ForgeDirection) = side != facing
@Method(modid = "StargateTech2")
@Method(modid = Mods.IDs.StargateTech2)
override def getInterfaces(side: Int) = if (side != facing.ordinal) {
super.getInterfaces(side)
}

View File

@ -28,7 +28,7 @@ import scala.collection.mutable
// Aside from that, at least for now CC 1.6 is shipping both the new and the
// old API, so there should be no ClassNotFoundExceptions anyway.
@Optional.Interface(iface = "dan200.computer.api.IPeripheral", modid = "ComputerCraft")
@Optional.Interface(iface = "dan200.computer.api.IPeripheral", modid = Mods.IDs.ComputerCraft)
class Switch extends traits.Hub with traits.NotAnalyzable with IPeripheral with traits.ComponentInventory {
var lastMessage = 0L
@ -40,13 +40,13 @@ class Switch extends traits.Hub with traits.NotAnalyzable with IPeripheral with
// ----------------------------------------------------------------------- //
@Optional.Method(modid = "ComputerCraft")
@Optional.Method(modid = Mods.IDs.ComputerCraft)
override def getType = "oc_adapter"
@Optional.Method(modid = "ComputerCraft")
@Optional.Method(modid = Mods.IDs.ComputerCraft)
override def canAttachToSide(side: Int) = true
@Optional.Method(modid = "ComputerCraft")
@Optional.Method(modid = Mods.IDs.ComputerCraft)
override def attach(computer: IComputerAccess) {
computers += computer -> new ComputerWrapper {
override def id = computer.getID
@ -58,20 +58,20 @@ class Switch extends traits.Hub with traits.NotAnalyzable with IPeripheral with
openPorts += computer -> mutable.Set.empty
}
@Optional.Method(modid = "ComputerCraft")
@Optional.Method(modid = Mods.IDs.ComputerCraft)
override def detach(computer: IComputerAccess) {
computers -= computer
openPorts -= computer
}
@Optional.Method(modid = "ComputerCraft")
@Optional.Method(modid = Mods.IDs.ComputerCraft)
override def getMethodNames = Array("open", "isOpen", "close", "closeAll", "maxPacketSize", "transmit", "isWireless")
@Optional.Method(modid = "ComputerCraft")
@Optional.Method(modid = Mods.IDs.ComputerCraft)
override def callMethod(computer: IComputerAccess, context: ILuaContext, method: Int, arguments: Array[AnyRef]) =
callMethod(computer, computer.getID, computer.getAttachmentName, method, arguments)
@Optional.Method(modid = "ComputerCraft")
@Optional.Method(modid = Mods.IDs.ComputerCraft)
def callMethod(computer: AnyRef, computerId: Int, attachmentName: String, method: Int, arguments: Array[AnyRef]): Array[AnyRef] = getMethodNames()(method) match {
case "open" =>
val port = checkPort(arguments, 0)

View File

@ -26,7 +26,7 @@ trait AbstractBusAware extends TileEntity with network.Environment {
def installedComponents: Iterable[ManagedEnvironment]
@Optional.Method(modid = "StargateTech2")
@Optional.Method(modid = Mods.IDs.StargateTech2)
def getInterfaces(side: Int): Array[IBusInterface] =
if (isAbstractBusAvailable) {
if (isServer) {

View File

@ -12,9 +12,9 @@ import net.minecraftforge.common.ForgeDirection
import powercrystals.minefactoryreloaded.api.rednet.IRedNetNetworkContainer
@Optional.InterfaceList(Array(
new Optional.Interface(iface = "mods.immibis.redlogic.api.wiring.IBundledEmitter", modid = "RedLogic"),
new Optional.Interface(iface = "mods.immibis.redlogic.api.wiring.IBundledUpdatable", modid = "RedLogic"),
new Optional.Interface(iface = "mrtjp.projectred.api.IBundledTile", modid = "ProjRed|Transmission")
new Optional.Interface(iface = "mods.immibis.redlogic.api.wiring.IBundledEmitter", modid = Mods.IDs.RedLogic),
new Optional.Interface(iface = "mods.immibis.redlogic.api.wiring.IBundledUpdatable", modid = Mods.IDs.RedLogic),
new Optional.Interface(iface = "mrtjp.projectred.api.IBundledTile", modid = Mods.IDs.ProjectRedTransmission)
))
trait BundledRedstoneAware extends RedstoneAware with IBundledEmitter with IBundledUpdatable with IBundledTile {
@ -144,7 +144,7 @@ trait BundledRedstoneAware extends RedstoneAware with IBundledEmitter with IBund
case _ => null
}
} else null
val projectRed = if (Mods.ProjectRed.isAvailable && ProjectRed.isAPIAvailable) {
val projectRed = if (Mods.ProjectRedTransmission.isAvailable && ProjectRed.isAPIAvailable) {
Option(ProjectRedAPI.transmissionAPI.getBundledInput(world, x, y, z, side.ordinal)).fold(null: Array[Int])(_.map(_ & 0xFF))
} else null
(redLogic, projectRed) match {
@ -172,17 +172,17 @@ trait BundledRedstoneAware extends RedstoneAware with IBundledEmitter with IBund
// ----------------------------------------------------------------------- //
@Optional.Method(modid = "RedLogic")
@Optional.Method(modid = Mods.IDs.RedLogic)
def getBundledCableStrength(blockFace: Int, toDirection: Int): Array[Byte] = bundledOutput(ForgeDirection.getOrientation(toDirection)).map(value => math.min(math.max(value, 0), 255).toByte)
@Optional.Method(modid = "RedLogic")
@Optional.Method(modid = Mods.IDs.RedLogic)
def onBundledInputChanged() = checkRedstoneInputChanged()
// ----------------------------------------------------------------------- //
@Optional.Method(modid = "ProjRed|Transmission")
@Optional.Method(modid = Mods.IDs.ProjectRedTransmission)
def canConnectBundled(side: Int) = isOutputEnabled
@Optional.Method(modid = "ProjRed|Transmission")
@Optional.Method(modid = Mods.IDs.ProjectRedTransmission)
def getBundledSignal(side: Int) = bundledOutput(ForgeDirection.getOrientation(side)).map(value => math.min(math.max(value, 0), 255).toByte)
}

View File

@ -19,7 +19,7 @@ import stargatetech2.api.bus.IBusDevice
import scala.collection.mutable
// See AbstractBusAware as to why we have to define the IBusDevice here.
@Optional.Interface(iface = "stargatetech2.api.bus.IBusDevice", modid = "StargateTech2")
@Optional.Interface(iface = "stargatetech2.api.bus.IBusDevice", modid = Mods.IDs.StargateTech2)
trait Computer extends Environment with ComponentInventory with Rotatable with BundledRedstoneAware with AbstractBusAware with IBusDevice with Analyzable with Owner {
private lazy val _computer = if (isServer) Machine.create(this) else null

View File

@ -11,9 +11,9 @@ import net.minecraft.nbt.NBTTagCompound
import net.minecraftforge.common.ForgeDirection
@Optional.InterfaceList(Array(
new Optional.Interface(iface = "mods.immibis.redlogic.api.wiring.IConnectable", modid = "RedLogic"),
new Optional.Interface(iface = "mods.immibis.redlogic.api.wiring.IRedstoneEmitter", modid = "RedLogic"),
new Optional.Interface(iface = "mods.immibis.redlogic.api.wiring.IRedstoneUpdatable", modid = "RedLogic")
new Optional.Interface(iface = "mods.immibis.redlogic.api.wiring.IConnectable", modid = Mods.IDs.RedLogic),
new Optional.Interface(iface = "mods.immibis.redlogic.api.wiring.IRedstoneEmitter", modid = Mods.IDs.RedLogic),
new Optional.Interface(iface = "mods.immibis.redlogic.api.wiring.IRedstoneUpdatable", modid = Mods.IDs.RedLogic)
))
trait RedstoneAware extends RotationAware with IConnectable with IRedstoneEmitter with IRedstoneUpdatable {
protected[tileentity] val _input = Array.fill(6)(-1)
@ -152,15 +152,15 @@ trait RedstoneAware extends RotationAware with IConnectable with IRedstoneEmitte
// ----------------------------------------------------------------------- //
@Optional.Method(modid = "RedLogic")
@Optional.Method(modid = Mods.IDs.RedLogic)
override def connects(wire: IWire, blockFace: Int, fromDirection: Int) = isOutputEnabled
@Optional.Method(modid = "RedLogic")
@Optional.Method(modid = Mods.IDs.RedLogic)
override def connectsAroundCorner(wire: IWire, blockFace: Int, fromDirection: Int) = false
@Optional.Method(modid = "RedLogic")
@Optional.Method(modid = Mods.IDs.RedLogic)
override def getEmittedSignalStrength(blockFace: Int, toDirection: Int): Short = _output(toLocal(ForgeDirection.getOrientation(toDirection)).ordinal()).toShort
@Optional.Method(modid = "RedLogic")
@Optional.Method(modid = Mods.IDs.RedLogic)
override def onRedstoneInputChanged() = checkRedstoneInputChanged()
}

View File

@ -1,15 +1,16 @@
package li.cil.oc.common.tileentity.traits.power
import buildcraft.api.power.{IPowerReceptor, PowerHandler}
import cpw.mods.fml.common.{ModAPIManager, Optional}
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 = "buildcraft.api.power.IPowerReceptor", modid = "BuildCraftAPI|power")
@Optional.Interface(iface = "buildcraft.api.power.IPowerReceptor", modid = Mods.IDs.BuildCraftPower)
trait BuildCraft extends Common with IPowerReceptor {
private var powerHandler: Option[AnyRef] = None
private lazy val useBuildCraftPower = isServer && !Settings.get.ignorePower && ModAPIManager.INSTANCE.hasAPI("BuildCraftAPI|power")
private lazy val useBuildCraftPower = isServer && !Settings.get.ignorePower && Mods.BuildCraftPower.isAvailable
// ----------------------------------------------------------------------- //
@ -28,7 +29,7 @@ trait BuildCraft extends Common with IPowerReceptor {
// ----------------------------------------------------------------------- //
@Optional.Method(modid = "BuildCraftAPI|power")
@Optional.Method(modid = Mods.IDs.BuildCraftPower)
def getPowerProvider = {
if (powerHandler.isEmpty) {
val handler = new PowerHandler(this, PowerHandler.Type.MACHINE)
@ -43,7 +44,7 @@ trait BuildCraft extends Common with IPowerReceptor {
else null
}
@Optional.Method(modid = "BuildCraftAPI|power")
@Optional.Method(modid = Mods.IDs.BuildCraftPower)
def getPowerReceiver(side: ForgeDirection) =
if (canConnectPower(side))
getPowerProvider.getPowerReceiver
@ -52,6 +53,6 @@ trait BuildCraft extends Common with IPowerReceptor {
// Don't strip, also defined by AbstractBusAware trait.
def getWorld = getWorldObj
@Optional.Method(modid = "BuildCraftAPI|power")
@Optional.Method(modid = Mods.IDs.BuildCraftPower)
def doWork(workProvider: PowerHandler) {}
}

View File

@ -7,7 +7,7 @@ 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 = "IC2")
@Optional.Interface(iface = "ic2.api.energy.tile.IEnergySink", modid = Mods.IDs.IndustrialCraft2)
trait IndustrialCraft2 extends Common with IEnergySink {
var addedToPowerGrid = false
@ -34,10 +34,10 @@ trait IndustrialCraft2 extends Common with IEnergySink {
// ----------------------------------------------------------------------- //
@Optional.Method(modid = "IC2")
@Optional.Method(modid = Mods.IDs.IndustrialCraft2)
def acceptsEnergyFrom(emitter: net.minecraft.tileentity.TileEntity, direction: ForgeDirection) = canConnectPower(direction)
@Optional.Method(modid = "IC2")
@Optional.Method(modid = Mods.IDs.IndustrialCraft2)
def injectEnergyUnits(directionFrom: ForgeDirection, amount: Double): Double = {
lastInjectedAmount = amount
var energy = amount * Settings.ratioIC2
@ -51,10 +51,10 @@ trait IndustrialCraft2 extends Common with IEnergySink {
else amount - tryChangeBuffer(directionFrom, energy) / Settings.ratioIC2
}
@Optional.Method(modid = "IC2")
@Optional.Method(modid = Mods.IDs.IndustrialCraft2)
def getMaxSafeInput = Integer.MAX_VALUE
@Optional.Method(modid = "IC2")
@Optional.Method(modid = Mods.IDs.IndustrialCraft2)
def demandedEnergyUnits = {
if (Settings.get.ignorePower || isClient) 0
else {

View File

@ -3,23 +3,24 @@ 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 = "ThermalExpansion")
@Optional.Interface(iface = "cofh.api.energy.IEnergyHandler", modid = Mods.IDs.ThermalExpansion)
trait ThermalExpansion extends Common with IEnergyHandler {
@Optional.Method(modid = "ThermalExpansion")
@Optional.Method(modid = Mods.IDs.ThermalExpansion)
def canInterface(from: ForgeDirection) = canConnectPower(from)
@Optional.Method(modid = "ThermalExpansion")
@Optional.Method(modid = Mods.IDs.ThermalExpansion)
def receiveEnergy(from: ForgeDirection, maxReceive: Int, simulate: Boolean) =
(tryChangeBuffer(from, maxReceive * Settings.ratioTE, !simulate) / Settings.ratioTE).toInt
@Optional.Method(modid = "ThermalExpansion")
@Optional.Method(modid = Mods.IDs.ThermalExpansion)
def getEnergyStored(from: ForgeDirection) = (globalBuffer(from) / Settings.ratioTE).toInt
@Optional.Method(modid = "ThermalExpansion")
@Optional.Method(modid = Mods.IDs.ThermalExpansion)
def getMaxEnergyStored(from: ForgeDirection) = (globalBufferSize(from) / Settings.ratioTE).toInt
@Optional.Method(modid = "ThermalExpansion")
@Optional.Method(modid = Mods.IDs.ThermalExpansion)
def extractEnergy(from: ForgeDirection, maxExtract: Int, simulate: Boolean) = 0
}

View File

@ -2,30 +2,31 @@ 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.ForgeDirection
import universalelectricity.api.energy.{IEnergyContainer, IEnergyInterface}
@Optional.InterfaceList(Array(
new Optional.Interface(iface = "universalelectricity.api.energy.IEnergyInterface", modid = "UniversalElectricity"),
new Optional.Interface(iface = "universalelectricity.api.energy.IEnergyContainer", modid = "UniversalElectricity")
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 {
@Optional.Method(modid = "UniversalElectricity")
@Optional.Method(modid = Mods.IDs.UniversalElectricity)
override def canConnect(direction: ForgeDirection, source: AnyRef) = canConnectPower(direction)
@Optional.Method(modid = "UniversalElectricity")
@Optional.Method(modid = Mods.IDs.UniversalElectricity)
override def onReceiveEnergy(from: ForgeDirection, receive: Long, doReceive: Boolean) =
(tryChangeBuffer(from, receive * Settings.ratioUE, doReceive) / Settings.ratioUE).toLong
@Optional.Method(modid = "UniversalElectricity")
@Optional.Method(modid = Mods.IDs.UniversalElectricity)
override def getEnergy(from: ForgeDirection) = (globalBuffer(from) / Settings.ratioUE).toLong
@Optional.Method(modid = "UniversalElectricity")
@Optional.Method(modid = Mods.IDs.UniversalElectricity)
override def getEnergyCapacity(from: ForgeDirection) = (globalBufferSize(from) / Settings.ratioUE).toLong
@Optional.Method(modid = "UniversalElectricity")
@Optional.Method(modid = Mods.IDs.UniversalElectricity)
override def onExtractEnergy(from: ForgeDirection, extract: Long, doExtract: Boolean) = 0
@Optional.Method(modid = "UniversalElectricity")
@Optional.Method(modid = Mods.IDs.UniversalElectricity)
override def setEnergy(from: ForgeDirection, energy: Long) {}
}

View File

@ -7,11 +7,12 @@ import li.cil.oc.api.network._
import li.cil.oc.common.EventHandler
import li.cil.oc.common.tileentity.traits.RedstoneAware
import li.cil.oc.util.mods
import li.cil.oc.util.mods.Mods
import net.minecraft.nbt.NBTTagCompound
@Optional.InterfaceList(Array(
new Optional.Interface(iface = "codechicken.wirelessredstone.core.WirelessReceivingDevice", modid = "WR-CBE|Core"),
new Optional.Interface(iface = "codechicken.wirelessredstone.core.WirelessTransmittingDevice", modid = "WR-CBE|Core")
new Optional.Interface(iface = "codechicken.wirelessredstone.core.WirelessReceivingDevice", modid = Mods.IDs.WirelessRedstoneCBE),
new Optional.Interface(iface = "codechicken.wirelessredstone.core.WirelessTransmittingDevice", modid = Mods.IDs.WirelessRedstoneCBE)
))
trait RedstoneWireless extends Redstone[RedstoneAware] with WirelessReceivingDevice with WirelessTransmittingDevice {
var wirelessFrequency = 0
@ -65,7 +66,7 @@ trait RedstoneWireless extends Redstone[RedstoneAware] with WirelessReceivingDev
// ----------------------------------------------------------------------- //
@Optional.Method(modid = "WR-CBE|Core")
@Optional.Method(modid = Mods.IDs.WirelessRedstoneCBE)
override def updateDevice(frequency: Int, on: Boolean) {
if (frequency == wirelessFrequency && on != wirelessInput) {
wirelessInput = on
@ -73,16 +74,16 @@ trait RedstoneWireless extends Redstone[RedstoneAware] with WirelessReceivingDev
}
}
@Optional.Method(modid = "WR-CBE|Core")
@Optional.Method(modid = Mods.IDs.WirelessRedstoneCBE)
override def getPosition = Vector3.fromTileEntityCenter(owner)
@Optional.Method(modid = "WR-CBE|Core")
@Optional.Method(modid = Mods.IDs.WirelessRedstoneCBE)
override def getDimension = owner.world.provider.dimensionId
@Optional.Method(modid = "WR-CBE|Core")
@Optional.Method(modid = Mods.IDs.WirelessRedstoneCBE)
override def getFreq = wirelessFrequency
@Optional.Method(modid = "WR-CBE|Core")
@Optional.Method(modid = Mods.IDs.WirelessRedstoneCBE)
override def getAttachedEntity = null
// ----------------------------------------------------------------------- //

View File

@ -3,5 +3,5 @@ package li.cil.oc.util.mods
object BundledRedstone {
def isAvailable = Mods.RedLogic.isAvailable ||
Mods.MineFactoryReloaded.isAvailable ||
(Mods.ProjectRed.isAvailable && ProjectRed.isAPIAvailable)
(Mods.ProjectRedTransmission.isAvailable && ProjectRed.isAPIAvailable)
}

View File

@ -4,8 +4,30 @@ import cpw.mods.fml.common.versioning.VersionParser
import cpw.mods.fml.common.{Loader, ModAPIManager}
object Mods {
val BattleGear2 = new SimpleMod("battlegear2")
val BuildCraftPower = new SimpleMod("BuildCraftAPI|power")
object IDs {
final val BattleGear2 = "battlegear2"
final val BuildCraftPower = "BuildCraftAPI|power"
final val ComputerCraft = "ComputerCraft"
final val ForgeMultipart = "ForgeMultipart"
final val GregTech = "gregtech_addon"
final val IndustrialCraft2 = "IC2"
final val MineFactoryReloaded = "MineFactoryReloaded"
final val NotEnoughItems = "NotEnoughItems"
final val PortalGun = "PortalGun"
final val ProjectRedTransmission = "ProjRed|Transmission"
final val RedLogic = "RedLogic"
final val StargateTech2 = "StargateTech2"
final val ThermalExpansion = "ThermalExpansion"
final val TinkersConstruct = "TConstruct"
final val UniversalElectricity = "UniversalElectricity"
final val Waila = "Waila"
final val WirelessRedstoneCBE = "WR-CBE|Core"
final val WirelessRedstoneSV = "WirelessRedstoneCore"
}
val BattleGear2 = new SimpleMod(IDs.BattleGear2)
val BuildCraftPower = new SimpleMod(IDs.BuildCraftPower)
val ComputerCraft15 = new Mod {
val isAvailable = try Class.forName("dan200.computer.api.ComputerCraftAPI") != null catch {
case _: Throwable => false
@ -19,26 +41,26 @@ object Mods {
val ComputerCraft = new Mod {
override def isAvailable = ComputerCraft15.isAvailable || ComputerCraft16.isAvailable
}
val ForgeMultipart = new SimpleMod("ForgeMultipart")
val GregTech = new SimpleMod("gregtech_addon")
val IndustrialCraft2 = new SimpleMod("IC2")
val MineFactoryReloaded = new SimpleMod("MineFactoryReloaded")
val NotEnoughItems = new SimpleMod("NotEnoughItems")
val PortalGun = new SimpleMod("PortalGun")
val ProjectRed = new SimpleMod("ProjRed|Transmission")
val RedLogic = new SimpleMod("RedLogic")
val ForgeMultipart = new SimpleMod(IDs.ForgeMultipart)
val GregTech = new SimpleMod(IDs.GregTech)
val IndustrialCraft2 = new SimpleMod(IDs.IndustrialCraft2)
val MineFactoryReloaded = new SimpleMod(IDs.MineFactoryReloaded)
val NotEnoughItems = new SimpleMod(IDs.NotEnoughItems)
val PortalGun = new SimpleMod(IDs.PortalGun)
val ProjectRedTransmission = new SimpleMod(IDs.ProjectRedTransmission)
val RedLogic = new SimpleMod(IDs.RedLogic)
val StargateTech2 = new Mod {
val isAvailable = Loader.isModLoaded("StargateTech2") && {
val mod = Loader.instance.getIndexedModList.get("StargateTech2")
val isAvailable = Loader.isModLoaded(IDs.StargateTech2) && {
val mod = Loader.instance.getIndexedModList.get(IDs.StargateTech2)
mod.getVersion.startsWith("0.7.")
}
}
val ThermalExpansion = new SimpleMod("ThermalExpansion")
val TinkersConstruct = new SimpleMod("TConstruct")
val UniversalElectricity = new SimpleMod("UniversalElectricity@[3.1,)")
val Waila = new SimpleMod("Waila")
val WirelessRedstoneCBE = new SimpleMod("WR-CBE|Core")
val WirelessRedstoneSV = new SimpleMod("WirelessRedstoneCore")
val ThermalExpansion = new SimpleMod(IDs.ThermalExpansion)
val TinkersConstruct = new SimpleMod(IDs.TinkersConstruct)
val UniversalElectricity = new SimpleMod(IDs.UniversalElectricity + "@[3.1,)")
val Waila = new SimpleMod(IDs.Waila)
val WirelessRedstoneCBE = new SimpleMod(IDs.WirelessRedstoneCBE)
val WirelessRedstoneSV = new SimpleMod(IDs.WirelessRedstoneSV)
trait Mod {
def isAvailable: Boolean

View File

@ -10,7 +10,7 @@ import mcp.mobius.waila.api.{IWailaConfigHandler, IWailaDataAccessor, IWailaData
import net.minecraft.item.ItemStack
object Waila {
@Optional.Method(modid = "Waila")
@Optional.Method(modid = Mods.IDs.Waila)
def init(registrar: IWailaRegistrar) {
registrar.registerBodyProvider(BlockDataProvider, classOf[Delegator[_]])
registrar.registerSyncedNBTKey(Settings.namespace + "node", classOf[tileentity.Capacitor])