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