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'
artifactPattern "http://ci.cil.li/job/Galacticraft/${config.gc.build}/artifact/build/libs/[module]-1.7-[revision].${config.gc.build}.[ext]"
}
*/
ivy {
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 {
name 'immibis'
artifactPattern "https://dl.dropboxusercontent.com/u/2944265/mods/autobuilt/files/[module]-[revision].[ext]"
@ -169,10 +171,12 @@ repositories {
name 'BloodMagic'
artifactPattern "http://addons-origin.cursecdn.com/files/${config.bloodmagic.cf}/[module]-${config.minecraft.version}-[revision].[ext]"
}
*/
ivy {
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 {
name 'ThaumicEnergistics'
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: '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: 'CoFHLib', version: config.cofhlib.version, ext: 'jar'
@ -258,7 +264,9 @@ dependencies {
provided name: 'MineFactoryReloaded', version: config.mfr.version, ext: 'jar'
provided name: 'Railcraft', version: config.rc.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 "cyano.poweradvantage:PowerAdvantage-API:${config.poweradvantage.version}"
*/
@ -291,13 +299,13 @@ sourceSets {
exclude 'li/cil/oc/integration/cofh/**'
//exclude 'li/cil/oc/integration/computercraft/**'
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/enderstorage/**'
exclude 'li/cil/oc/integration/fmp/**'
exclude 'li/cil/oc/integration/gc/**'
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/mystcraft/**'
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
eio.version=1.10.2-3.0.1.132_beta
es.version=2.2.1.106
extracells.cf=2499/811
extracells.version=1.10.2-2.4.2a9
fmp.version=1.1.0.308
forestry.version=5.2.17.376
gc.build=3
@ -28,8 +30,8 @@ ic2.version=2.6.69-ex110
igwmod.version=1.3.0-5
jei.version=3.14.4.404
mcmp.version=1.2.0_70
mekanism.build=5
mekanism.version=7.1.2
mekanism.cf=2475/800
mekanism.version=1.10.2-9.2.4.103
mfr.cf=2229/626
mfr.version=[1.7.10]2.8.0RC8-86
nei.version=2.0.1.132

View File

@ -40,7 +40,7 @@ object Mods {
val ElectricalAge = new SimpleMod(IDs.ElectricalAge)
val EnderIO = new SimpleMod(IDs.EnderIO, version = "@[1.10.2-3.0.1.132,)")
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 Forestry = new SimpleMod(IDs.Forestry, version = "@[5.2,)")
val Forge = new SimpleMod(IDs.Forge)
@ -106,7 +106,7 @@ object Mods {
// integration.cofh.item.ModCoFHItem,
// integration.cofh.tileentity.ModCoFHTileEntity,
// integration.cofh.transport.ModCoFHTransport,
// integration.ec.ModExtraCells,
integration.ec.ModExtraCells,
integration.enderio.ModEnderIO,
integration.enderstorage.ModEnderStorage,
// integration.dsu.ModDeepStorageUnit,
@ -116,8 +116,8 @@ object Mods {
// integration.gregtech.ModGregtech,
integration.ic2.ModIndustrialCraft2,
integration.mcmp.ModMCMultiPart,
// integration.mekanism.ModMekanism,
// integration.mekanism.gas.ModMekanismGas,
integration.mekanism.ModMekanism,
integration.mekanism.gas.ModMekanismGas,
// integration.mfr.ModMineFactoryReloaded,
integration.minecraftforge.ModMinecraftForge,
// 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.prefab.AbstractValue
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.ExtendedArguments._
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.")
def getFluidsInNetwork(context: Context, args: Arguments): Array[AnyRef] =
result(AEUtil.getGridStorage(tile.getGridNode(pos).getGrid).getFluidInventory.getStorageList.filter(stack =>
stack != null).
stack != null && (!Mods.ExtraCells.isModAvailable || ECUtil.canSeeFluidInNetwork(stack))).
map(_.getFluidStack).toArray)
@Callback(doc = "function():number -- Get the average power injection into the network.")

View File

@ -1,22 +1,29 @@
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.network.ManagedEnvironment
import li.cil.oc.api.prefab.DriverSidedTileEntity
import li.cil.oc.integration.ManagedTileEntityEnvironment
import li.cil.oc.integration.appeng.AEUtil
import net.minecraft.item.ItemStack
import net.minecraft.tileentity.TileEntity
import net.minecraft.util.EnumFacing
import net.minecraft.util.math.BlockPos
import net.minecraft.world.World
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 =
new Environment(world.getTileEntity(x, y, z).asInstanceOf[TileInterface])
def createEnvironment(world: World, pos: BlockPos, side: EnumFacing): ManagedEnvironment =
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 {
override def getEnvironment(stack: ItemStack): Class[_] =

View File

@ -1,7 +1,7 @@
package li.cil.oc.integration.ec
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.network.ManagedEnvironment
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.tileentity.TileEntity
import net.minecraft.util.EnumFacing
import net.minecraft.util.math.BlockPos
import net.minecraft.world.World
import scala.language.existentials
object DriverController extends DriverSidedTileEntity {
private type TileController = TileEntity with IGridProxyable with IActionHost
private type TileController = TileEntity with IActionHost
def getTileEntityClass = AEUtil.controllerClass
def createEnvironment(world: World, x: Int, y: Int, z: Int, side: EnumFacing): ManagedEnvironment =
new Environment(world.getTileEntity(x, y, z).asInstanceOf[TileController])
def createEnvironment(world: World, pos: BlockPos, side: EnumFacing): ManagedEnvironment =
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 {
override def getEnvironment(stack: ItemStack): Class[_] =

View File

@ -1,23 +1,25 @@
package li.cil.oc.integration.ec
import appeng.api.networking.security.IActionHost
import appeng.me.helpers.IGridProxyable
import appeng.api.util.AEPartLocation
import extracells.api.ECApi
import li.cil.oc.api.machine.Arguments
import li.cil.oc.api.machine.Callback
import li.cil.oc.api.machine.Context
import li.cil.oc.integration.appeng.AEUtil
import li.cil.oc.util.ResultWrapper._
import net.minecraft.tileentity.TileEntity
import scala.collection.convert.WrapAsScala._
// 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 pos: AEPartLocation
@Callback(doc = "function():table -- Get a list of the stored gases in the network.")
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)).
map(ECApi.instance.createGasStack).toArray)
}

View File

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