Add ExtraCells and Mekanism integration (#2629)

This commit is contained in:
DrummerMC 2017-11-23 23:48:15 +01:00 committed by payonel
parent 8f8974ac15
commit 823c9903a9
8 changed files with 55 additions and 29 deletions

View File

@ -141,10 +141,12 @@ repositories {
name 'Galacticraft' name 'Galacticraft'
artifactPattern "http://ci.cil.li/job/Galacticraft/${config.gc.build}/artifact/build/libs/[module]-1.7-[revision].${config.gc.build}.[ext]" artifactPattern "http://ci.cil.li/job/Galacticraft/${config.gc.build}/artifact/build/libs/[module]-1.7-[revision].${config.gc.build}.[ext]"
} }
*/
ivy { ivy {
name 'Mekanism' name 'Mekanism'
artifactPattern "http://ci.cil.li/job/Mekanism/${config.mekanism.build}/artifact/output/[module]-${config.minecraft.version}-[revision].${config.mekanism.build}.[ext]" artifactPattern "http://addons-origin.cursecdn.com/files/${config.mekanism.cf}/[module]-[revision].[ext]"
} }
/*
ivy { ivy {
name 'immibis' name 'immibis'
artifactPattern "https://dl.dropboxusercontent.com/u/2944265/mods/autobuilt/files/[module]-[revision].[ext]" artifactPattern "https://dl.dropboxusercontent.com/u/2944265/mods/autobuilt/files/[module]-[revision].[ext]"
@ -169,10 +171,12 @@ repositories {
name 'BloodMagic' name 'BloodMagic'
artifactPattern "http://addons-origin.cursecdn.com/files/${config.bloodmagic.cf}/[module]-${config.minecraft.version}-[revision].[ext]" artifactPattern "http://addons-origin.cursecdn.com/files/${config.bloodmagic.cf}/[module]-${config.minecraft.version}-[revision].[ext]"
} }
*/
ivy { ivy {
name 'ExtraCells' name 'ExtraCells'
artifactPattern "http://addons-origin.cursecdn.com/files/${config.ec.cf}/[module]-[revision].[ext]" artifactPattern "http://addons-origin.cursecdn.com/files/${config.extracells.cf}/[module]-[revision].[ext]"
} }
/*
ivy { ivy {
name 'ThaumicEnergistics' name 'ThaumicEnergistics'
artifactPattern "http://addons-origin.cursecdn.com/files/${config.thaumicenergistics.cf}/[module]-[revision].[ext]" artifactPattern "http://addons-origin.cursecdn.com/files/${config.thaumicenergistics.cf}/[module]-[revision].[ext]"
@ -250,7 +254,9 @@ dependencies {
/* /*
provided name: 'buildcraft', version: config.bc.version, classifier: "dev", ext: 'jar' provided name: 'buildcraft', version: config.bc.version, classifier: "dev", ext: 'jar'
provided name: 'GalacticraftCoreAll', version: config.gc.version, ext: 'jar' provided name: 'GalacticraftCoreAll', version: config.gc.version, ext: 'jar'
provided name: 'MekanismAll', version: config.mekanism.version, ext: 'jar' */
provided name: 'Mekanism', version: config.mekanism.version, ext: 'jar'
/*
provided name: 'redlogic', version: config.redlogic.version, ext: 'jar' provided name: 'redlogic', version: config.redlogic.version, ext: 'jar'
provided name: 'CoFHLib', version: config.cofhlib.version, ext: 'jar' provided name: 'CoFHLib', version: config.cofhlib.version, ext: 'jar'
@ -258,7 +264,9 @@ dependencies {
provided name: 'MineFactoryReloaded', version: config.mfr.version, ext: 'jar' provided name: 'MineFactoryReloaded', version: config.mfr.version, ext: 'jar'
provided name: 'Railcraft', version: config.rc.version, ext: 'jar' provided name: 'Railcraft', version: config.rc.version, ext: 'jar'
provided name: 'BloodMagic', version: config.bloodmagic.version, ext: 'jar' provided name: 'BloodMagic', version: config.bloodmagic.version, ext: 'jar'
provided name: 'ExtraCells', version: config.ec.version, ext: 'jar' */
provided name: 'ExtraCells', version: config.extracells.version, ext: 'jar'
/*
provided name: 'ThaumicEnergistics', version: config.thaumicenergistics.version, ext: 'jar' provided name: 'ThaumicEnergistics', version: config.thaumicenergistics.version, ext: 'jar'
provided "cyano.poweradvantage:PowerAdvantage-API:${config.poweradvantage.version}" provided "cyano.poweradvantage:PowerAdvantage-API:${config.poweradvantage.version}"
*/ */
@ -291,13 +299,13 @@ sourceSets {
exclude 'li/cil/oc/integration/cofh/**' exclude 'li/cil/oc/integration/cofh/**'
//exclude 'li/cil/oc/integration/computercraft/**' //exclude 'li/cil/oc/integration/computercraft/**'
exclude 'li/cil/oc/integration/dsu/**' exclude 'li/cil/oc/integration/dsu/**'
exclude 'li/cil/oc/integration/ec/**' //exclude 'li/cil/oc/integration/ec/**'
//exclude 'li/cil/oc/integration/enderio/**' //exclude 'li/cil/oc/integration/enderio/**'
//exclude 'li/cil/oc/integration/enderstorage/**' //exclude 'li/cil/oc/integration/enderstorage/**'
exclude 'li/cil/oc/integration/fmp/**' exclude 'li/cil/oc/integration/fmp/**'
exclude 'li/cil/oc/integration/gc/**' exclude 'li/cil/oc/integration/gc/**'
exclude 'li/cil/oc/integration/gregtech/**' exclude 'li/cil/oc/integration/gregtech/**'
exclude 'li/cil/oc/integration/mekanism/**' //exclude 'li/cil/oc/integration/mekanism/**'
exclude 'li/cil/oc/integration/mfr/**' exclude 'li/cil/oc/integration/mfr/**'
exclude 'li/cil/oc/integration/mystcraft/**' exclude 'li/cil/oc/integration/mystcraft/**'
exclude 'li/cil/oc/integration/nei/**' exclude 'li/cil/oc/integration/nei/**'

View File

@ -19,6 +19,8 @@ coloredlights.build=35
ec.version=1.10.2-0.4.1.58-beta ec.version=1.10.2-0.4.1.58-beta
eio.version=1.10.2-3.0.1.132_beta eio.version=1.10.2-3.0.1.132_beta
es.version=2.2.1.106 es.version=2.2.1.106
extracells.cf=2499/811
extracells.version=1.10.2-2.4.2a9
fmp.version=1.1.0.308 fmp.version=1.1.0.308
forestry.version=5.2.17.376 forestry.version=5.2.17.376
gc.build=3 gc.build=3
@ -28,8 +30,8 @@ ic2.version=2.6.69-ex110
igwmod.version=1.3.0-5 igwmod.version=1.3.0-5
jei.version=3.14.4.404 jei.version=3.14.4.404
mcmp.version=1.2.0_70 mcmp.version=1.2.0_70
mekanism.build=5 mekanism.cf=2475/800
mekanism.version=7.1.2 mekanism.version=1.10.2-9.2.4.103
mfr.cf=2229/626 mfr.cf=2229/626
mfr.version=[1.7.10]2.8.0RC8-86 mfr.version=[1.7.10]2.8.0RC8-86
nei.version=2.0.1.132 nei.version=2.0.1.132

View File

@ -40,7 +40,7 @@ object Mods {
val ElectricalAge = new SimpleMod(IDs.ElectricalAge) val ElectricalAge = new SimpleMod(IDs.ElectricalAge)
val EnderIO = new SimpleMod(IDs.EnderIO, version = "@[1.10.2-3.0.1.132,)") val EnderIO = new SimpleMod(IDs.EnderIO, version = "@[1.10.2-3.0.1.132,)")
val EnderStorage = new SimpleMod(IDs.EnderStorage) val EnderStorage = new SimpleMod(IDs.EnderStorage)
val ExtraCells = new SimpleMod(IDs.ExtraCells, version = "@[2.2.73,)") val ExtraCells = new SimpleMod(IDs.ExtraCells)
val Factorization = new SimpleMod(IDs.Factorization) val Factorization = new SimpleMod(IDs.Factorization)
val Forestry = new SimpleMod(IDs.Forestry, version = "@[5.2,)") val Forestry = new SimpleMod(IDs.Forestry, version = "@[5.2,)")
val Forge = new SimpleMod(IDs.Forge) val Forge = new SimpleMod(IDs.Forge)
@ -106,7 +106,7 @@ object Mods {
// integration.cofh.item.ModCoFHItem, // integration.cofh.item.ModCoFHItem,
// integration.cofh.tileentity.ModCoFHTileEntity, // integration.cofh.tileentity.ModCoFHTileEntity,
// integration.cofh.transport.ModCoFHTransport, // integration.cofh.transport.ModCoFHTransport,
// integration.ec.ModExtraCells, integration.ec.ModExtraCells,
integration.enderio.ModEnderIO, integration.enderio.ModEnderIO,
integration.enderstorage.ModEnderStorage, integration.enderstorage.ModEnderStorage,
// integration.dsu.ModDeepStorageUnit, // integration.dsu.ModDeepStorageUnit,
@ -116,8 +116,8 @@ object Mods {
// integration.gregtech.ModGregtech, // integration.gregtech.ModGregtech,
integration.ic2.ModIndustrialCraft2, integration.ic2.ModIndustrialCraft2,
integration.mcmp.ModMCMultiPart, integration.mcmp.ModMCMultiPart,
// integration.mekanism.ModMekanism, integration.mekanism.ModMekanism,
// integration.mekanism.gas.ModMekanismGas, integration.mekanism.gas.ModMekanismGas,
// integration.mfr.ModMineFactoryReloaded, // integration.mfr.ModMineFactoryReloaded,
integration.minecraftforge.ModMinecraftForge, integration.minecraftforge.ModMinecraftForge,
// integration.mystcraft.ModMystcraft, // integration.mystcraft.ModMystcraft,

View File

@ -15,6 +15,8 @@ import li.cil.oc.api.machine.Context
import li.cil.oc.api.network.Node import li.cil.oc.api.network.Node
import li.cil.oc.api.prefab.AbstractValue import li.cil.oc.api.prefab.AbstractValue
import li.cil.oc.common.EventHandler import li.cil.oc.common.EventHandler
import li.cil.oc.integration.Mods
import li.cil.oc.integration.ec.ECUtil
import li.cil.oc.util.DatabaseAccess import li.cil.oc.util.DatabaseAccess
import li.cil.oc.util.ExtendedArguments._ import li.cil.oc.util.ExtendedArguments._
import li.cil.oc.util.ExtendedNBT._ import li.cil.oc.util.ExtendedNBT._
@ -96,7 +98,7 @@ trait NetworkControl[AETile >: Null <: TileEntity with IActionHost] {
@Callback(doc = "function():table -- Get a list of the stored fluids in the network.") @Callback(doc = "function():table -- Get a list of the stored fluids in the network.")
def getFluidsInNetwork(context: Context, args: Arguments): Array[AnyRef] = def getFluidsInNetwork(context: Context, args: Arguments): Array[AnyRef] =
result(AEUtil.getGridStorage(tile.getGridNode(pos).getGrid).getFluidInventory.getStorageList.filter(stack => result(AEUtil.getGridStorage(tile.getGridNode(pos).getGrid).getFluidInventory.getStorageList.filter(stack =>
stack != null). stack != null && (!Mods.ExtraCells.isModAvailable || ECUtil.canSeeFluidInNetwork(stack))).
map(_.getFluidStack).toArray) map(_.getFluidStack).toArray)
@Callback(doc = "function():number -- Get the average power injection into the network.") @Callback(doc = "function():number -- Get the average power injection into the network.")

View File

@ -1,22 +1,29 @@
package li.cil.oc.integration.ec package li.cil.oc.integration.ec
import appeng.tile.misc.TileInterface
import appeng.api.implementations.tiles.ISegmentedInventory
import appeng.api.networking.security.IActionHost
import appeng.api.util.AEPartLocation
import li.cil.oc.api.driver.EnvironmentProvider import li.cil.oc.api.driver.EnvironmentProvider
import li.cil.oc.api.network.ManagedEnvironment import li.cil.oc.api.network.ManagedEnvironment
import li.cil.oc.api.prefab.DriverSidedTileEntity import li.cil.oc.api.prefab.DriverSidedTileEntity
import li.cil.oc.integration.ManagedTileEntityEnvironment import li.cil.oc.integration.ManagedTileEntityEnvironment
import li.cil.oc.integration.appeng.AEUtil import li.cil.oc.integration.appeng.AEUtil
import net.minecraft.item.ItemStack import net.minecraft.item.ItemStack
import net.minecraft.tileentity.TileEntity
import net.minecraft.util.EnumFacing import net.minecraft.util.EnumFacing
import net.minecraft.util.math.BlockPos
import net.minecraft.world.World import net.minecraft.world.World
object DriverBlockInterface extends DriverSidedTileEntity { object DriverBlockInterface extends DriverSidedTileEntity {
def getTileEntityClass: Class[_] = classOf[TileInterface] def getTileEntityClass: Class[_] = AEUtil.interfaceClass
def createEnvironment(world: World, x: Int, y: Int, z: Int, side: EnumFacing): ManagedEnvironment = def createEnvironment(world: World, pos: BlockPos, side: EnumFacing): ManagedEnvironment =
new Environment(world.getTileEntity(x, y, z).asInstanceOf[TileInterface]) new Environment(world.getTileEntity(pos).asInstanceOf[TileEntity with ISegmentedInventory with IActionHost])
final class Environment(val tile: TileInterface) extends ManagedTileEntityEnvironment[TileInterface](tile, "me_interface") with NetworkControl[TileInterface] final class Environment(val tile: TileEntity with ISegmentedInventory with IActionHost) extends ManagedTileEntityEnvironment[TileEntity with ISegmentedInventory with IActionHost](tile, "me_interface") with NetworkControl[TileEntity with ISegmentedInventory with IActionHost]{
override def pos: AEPartLocation = AEPartLocation.INTERNAL
}
object Provider extends EnvironmentProvider { object Provider extends EnvironmentProvider {
override def getEnvironment(stack: ItemStack): Class[_] = override def getEnvironment(stack: ItemStack): Class[_] =

View File

@ -1,7 +1,7 @@
package li.cil.oc.integration.ec package li.cil.oc.integration.ec
import appeng.api.networking.security.IActionHost import appeng.api.networking.security.IActionHost
import appeng.me.helpers.IGridProxyable import appeng.api.util.AEPartLocation
import li.cil.oc.api.driver.EnvironmentProvider import li.cil.oc.api.driver.EnvironmentProvider
import li.cil.oc.api.network.ManagedEnvironment import li.cil.oc.api.network.ManagedEnvironment
import li.cil.oc.api.prefab.DriverSidedTileEntity import li.cil.oc.api.prefab.DriverSidedTileEntity
@ -10,19 +10,22 @@ import li.cil.oc.integration.appeng.AEUtil
import net.minecraft.item.ItemStack import net.minecraft.item.ItemStack
import net.minecraft.tileentity.TileEntity import net.minecraft.tileentity.TileEntity
import net.minecraft.util.EnumFacing import net.minecraft.util.EnumFacing
import net.minecraft.util.math.BlockPos
import net.minecraft.world.World import net.minecraft.world.World
import scala.language.existentials import scala.language.existentials
object DriverController extends DriverSidedTileEntity { object DriverController extends DriverSidedTileEntity {
private type TileController = TileEntity with IGridProxyable with IActionHost private type TileController = TileEntity with IActionHost
def getTileEntityClass = AEUtil.controllerClass def getTileEntityClass = AEUtil.controllerClass
def createEnvironment(world: World, x: Int, y: Int, z: Int, side: EnumFacing): ManagedEnvironment = def createEnvironment(world: World, pos: BlockPos, side: EnumFacing): ManagedEnvironment =
new Environment(world.getTileEntity(x, y, z).asInstanceOf[TileController]) new Environment(world.getTileEntity(pos).asInstanceOf[TileController])
final class Environment(val tile: TileController) extends ManagedTileEntityEnvironment[TileController](tile, "me_controller") with NetworkControl[TileController] final class Environment(val tile: TileController) extends ManagedTileEntityEnvironment[TileController](tile, "me_controller") with NetworkControl[TileController]{
override def pos: AEPartLocation = AEPartLocation.INTERNAL
}
object Provider extends EnvironmentProvider { object Provider extends EnvironmentProvider {
override def getEnvironment(stack: ItemStack): Class[_] = override def getEnvironment(stack: ItemStack): Class[_] =

View File

@ -1,23 +1,25 @@
package li.cil.oc.integration.ec package li.cil.oc.integration.ec
import appeng.api.networking.security.IActionHost import appeng.api.networking.security.IActionHost
import appeng.me.helpers.IGridProxyable import appeng.api.util.AEPartLocation
import extracells.api.ECApi import extracells.api.ECApi
import li.cil.oc.api.machine.Arguments import li.cil.oc.api.machine.Arguments
import li.cil.oc.api.machine.Callback import li.cil.oc.api.machine.Callback
import li.cil.oc.api.machine.Context import li.cil.oc.api.machine.Context
import li.cil.oc.integration.appeng.AEUtil
import li.cil.oc.util.ResultWrapper._ import li.cil.oc.util.ResultWrapper._
import net.minecraft.tileentity.TileEntity import net.minecraft.tileentity.TileEntity
import scala.collection.convert.WrapAsScala._ import scala.collection.convert.WrapAsScala._
// Note to self: this class is used by ExtraCells (and potentially others), do not rename / drastically change it. // Note to self: this class is used by ExtraCells (and potentially others), do not rename / drastically change it.
trait NetworkControl[AETile >: Null <: TileEntity with IGridProxyable with IActionHost] { trait NetworkControl[AETile >: Null <: TileEntity with IActionHost] {
def tile: AETile def tile: AETile
def pos: AEPartLocation
@Callback(doc = "function():table -- Get a list of the stored gases in the network.") @Callback(doc = "function():table -- Get a list of the stored gases in the network.")
def getGasesInNetwork(context: Context, args: Arguments): Array[AnyRef] = def getGasesInNetwork(context: Context, args: Arguments): Array[AnyRef] =
result(tile.getProxy.getStorage.getFluidInventory.getStorageList.filter(stack => result(AEUtil.getGridStorage(tile.getGridNode(pos).getGrid).getFluidInventory.getStorageList.filter(stack =>
ECApi.instance.isGasStack(stack)). ECApi.instance.isGasStack(stack)).
map(ECApi.instance.createGasStack).toArray) map(ECApi.instance.createGasStack).toArray)
} }

View File

@ -3,11 +3,13 @@ package li.cil.oc.integration.mekanism
import mekanism.api.IMekWrench import mekanism.api.IMekWrench
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack import net.minecraft.item.ItemStack
import net.minecraft.util.EnumHand
import net.minecraft.util.math.BlockPos
object EventHandlerMekanism { object EventHandlerMekanism {
def useWrench(player: EntityPlayer, x: Int, y: Int, z: Int, changeDurability: Boolean): Boolean = { def useWrench(player: EntityPlayer, pos: BlockPos, changeDurability: Boolean): Boolean = {
player.getHeldItem.getItem match { player.getHeldItem(EnumHand.MAIN_HAND).getItem match {
case wrench: IMekWrench => wrench.canUseWrench(player, x, y, z) case wrench: IMekWrench => wrench.canUseWrench(player.getHeldItem(EnumHand.MAIN_HAND), player, pos)
case _ => false case _ => false
} }
} }