mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-18 03:36:47 -04:00
added version specific mod presence checks
This commit is contained in:
parent
9065acf946
commit
3085b961b8
@ -2,7 +2,7 @@ package li.cil.oc
|
||||
|
||||
import cpw.mods.fml.common.registry.GameRegistry
|
||||
import li.cil.oc.common.item
|
||||
import li.cil.oc.util.mods.StargateTech2
|
||||
import li.cil.oc.util.mods.Mods
|
||||
import net.minecraft.block.Block
|
||||
import net.minecraft.item.{Item, ItemStack}
|
||||
import net.minecraftforge.oredict.OreDictionary
|
||||
@ -123,7 +123,7 @@ object Items {
|
||||
upgradeNavigation = Recipes.addItemDelegate(new item.UpgradeNavigation(multi), "navigationUpgrade")
|
||||
|
||||
abstractBus = new item.AbstractBusCard(multi)
|
||||
if (StargateTech2.isAvailable) {
|
||||
if (Mods.StargateTech2.isAvailable) {
|
||||
Recipes.addItemDelegate(abstractBus, "abstractBusCard")
|
||||
}
|
||||
|
||||
|
@ -8,6 +8,7 @@ import li.cil.oc.util.PackedColor
|
||||
import org.apache.commons.lang3.StringEscapeUtils
|
||||
import scala.collection.convert.WrapAsScala._
|
||||
import scala.io.Source
|
||||
import li.cil.oc.util.mods.Mods
|
||||
|
||||
class Settings(config: Config) {
|
||||
val itemId = config.getInt("ids.item")
|
||||
@ -107,10 +108,10 @@ class Settings(config: Config) {
|
||||
|
||||
val pureIgnorePower = config.getBoolean("power.ignorePower")
|
||||
val ignorePower = pureIgnorePower ||
|
||||
(!ModAPIManager.INSTANCE.hasAPI("BuildCraftAPI|power") &&
|
||||
!Loader.isModLoaded("IC2") &&
|
||||
!Loader.isModLoaded("ThermalExpansion") &&
|
||||
!Loader.isModLoaded("UniversalElectricity"))
|
||||
(!Mods.BuildCraftPower.isAvailable &&
|
||||
!Mods.IndustrialCraft2.isAvailable &&
|
||||
!Mods.ThermalExpansion.isAvailable &&
|
||||
!Mods.UniversalElectricity.isAvailable)
|
||||
val tickFrequency = config.getDouble("power.tickFrequency") max 1
|
||||
val chargeRate = config.getDouble("power.chargerChargeRate")
|
||||
val generatorEfficiency = config.getDouble("power.generatorEfficiency")
|
||||
|
@ -2,7 +2,7 @@ package li.cil.oc.common
|
||||
|
||||
import cpw.mods.fml.common.network.{Player, IConnectionHandler}
|
||||
import li.cil.oc.util.LuaStateFactory
|
||||
import li.cil.oc.util.mods.ProjectRed
|
||||
import li.cil.oc.util.mods.{Mods, ProjectRed}
|
||||
import li.cil.oc.{OpenComputers, UpdateCheck, Settings}
|
||||
import net.minecraft.entity.player.EntityPlayerMP
|
||||
import net.minecraft.network.packet.{Packet1Login, NetHandler}
|
||||
@ -17,7 +17,7 @@ object ConnectionHandler extends IConnectionHandler {
|
||||
if (!LuaStateFactory.isAvailable) {
|
||||
p.sendChatToPlayer(ChatMessageComponent.createFromText("§aOpenComputers§f: ").addKey(Settings.namespace + "gui.Chat.WarningLuaFallback"))
|
||||
}
|
||||
if (ProjectRed.isAvailable && !ProjectRed.isAPIAvailable) {
|
||||
if (Mods.ProjectRed.isAvailable && !ProjectRed.isAPIAvailable) {
|
||||
p.sendChatToPlayer(ChatMessageComponent.createFromText("§aOpenComputers§f: ").addKey(Settings.namespace + "gui.Chat.WarningProjectRed"))
|
||||
}
|
||||
if (!Settings.get.pureIgnorePower && Settings.get.ignorePower) {
|
||||
|
@ -1,7 +1,6 @@
|
||||
package li.cil.oc.common
|
||||
|
||||
import cpw.mods.fml.common.event._
|
||||
import cpw.mods.fml.common.Loader
|
||||
import cpw.mods.fml.common.network.NetworkRegistry
|
||||
import cpw.mods.fml.common.registry.{TickRegistry, GameRegistry}
|
||||
import cpw.mods.fml.relauncher.Side
|
||||
@ -16,7 +15,7 @@ import li.cil.oc.server.component.machine.{LuaJLuaArchitecture, NativeLuaArchite
|
||||
import li.cil.oc.server.network.WirelessNetwork
|
||||
import li.cil.oc.server.{TickHandler, driver, fs, network}
|
||||
import li.cil.oc.util.LuaStateFactory
|
||||
import li.cil.oc.util.mods.ComputerCraft
|
||||
import li.cil.oc.util.mods.{Mods, ComputerCraft}
|
||||
import net.minecraftforge.common.MinecraftForge
|
||||
|
||||
class Proxy {
|
||||
@ -26,10 +25,10 @@ class Proxy {
|
||||
Blocks.init()
|
||||
Items.init()
|
||||
|
||||
if (Loader.isModLoaded("ForgeMultipart")) {
|
||||
if (Mods.ForgeMultipart.isAvailable) {
|
||||
MultiPart.init()
|
||||
}
|
||||
if (Loader.isModLoaded("ComputerCraft")) {
|
||||
if (Mods.ComputerCraft.isAvailable) {
|
||||
ComputerCraft.init()
|
||||
}
|
||||
|
||||
|
@ -1,11 +1,10 @@
|
||||
package li.cil.oc.common.asm
|
||||
|
||||
import cpw.mods.fml.common.asm.transformers.deobf.FMLDeobfuscatingRemapper
|
||||
import cpw.mods.fml.common.Loader
|
||||
import cpw.mods.fml.relauncher.IFMLLoadingPlugin.TransformerExclusions
|
||||
import java.util.logging.{Level, Logger}
|
||||
import li.cil.oc.common.asm.template.SimpleComponentImpl
|
||||
import li.cil.oc.util.mods.StargateTech2
|
||||
import li.cil.oc.util.mods.Mods
|
||||
import net.minecraft.launchwrapper.{LaunchClassLoader, IClassTransformer}
|
||||
import org.objectweb.asm.tree._
|
||||
import org.objectweb.asm.{ClassWriter, ClassReader}
|
||||
@ -25,11 +24,11 @@ class ClassTransformer extends IClassTransformer {
|
||||
transformedClass = ensureStargateTechCompatibility(transformedClass)
|
||||
}
|
||||
if (transformedClass != null
|
||||
&& !name.startsWith("""net.minecraft.""")
|
||||
&& !name.startsWith("""net.minecraftforge.""")
|
||||
&& !name.startsWith("""li.cil.oc.common.asm.""")
|
||||
&& !name.startsWith("""li.cil.oc.api.""")) {
|
||||
if (name.startsWith("""li.cil.oc.""")) {
|
||||
&& !name.startsWith( """net.minecraft.""")
|
||||
&& !name.startsWith( """net.minecraftforge.""")
|
||||
&& !name.startsWith( """li.cil.oc.common.asm.""")
|
||||
&& !name.startsWith( """li.cil.oc.api.""")) {
|
||||
if (name.startsWith( """li.cil.oc.""")) {
|
||||
// Strip foreign interfaces from scala generated classes. This is
|
||||
// primarily intended to clean up mix-ins / synthetic classes
|
||||
// generated by Scala.
|
||||
@ -87,12 +86,7 @@ class ClassTransformer extends IClassTransformer {
|
||||
}
|
||||
|
||||
def ensureStargateTechCompatibility(basicClass: Array[Byte]): Array[Byte] = {
|
||||
if (!Loader.isModLoaded("StargateTech2")) {
|
||||
return basicClass
|
||||
}
|
||||
|
||||
if (StargateTech2.isAvailable) {
|
||||
// All green, API version is new enough.
|
||||
if (!Mods.StargateTech2.isAvailable) {
|
||||
return basicClass
|
||||
}
|
||||
|
||||
|
@ -2,13 +2,13 @@ package li.cil.oc.common.block
|
||||
|
||||
import codechicken.lib.vec.Cuboid6
|
||||
import codechicken.multipart.{TFacePart, JNormalOcclusion, NormalOcclusionTest, TileMultipart}
|
||||
import cpw.mods.fml.common.Loader
|
||||
import cpw.mods.fml.relauncher.{SideOnly, Side}
|
||||
import java.util
|
||||
import li.cil.oc.Settings
|
||||
import li.cil.oc.api.network.{SidedEnvironment, Environment}
|
||||
import li.cil.oc.common.multipart.CablePart
|
||||
import li.cil.oc.common.tileentity
|
||||
import li.cil.oc.Settings
|
||||
import li.cil.oc.util.mods.Mods
|
||||
import li.cil.oc.util.Tooltip
|
||||
import net.minecraft.client.renderer.texture.IconRegister
|
||||
import net.minecraft.entity.player.EntityPlayer
|
||||
@ -95,7 +95,7 @@ object Cable {
|
||||
if (!world.isAirBlock(tx, ty, tz)) {
|
||||
val neighborTileEntity = world.getBlockTileEntity(tx, ty, tz)
|
||||
val neighborHasNode = hasNetworkNode(neighborTileEntity, side.getOpposite)
|
||||
val canConnect = !Loader.isModLoaded("ForgeMultipart") ||
|
||||
val canConnect = !Mods.ForgeMultipart.isAvailable ||
|
||||
(canConnectFromSide(tileEntity, side) && canConnectFromSide(neighborTileEntity, side.getOpposite))
|
||||
val canConnectIM = canConnectFromSideIM(tileEntity, side) && canConnectFromSideIM(neighborTileEntity, side.getOpposite)
|
||||
if (neighborHasNode && canConnect && canConnectIM) {
|
||||
@ -115,7 +115,7 @@ object Cable {
|
||||
if (host.getWorldObj.isRemote) host.canConnect(side)
|
||||
else host.sidedNode(side) != null
|
||||
case host: Environment => true
|
||||
case host if Loader.isModLoaded("ForgeMultipart") => hasMultiPartNode(tileEntity)
|
||||
case host if Mods.ForgeMultipart.isAvailable => hasMultiPartNode(tileEntity)
|
||||
case _ => false
|
||||
}
|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
package li.cil.oc.common.block
|
||||
|
||||
import cpw.mods.fml.common.{Loader, Optional}
|
||||
import cpw.mods.fml.common.Optional
|
||||
import cpw.mods.fml.relauncher.{Side, SideOnly}
|
||||
import java.util
|
||||
import java.util.Random
|
||||
import li.cil.oc.client.renderer.block.BlockRenderer
|
||||
import li.cil.oc.common.tileentity
|
||||
import li.cil.oc.common.tileentity.traits.{Rotatable, BundledRedstoneAware}
|
||||
import li.cil.oc.util.ItemCosts
|
||||
import li.cil.oc.util.mods.Mods
|
||||
import li.cil.oc.{Settings, CreativeTab}
|
||||
import mcp.mobius.waila.api.{IWailaConfigHandler, IWailaDataAccessor, IWailaBlock}
|
||||
import net.minecraft.block.Block
|
||||
@ -23,7 +24,6 @@ import net.minecraftforge.common.ForgeDirection
|
||||
import org.lwjgl.input
|
||||
import powercrystals.minefactoryreloaded.api.rednet.{IRedNetNetworkContainer, RedNetConnectionType, IConnectableRedNet}
|
||||
import scala.collection.mutable
|
||||
import li.cil.oc.common.tileentity.traits.{Rotatable, BundledRedstoneAware}
|
||||
|
||||
@Optional.Interface(iface = "mcp.mobius.waila.api.IWailaBlock", modid = "Waila")
|
||||
class Delegator[Child <: Delegate](id: Int) extends Block(id, Material.iron) with IWailaBlock {
|
||||
@ -509,7 +509,7 @@ trait RedstoneDelegator[Child <: Delegate] extends Delegator[Child] with IConnec
|
||||
}
|
||||
|
||||
abstract override def onNeighborBlockChange(world: World, x: Int, y: Int, z: Int, blockId: Int) {
|
||||
if (Loader.isModLoaded("MineFactoryReloaded")) {
|
||||
if (Mods.MineFactoryReloaded.isAvailable) {
|
||||
world.getBlockTileEntity(x, y, z) match {
|
||||
case t: BundledRedstoneAware => for (side <- ForgeDirection.VALID_DIRECTIONS) {
|
||||
Block.blocksList(world.getBlockId(x + side.offsetX, y + side.offsetY, z + side.offsetZ)) match {
|
||||
|
@ -1,8 +1,9 @@
|
||||
package li.cil.oc.common.block
|
||||
|
||||
import cpw.mods.fml.common.{Optional, Loader}
|
||||
import cpw.mods.fml.common.Optional
|
||||
import java.util
|
||||
import li.cil.oc.common.{GuiType, tileentity}
|
||||
import li.cil.oc.util.mods.Mods
|
||||
import li.cil.oc.util.Tooltip
|
||||
import li.cil.oc.{OpenComputers, Settings}
|
||||
import mcp.mobius.waila.api.{IWailaConfigHandler, IWailaDataAccessor}
|
||||
@ -23,7 +24,7 @@ class DiskDrive(val parent: SimpleDelegator) extends SimpleDelegate {
|
||||
|
||||
override def tooltipLines(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
|
||||
tooltip.addAll(Tooltip.get(unlocalizedName))
|
||||
if (Loader.isModLoaded("ComputerCraft")) {
|
||||
if (Mods.ComputerCraft.isAvailable) {
|
||||
tooltip.addAll(Tooltip.get(unlocalizedName + ".CC"))
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,10 @@
|
||||
package li.cil.oc.common.block
|
||||
|
||||
import cpw.mods.fml.common.Loader
|
||||
import java.text.DecimalFormat
|
||||
import java.util
|
||||
import li.cil.oc.Settings
|
||||
import li.cil.oc.common.tileentity
|
||||
import li.cil.oc.Settings
|
||||
import li.cil.oc.util.mods.Mods
|
||||
import li.cil.oc.util.Tooltip
|
||||
import net.minecraft.client.renderer.texture.IconRegister
|
||||
import net.minecraft.entity.player.EntityPlayer
|
||||
@ -37,16 +37,16 @@ class PowerConverter(val parent: SimpleDelegator) extends SimpleDelegate {
|
||||
else (1.0 / ratio, 1.0)
|
||||
tooltip.addAll(Tooltip.get(unlocalizedName + "." + name, addExtension(a), addExtension(b)))
|
||||
}
|
||||
if (Loader.isModLoaded("BuildCraft|Energy")) {
|
||||
if (Mods.BuildCraftPower.isAvailable) {
|
||||
addRatio("BC", Settings.ratioBC)
|
||||
}
|
||||
if (Loader.isModLoaded("IC2")) {
|
||||
if (Mods.IndustrialCraft2.isAvailable) {
|
||||
addRatio("IC2", Settings.ratioIC2)
|
||||
}
|
||||
if (Loader.isModLoaded("ThermalExpansion")) {
|
||||
if (Mods.ThermalExpansion.isAvailable) {
|
||||
addRatio("TE", Settings.ratioTE)
|
||||
}
|
||||
if (Loader.isModLoaded("UniversalElectricity")) {
|
||||
if (Mods.UniversalElectricity.isAvailable) {
|
||||
addRatio("UE", Settings.ratioUE)
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
package li.cil.oc.common.block
|
||||
|
||||
import cpw.mods.fml.common.Loader
|
||||
import java.util
|
||||
import li.cil.oc.common.tileentity
|
||||
import li.cil.oc.util.mods.Mods
|
||||
import li.cil.oc.util.Tooltip
|
||||
import li.cil.oc.{Items, Settings}
|
||||
import net.minecraft.client.renderer.texture.IconRegister
|
||||
@ -19,10 +19,10 @@ class Redstone(val parent: SimpleDelegator) extends RedstoneAware with SimpleDel
|
||||
|
||||
override def tooltipLines(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
|
||||
tooltip.addAll(Tooltip.get(unlocalizedName))
|
||||
if (Loader.isModLoaded("RedLogic")) {
|
||||
if (Mods.RedLogic.isAvailable) {
|
||||
tooltip.addAll(Tooltip.get(Items.rs.unlocalizedName + ".RedLogic"))
|
||||
}
|
||||
if (Loader.isModLoaded("MineFactoryReloaded")) {
|
||||
if (Mods.MineFactoryReloaded.isAvailable) {
|
||||
tooltip.addAll(Tooltip.get(Items.rs.unlocalizedName + ".RedNet"))
|
||||
}
|
||||
}
|
||||
|
@ -3,7 +3,7 @@ package li.cil.oc.common.item
|
||||
import java.util
|
||||
import li.cil.oc.Settings
|
||||
import li.cil.oc.util.Tooltip
|
||||
import li.cil.oc.util.mods.StargateTech2
|
||||
import li.cil.oc.util.mods.Mods
|
||||
import net.minecraft.client.renderer.texture.IconRegister
|
||||
import net.minecraft.entity.player.EntityPlayer
|
||||
import net.minecraft.item.ItemStack
|
||||
@ -11,7 +11,7 @@ import net.minecraft.item.ItemStack
|
||||
class AbstractBusCard(val parent: Delegator) extends Delegate {
|
||||
val unlocalizedName = "AbstractBusCard"
|
||||
|
||||
showInItemList = StargateTech2.isAvailable
|
||||
showInItemList = Mods.StargateTech2.isAvailable
|
||||
|
||||
override def tooltipLines(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
|
||||
tooltip.addAll(Tooltip.get(unlocalizedName))
|
||||
|
@ -1,8 +1,8 @@
|
||||
package li.cil.oc.common.item
|
||||
|
||||
import cpw.mods.fml.common.Loader
|
||||
import java.util
|
||||
import li.cil.oc.Settings
|
||||
import li.cil.oc.util.mods.Mods
|
||||
import li.cil.oc.util.Tooltip
|
||||
import net.minecraft.client.renderer.texture.IconRegister
|
||||
import net.minecraft.entity.player.EntityPlayer
|
||||
@ -11,7 +11,7 @@ import net.minecraft.item.ItemStack
|
||||
class IronNugget(val parent: Delegator) extends Delegate {
|
||||
val unlocalizedName = "IronNugget"
|
||||
|
||||
showInItemList = !Loader.isModLoaded("gregtech_addon")
|
||||
showInItemList = !Mods.GregTech.isAvailable
|
||||
|
||||
override def tooltipLines(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
|
||||
tooltip.addAll(Tooltip.get(unlocalizedName))
|
||||
|
@ -1,8 +1,8 @@
|
||||
package li.cil.oc.common.item
|
||||
|
||||
import cpw.mods.fml.common.Loader
|
||||
import java.util
|
||||
import li.cil.oc.Settings
|
||||
import li.cil.oc.util.mods.Mods
|
||||
import li.cil.oc.util.Tooltip
|
||||
import net.minecraft.client.renderer.texture.IconRegister
|
||||
import net.minecraft.entity.player.EntityPlayer
|
||||
@ -13,10 +13,10 @@ class RedstoneCard(val parent: Delegator) extends Delegate {
|
||||
|
||||
override def tooltipLines(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
|
||||
tooltip.addAll(Tooltip.get(unlocalizedName))
|
||||
if (Loader.isModLoaded("RedLogic")) {
|
||||
if (Mods.RedLogic.isAvailable) {
|
||||
tooltip.addAll(Tooltip.get(unlocalizedName + ".RedLogic"))
|
||||
}
|
||||
if (Loader.isModLoaded("MineFactoryReloaded")) {
|
||||
if (Mods.MineFactoryReloaded.isAvailable) {
|
||||
tooltip.addAll(Tooltip.get(unlocalizedName + ".RedNet"))
|
||||
}
|
||||
super.tooltipLines(stack, player, tooltip, advanced)
|
||||
|
@ -1,11 +1,12 @@
|
||||
package li.cil.oc.common.tileentity
|
||||
|
||||
import cpw.mods.fml.common.{Loader, Optional}
|
||||
import cpw.mods.fml.common.Optional
|
||||
import dan200.computercraft.api.lua.ILuaContext
|
||||
import dan200.computercraft.api.peripheral.{IComputerAccess, IPeripheral}
|
||||
import li.cil.oc.api
|
||||
import li.cil.oc.api.network.{Packet, Message}
|
||||
import li.cil.oc.server.PacketSender
|
||||
import li.cil.oc.util.mods.Mods
|
||||
import net.minecraftforge.common.ForgeDirection
|
||||
import scala.collection.mutable
|
||||
|
||||
@ -102,7 +103,7 @@ class Router extends traits.Hub with traits.NotAnalyzable with IPeripheral {
|
||||
|
||||
override protected def onPlugMessage(plug: Plug, message: Message) {
|
||||
super.onPlugMessage(plug, message)
|
||||
if (message.name == "network.message" && Loader.isModLoaded("ComputerCraft")) {
|
||||
if (message.name == "network.message" && Mods.ComputerCraft.isAvailable) {
|
||||
message.data match {
|
||||
case Array(packet: Packet) =>
|
||||
packet.data.headOption match {
|
||||
|
@ -1,8 +1,8 @@
|
||||
package li.cil.oc.common.tileentity
|
||||
|
||||
import cpw.mods.fml.common.Loader
|
||||
import li.cil.oc.api.network._
|
||||
import li.cil.oc.util.ExtendedNBT._
|
||||
import li.cil.oc.util.mods.Mods
|
||||
import li.cil.oc.{api, Settings}
|
||||
import net.minecraft.entity.player.EntityPlayer
|
||||
import net.minecraft.nbt.NBTTagCompound
|
||||
@ -38,7 +38,7 @@ class WirelessRouter extends Router with WirelessEndpoint {
|
||||
|
||||
override def receivePacket(packet: Packet, distance: Double) {
|
||||
tryEnqueuePacket(ForgeDirection.UNKNOWN, packet)
|
||||
if (Loader.isModLoaded("ComputerCraft")) {
|
||||
if (Mods.ComputerCraft.isAvailable) {
|
||||
packet.data.headOption match {
|
||||
case Some(answerPort: java.lang.Double) => queueMessage(packet.source, packet.destination, packet.port, answerPort.toInt, packet.data.drop(1))
|
||||
case _ => queueMessage(packet.source, packet.destination, packet.port, -1, packet.data)
|
||||
|
@ -6,7 +6,7 @@ import li.cil.oc.api.network
|
||||
import li.cil.oc.api.network.ManagedEnvironment
|
||||
import li.cil.oc.server.component
|
||||
import li.cil.oc.server.{PacketSender => ServerPacketSender}
|
||||
import li.cil.oc.util.mods.{StargateTech2API, StargateTech2}
|
||||
import li.cil.oc.util.mods.{Mods, StargateTech2}
|
||||
import net.minecraft.nbt.NBTTagCompound
|
||||
import stargatetech2.api.bus.{IBusInterface, IBusDevice}
|
||||
import stargatetech2.api.StargateTechAPI
|
||||
@ -19,7 +19,8 @@ import stargatetech2.api.StargateTechAPI
|
||||
// probably is something derping up in the class loader... the thing that
|
||||
// confuses me the most, though, is that it apparently works for redstone and
|
||||
// the CC interface, so... yeah. I'm out of ideas.
|
||||
trait AbstractBusAware extends TileEntity with network.Environment { self: IBusDevice =>
|
||||
trait AbstractBusAware extends TileEntity with network.Environment {
|
||||
self: IBusDevice =>
|
||||
protected var _isAbstractBusAvailable: Boolean = _
|
||||
|
||||
protected lazy val fakeInterface = Array[AnyRef](StargateTechAPI.api.getFactory.getIBusInterface(this, null))
|
||||
@ -51,9 +52,9 @@ trait AbstractBusAware extends TileEntity with network.Environment { self: IBusD
|
||||
def isAbstractBusAvailable_=(value: Boolean) = {
|
||||
if (value != isAbstractBusAvailable) {
|
||||
_isAbstractBusAvailable = value
|
||||
if (isServer && StargateTech2.isAvailable) {
|
||||
if (isAbstractBusAvailable) StargateTech2API.addDevice(world, x, y, z)
|
||||
else StargateTech2API.removeDevice(world, x, y, z)
|
||||
if (isServer && Mods.StargateTech2.isAvailable) {
|
||||
if (isAbstractBusAvailable) StargateTech2.addDevice(world, x, y, z)
|
||||
else StargateTech2.removeDevice(world, x, y, z)
|
||||
}
|
||||
world.notifyBlocksOfNeighborChange(x, y, z, block.blockID)
|
||||
if (isServer) ServerPacketSender.sendAbstractBusState(this)
|
||||
|
@ -3,7 +3,7 @@ package li.cil.oc.common.tileentity.traits
|
||||
import cpw.mods.fml.common.{Loader, Optional}
|
||||
import li.cil.oc.Settings
|
||||
import li.cil.oc.util.ExtendedNBT._
|
||||
import li.cil.oc.util.mods.ProjectRed
|
||||
import li.cil.oc.util.mods.{Mods, ProjectRed}
|
||||
import mods.immibis.redlogic.api.wiring.{IInsulatedRedstoneWire, IBundledUpdatable, IBundledEmitter}
|
||||
import mrtjp.projectred.api.{ProjectRedAPI, IBundledTile}
|
||||
import net.minecraft.block.Block
|
||||
@ -57,7 +57,7 @@ trait BundledRedstoneAware extends RedstoneAware with IBundledEmitter with IBund
|
||||
def bundledOutput(side: ForgeDirection, color: Int, value: Int): Unit = if (value != bundledOutput(side, color)) {
|
||||
_bundledOutput(toLocal(side).ordinal())(color) = value
|
||||
|
||||
if (Loader.isModLoaded("MineFactoryReloaded")) {
|
||||
if (Mods.MineFactoryReloaded.isAvailable) {
|
||||
val nx = x + side.offsetX
|
||||
val ny = y + side.offsetY
|
||||
val nz = z + side.offsetZ
|
||||
@ -123,7 +123,7 @@ trait BundledRedstoneAware extends RedstoneAware with IBundledEmitter with IBund
|
||||
// ----------------------------------------------------------------------- //
|
||||
|
||||
protected def computeBundledInput(side: ForgeDirection): Array[Int] = {
|
||||
val redLogic = if (Loader.isModLoaded("RedLogic")) {
|
||||
val redLogic = if (Mods.RedLogic.isAvailable) {
|
||||
world.getBlockTileEntity(
|
||||
x + side.offsetX,
|
||||
y + side.offsetY,
|
||||
@ -144,7 +144,7 @@ trait BundledRedstoneAware extends RedstoneAware with IBundledEmitter with IBund
|
||||
case _ => null
|
||||
}
|
||||
} else null
|
||||
val projectRed = if (ProjectRed.isAvailable && ProjectRed.isAPIAvailable) {
|
||||
val projectRed = if (Mods.ProjectRed.isAvailable && ProjectRed.isAPIAvailable) {
|
||||
Option(ProjectRedAPI.transmissionAPI.getBundledInput(world, x, y, z, side.ordinal)).fold(null: Array[Int])(_.map(_ & 0xFF))
|
||||
} else null
|
||||
(redLogic, projectRed) match {
|
||||
@ -156,7 +156,7 @@ trait BundledRedstoneAware extends RedstoneAware with IBundledEmitter with IBund
|
||||
}
|
||||
|
||||
override protected def onRedstoneOutputEnabledChanged() {
|
||||
if (Loader.isModLoaded("MineFactoryReloaded")) {
|
||||
if (Mods.MineFactoryReloaded.isAvailable) {
|
||||
for (side <- ForgeDirection.VALID_DIRECTIONS) {
|
||||
val nx = x + side.offsetX
|
||||
val ny = y + side.offsetY
|
||||
|
@ -1,9 +1,10 @@
|
||||
package li.cil.oc.common.tileentity.traits
|
||||
|
||||
import cpw.mods.fml.common.{Loader, Optional}
|
||||
import cpw.mods.fml.common.Optional
|
||||
import cpw.mods.fml.relauncher.{Side, SideOnly}
|
||||
import li.cil.oc.server.{PacketSender => ServerPacketSender}
|
||||
import li.cil.oc.Settings
|
||||
import li.cil.oc.util.mods.Mods
|
||||
import mods.immibis.redlogic.api.wiring.{IWire, IRedstoneUpdatable, IRedstoneEmitter, IConnectable}
|
||||
import net.minecraft.block.Block
|
||||
import net.minecraft.nbt.NBTTagCompound
|
||||
@ -121,7 +122,7 @@ trait RedstoneAware extends RotationAware with IConnectable with IRedstoneEmitte
|
||||
// See BlockRedstoneLogic.getInputStrength() for reference.
|
||||
val vanilla = math.max(world.getIndirectPowerLevelTo(sx, sy, sz, side.ordinal()),
|
||||
if (world.getBlockId(sx, sy, sz) == Block.redstoneWire.blockID) world.getBlockMetadata(sx, sy, sz) else 0)
|
||||
val redLogic = if (Loader.isModLoaded("RedLogic")) {
|
||||
val redLogic = if (Mods.RedLogic.isAvailable) {
|
||||
world.getBlockTileEntity(sx, sy, sz) match {
|
||||
case emitter: IRedstoneEmitter =>
|
||||
var strength = 0
|
||||
|
@ -1,16 +1,17 @@
|
||||
package li.cil.oc.common.tileentity.traits.power
|
||||
|
||||
import cpw.mods.fml.common.{Loader, Optional}
|
||||
import cpw.mods.fml.common.Optional
|
||||
import ic2.api.energy.tile.IEnergySink
|
||||
import li.cil.oc.server.TickHandler
|
||||
import li.cil.oc.Settings
|
||||
import li.cil.oc.util.mods.Mods
|
||||
import net.minecraftforge.common.ForgeDirection
|
||||
|
||||
@Optional.Interface(iface = "ic2.api.energy.tile.IEnergySink", modid = "IC2")
|
||||
trait IndustrialCraft2 extends Common with IEnergySink {
|
||||
var addedToPowerGrid = false
|
||||
|
||||
private lazy val useIndustrialCraft2Power = isServer && !Settings.get.ignorePower && Loader.isModLoaded("IC2")
|
||||
private lazy val useIndustrialCraft2Power = isServer && !Settings.get.ignorePower && Mods.IndustrialCraft2.isAvailable
|
||||
|
||||
// ----------------------------------------------------------------------- //
|
||||
|
||||
|
@ -1,9 +1,8 @@
|
||||
package li.cil.oc.server.component.robot
|
||||
|
||||
import cpw.mods.fml.common.Loader
|
||||
import li.cil.oc.common.tileentity
|
||||
import li.cil.oc.Settings
|
||||
import li.cil.oc.util.mods.{UniversalElectricity, TinkersConstruct, PortalGun}
|
||||
import li.cil.oc.util.mods.{Mods, UniversalElectricity, TinkersConstruct, PortalGun}
|
||||
import net.minecraft.block.{BlockPistonBase, BlockFluid, Block}
|
||||
import net.minecraft.entity.item.EntityItem
|
||||
import net.minecraft.entity.player.{EnumStatus, EntityPlayer}
|
||||
@ -327,7 +326,7 @@ class Player(val robot: tileentity.Robot) extends EntityPlayer(robot.world, Sett
|
||||
}
|
||||
else 0
|
||||
}
|
||||
if (Loader.isModLoaded("UniversalElectricity") && UniversalElectricity.isEnergyItem(stack)) {
|
||||
if (Mods.UniversalElectricity.isAvailable && UniversalElectricity.isEnergyItem(stack)) {
|
||||
UniversalElectricity.chargeItem(stack, repair(UniversalElectricity.getEnergyInItem(oldStack), UniversalElectricity.getEnergyInItem(stack)))
|
||||
}
|
||||
else if (stack.isItemStackDamageable) {
|
||||
|
@ -3,7 +3,7 @@ package li.cil.oc.server.driver.item
|
||||
import li.cil.oc.Items
|
||||
import li.cil.oc.api.driver.Slot
|
||||
import li.cil.oc.server.component
|
||||
import li.cil.oc.util.mods.StargateTech2
|
||||
import li.cil.oc.util.mods.Mods
|
||||
import net.minecraft.item.ItemStack
|
||||
import net.minecraft.tileentity.{TileEntity => MCTileEntity}
|
||||
import stargatetech2.api.bus.IBusDevice
|
||||
@ -11,7 +11,7 @@ import stargatetech2.api.bus.IBusDevice
|
||||
object AbstractBusCard extends Item {
|
||||
override def worksWith(stack: ItemStack) = isOneOf(stack, Items.abstractBus)
|
||||
|
||||
override def createEnvironment(stack: ItemStack, container: MCTileEntity) = if (StargateTech2.isAvailable) container match {
|
||||
override def createEnvironment(stack: ItemStack, container: MCTileEntity) = if (Mods.StargateTech2.isAvailable) container match {
|
||||
case device: IBusDevice => new component.AbstractBus(device)
|
||||
case _ => null
|
||||
}
|
||||
|
@ -1,12 +1,11 @@
|
||||
package li.cil.oc.server.driver.item
|
||||
|
||||
import cpw.mods.fml.common.Loader
|
||||
import dan200.computercraft.api.media.IMedia
|
||||
import li.cil.oc
|
||||
import li.cil.oc.api.driver.Slot
|
||||
import li.cil.oc.api.fs.Label
|
||||
import li.cil.oc.common.item.{FloppyDisk, HardDiskDrive}
|
||||
import li.cil.oc.util.mods.ComputerCraft
|
||||
import li.cil.oc.util.mods.{Mods, ComputerCraft}
|
||||
import li.cil.oc.{Settings, Items}
|
||||
import net.minecraft.item.ItemStack
|
||||
import net.minecraft.nbt.NBTTagCompound
|
||||
@ -15,10 +14,10 @@ import net.minecraft.tileentity.TileEntity
|
||||
object FileSystem extends Item {
|
||||
override def worksWith(stack: ItemStack) =
|
||||
isOneOf(stack, Items.hdd1, Items.hdd2, Items.hdd3, Items.floppyDisk) ||
|
||||
(Loader.isModLoaded("ComputerCraft") && ComputerCraft.isDisk(stack))
|
||||
(Mods.ComputerCraft.isAvailable && ComputerCraft.isDisk(stack))
|
||||
|
||||
override def createEnvironment(stack: ItemStack, container: TileEntity) =
|
||||
if (Loader.isModLoaded("ComputerCraft") && ComputerCraft.isDisk(stack) && container != null) {
|
||||
if (Mods.ComputerCraft.isAvailable && ComputerCraft.isDisk(stack) && container != null) {
|
||||
val address = addressFromTag(dataTag(stack))
|
||||
val mount = ComputerCraft.createDiskMount(stack, container.getWorldObj)
|
||||
Option(oc.api.FileSystem.asManagedEnvironment(mount, new ComputerCraftLabel(stack), container)) match {
|
||||
@ -35,7 +34,7 @@ object FileSystem extends Item {
|
||||
}
|
||||
|
||||
override def slot(stack: ItemStack) =
|
||||
if (Loader.isModLoaded("ComputerCraft") && ComputerCraft.isDisk(stack)) Slot.Disk
|
||||
if (Mods.ComputerCraft.isAvailable && ComputerCraft.isDisk(stack)) Slot.Disk
|
||||
else Items.multi.subItem(stack) match {
|
||||
case Some(hdd: HardDiskDrive) => Slot.HardDiskDrive
|
||||
case Some(disk: FloppyDisk) => Slot.Disk
|
||||
|
@ -2,7 +2,7 @@ package li.cil.oc.server.network
|
||||
|
||||
import codechicken.lib.vec.Cuboid6
|
||||
import codechicken.multipart.{TFacePart, JNormalOcclusion, NormalOcclusionTest, TileMultipart}
|
||||
import cpw.mods.fml.common.{Loader, FMLCommonHandler}
|
||||
import cpw.mods.fml.common.FMLCommonHandler
|
||||
import cpw.mods.fml.relauncher.Side
|
||||
import li.cil.oc.api.network
|
||||
import li.cil.oc.api.network.{Node => ImmutableNode, WirelessEndpoint, SidedEnvironment, Environment, Visibility}
|
||||
@ -10,6 +10,7 @@ import li.cil.oc.common.block.Cable
|
||||
import li.cil.oc.common.multipart.CablePart
|
||||
import li.cil.oc.common.tileentity
|
||||
import li.cil.oc.server.network.{Node => MutableNode}
|
||||
import li.cil.oc.util.mods.Mods
|
||||
import li.cil.oc.{Settings, api}
|
||||
import net.minecraft.nbt._
|
||||
import net.minecraft.tileentity.TileEntity
|
||||
@ -374,7 +375,7 @@ object Network extends api.detail.NetworkAPI {
|
||||
case Some(node: MutableNode) =>
|
||||
neighborNode match {
|
||||
case Some(neighbor: MutableNode) if neighbor != node && neighbor.network != null =>
|
||||
val canConnect = !Loader.isModLoaded("ForgeMultipart") ||
|
||||
val canConnect = !Mods.ForgeMultipart.isAvailable ||
|
||||
(canConnectFromSide(tileEntity, side) && canConnectFromSide(neighborTileEntity, side.getOpposite))
|
||||
val canConnectIM = canConnectFromSideIM(tileEntity, side) && canConnectFromSideIM(neighborTileEntity, side.getOpposite)
|
||||
if (canConnect && canConnectIM) neighbor.connect(node)
|
||||
@ -399,7 +400,7 @@ object Network extends api.detail.NetworkAPI {
|
||||
tileEntity match {
|
||||
case host: SidedEnvironment => Option(host.sidedNode(side))
|
||||
case host: Environment => Some(host.node)
|
||||
case host if Loader.isModLoaded("ForgeMultipart") => getMultiPartNode(host)
|
||||
case host if Mods.ForgeMultipart.isAvailable => getMultiPartNode(host)
|
||||
case _ => None
|
||||
}
|
||||
|
||||
|
@ -1,9 +1,7 @@
|
||||
package li.cil.oc.util.mods
|
||||
|
||||
import cpw.mods.fml.common.Loader
|
||||
|
||||
object BundledRedstone {
|
||||
def isAvailable = Loader.isModLoaded("RedLogic") ||
|
||||
Loader.isModLoaded("MineFactoryReloaded") ||
|
||||
(ProjectRed.isAvailable && ProjectRed.isAPIAvailable)
|
||||
def isAvailable = Mods.RedLogic.isAvailable ||
|
||||
Mods.MineFactoryReloaded.isAvailable ||
|
||||
(Mods.ProjectRed.isAvailable && ProjectRed.isAPIAvailable)
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
package li.cil.oc.util.mods
|
||||
|
||||
import cpw.mods.fml.common.Loader
|
||||
import dan200.computercraft.api.ComputerCraftAPI
|
||||
import dan200.computercraft.api.filesystem.{IMount, IWritableMount}
|
||||
import dan200.computercraft.api.media.IMedia
|
||||
@ -20,7 +19,7 @@ object ComputerCraft {
|
||||
})
|
||||
}
|
||||
|
||||
def isDisk(stack: ItemStack) = Loader.isModLoaded("ComputerCraft") && stack.getItem.isInstanceOf[IMedia]
|
||||
def isDisk(stack: ItemStack) = stack.getItem.isInstanceOf[IMedia]
|
||||
|
||||
def createDiskMount(stack: ItemStack, world: World) = if (isDisk(stack)) {
|
||||
stack.getItem.asInstanceOf[IMedia].createDataMount(stack, world) match {
|
||||
|
@ -1,6 +1,5 @@
|
||||
package li.cil.oc.util.mods
|
||||
|
||||
import cpw.mods.fml.common.Loader
|
||||
import net.minecraft.item.ItemStack
|
||||
|
||||
object IndustrialCraft2 {
|
||||
@ -13,7 +12,7 @@ object IndustrialCraft2 {
|
||||
case _: Throwable => None
|
||||
}
|
||||
|
||||
def isMiningLaser(stack: ItemStack) = stack != null && Loader.isModLoaded("IC2") && (miningLaser match {
|
||||
def isMiningLaser(stack: ItemStack) = stack != null && Mods.IndustrialCraft2.isAvailable && (miningLaser match {
|
||||
case Some(laser) => laser.itemID == stack.itemID
|
||||
case _ => false
|
||||
})
|
||||
|
30
src/main/scala/li/cil/oc/util/mods/Mods.scala
Normal file
30
src/main/scala/li/cil/oc/util/mods/Mods.scala
Normal file
@ -0,0 +1,30 @@
|
||||
package li.cil.oc.util.mods
|
||||
|
||||
import cpw.mods.fml.common.versioning.VersionParser
|
||||
import cpw.mods.fml.common.{ModAPIManager, Loader}
|
||||
|
||||
object Mods {
|
||||
val BuildCraftPower = new Mod("BuildCraftAPI|power")
|
||||
val ComputerCraft = new Mod("ComputerCraft@[1.6,1.50)")
|
||||
val ForgeMultipart = new Mod("ForgeMultipart")
|
||||
val GregTech = new Mod("gregtech_addon")
|
||||
val IndustrialCraft2 = new Mod("IC2")
|
||||
val MineFactoryReloaded = new Mod("MineFactoryReloaded")
|
||||
val NotEnoughItems = new Mod("NotEnoughItems")
|
||||
val PortalGun = new Mod("PortalGun")
|
||||
val ProjectRed = new Mod("ProjRed|Transmission")
|
||||
val RedLogic = new Mod("RedLogic")
|
||||
val StargateTech2 = new Mod("StargateTech2@[0.6.0,)")
|
||||
val ThermalExpansion = new Mod("ThermalExpansion")
|
||||
val UniversalElectricity = new Mod("UniversalElectricity@[3.1,)")
|
||||
|
||||
class Mod(val id: String) {
|
||||
val isAvailable = {
|
||||
val version = VersionParser.parseVersionReference(id)
|
||||
if (Loader.isModLoaded(version.getLabel))
|
||||
version.containsVersion(Loader.instance.getIndexedModList.get(version.getLabel).getProcessedVersion)
|
||||
else ModAPIManager.INSTANCE.hasAPI(version.getLabel)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,7 +1,5 @@
|
||||
package li.cil.oc.util.mods
|
||||
|
||||
import cpw.mods.fml.common.Loader
|
||||
|
||||
object NEI {
|
||||
private lazy val layoutManagerClass = try {
|
||||
Class.forName("codechicken.nei.LayoutManager")
|
||||
@ -11,7 +9,7 @@ object NEI {
|
||||
}
|
||||
|
||||
def isInputFocused =
|
||||
Loader.isModLoaded("NotEnoughItems") && layoutManagerClass != null && (try {
|
||||
Mods.NotEnoughItems.isAvailable && layoutManagerClass != null && (try {
|
||||
layoutManagerClass.getDeclaredMethods.find(m => m.getName == "getInputFocused").fold(false)(m => m.invoke(null) != null)
|
||||
}
|
||||
catch {
|
||||
|
@ -1,6 +1,5 @@
|
||||
package li.cil.oc.util.mods
|
||||
|
||||
import cpw.mods.fml.common.Loader
|
||||
import net.minecraft.item.ItemStack
|
||||
|
||||
object PortalGun {
|
||||
@ -13,7 +12,7 @@ object PortalGun {
|
||||
|
||||
def isPortalGun(stack: ItemStack) =
|
||||
stack != null && stack.stackSize > 0 &&
|
||||
Loader.isModLoaded("PortalGun") &&
|
||||
Mods.PortalGun.isAvailable &&
|
||||
portalGunClass != null &&
|
||||
portalGunClass.isAssignableFrom(stack.getItem.getClass)
|
||||
|
||||
|
@ -1,10 +1,7 @@
|
||||
package li.cil.oc.util.mods
|
||||
|
||||
import cpw.mods.fml.common.Loader
|
||||
import mrtjp.projectred.api.ProjectRedAPI
|
||||
|
||||
object ProjectRed {
|
||||
def isAvailable = Loader.isModLoaded("ProjRed|Transmission")
|
||||
|
||||
def isAPIAvailable = classOf[ProjectRedAPI].getFields.exists(_.getName == "transmissionAPI")
|
||||
}
|
||||
|
@ -1,24 +1,10 @@
|
||||
package li.cil.oc.util.mods
|
||||
|
||||
import cpw.mods.fml.common.Loader
|
||||
import cpw.mods.fml.common.versioning.{VersionParser, DefaultArtifactVersion}
|
||||
import net.minecraft.world.World
|
||||
import net.minecraftforge.common.MinecraftForge
|
||||
import stargatetech2.api.bus.BusEvent.{RemoveFromNetwork, AddToNetwork}
|
||||
|
||||
object StargateTech2 {
|
||||
def isAvailable = Loader.isModLoaded("StargateTech2") && (try {
|
||||
val mod = Loader.instance.getIndexedModList.get("StargateTech2")
|
||||
val have = new DefaultArtifactVersion(mod.getVersion)
|
||||
val want = VersionParser.parseRange("[0.6.0,)")
|
||||
|
||||
want.containsVersion(have)
|
||||
} catch {
|
||||
case _: Throwable => false
|
||||
})
|
||||
}
|
||||
|
||||
object StargateTech2API {
|
||||
def addDevice(world: World, x: Int, y: Int, z: Int) = MinecraftForge.EVENT_BUS.post(new AddToNetwork(world, x, y, z))
|
||||
|
||||
def removeDevice(world: World, x: Int, y: Int, z: Int) = MinecraftForge.EVENT_BUS.post(new RemoveFromNetwork(world, x, y, z))
|
||||
|
Loading…
x
Reference in New Issue
Block a user