Add ThaumicEnergistics support

This commit is contained in:
DrummerMC 2016-02-14 00:07:40 +01:00
parent 54de3fe89d
commit 590ecebc33
8 changed files with 124 additions and 0 deletions

View File

@ -167,6 +167,10 @@ repositories {
name 'ExtraCells'
artifactPattern "http://addons-origin.cursecdn.com/files/${config.ec.cf}/[module]-[revision].[ext]"
}
ivy {
name 'ThaumicEnergistics'
artifactPattern "http://addons-origin.cursecdn.com/files/${config.thaumicenergistics.cf}/[module]-[revision].[ext]"
}
}
configurations {
@ -213,6 +217,7 @@ dependencies {
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: 'ThaumicEnergistics', version: config.thaumicenergistics.version, ext: 'jar'
compile 'com.google.code.findbugs:jsr305:1.3.9' // Annotations used by google libs.

View File

@ -40,6 +40,8 @@ rc.cf=2219/321
rc.version=1.7.10-9.4.0.0
redlogic.version=59.0.3
rotc.version=V5c
thaumicenergistics.cf=2277/520
thaumicenergistics.version=1.0.0.1-RV2
tis3d.version=MC1.7.10-0.7.1.53
tmech.version=75.0afb56c
re.version=3.0.0.342

View File

@ -76,6 +76,7 @@ object Mods {
override def isModAvailable: Boolean = isModAvailable_
}
val Thaumcraft = new SimpleMod(IDs.Thaumcraft)
val ThaumicEnergistics = new SimpleMod(IDs.ThaumicEnergistics)
val ThermalExpansion = new SimpleMod(IDs.ThermalExpansion, providesPower = true)
val TinkersConstruct = new SimpleMod(IDs.TinkersConstruct)
val TIS3D = new SimpleMod(IDs.TIS3D, version = "@[0.7,)")
@ -122,6 +123,7 @@ object Mods {
integration.rotarycraft.ModRotaryCraft,
integration.stargatetech2.ModStargateTech2,
integration.thaumcraft.ModThaumcraft,
integration.thaumicenergistics.ModThaumicEnergistics,
integration.thermalexpansion.ModThermalExpansion,
integration.tcon.ModTinkersConstruct,
integration.tis3d.ModTIS3D,
@ -214,6 +216,7 @@ object Mods {
final val RotaryCraft = "RotaryCraft"
final val StargateTech2 = "StargateTech2"
final val Thaumcraft = "Thaumcraft"
final val ThaumicEnergistics = "thaumicenergistics"
final val ThermalExpansion = "ThermalExpansion"
final val TinkersConstruct = "TConstruct"
final val TIS3D = "tis3d"

View File

@ -0,0 +1,27 @@
package li.cil.oc.integration.thaumicenergistics
import appeng.tile.misc.TileInterface
import li.cil.oc.api.driver.EnvironmentProvider
import li.cil.oc.api.network.ManagedEnvironment
import li.cil.oc.api.prefab.DriverTileEntity
import li.cil.oc.integration.ManagedTileEntityEnvironment
import li.cil.oc.integration.appeng.AEUtil
import net.minecraft.item.ItemStack
import net.minecraft.world.World
object DriverBlockInterface extends DriverTileEntity {
def getTileEntityClass: Class[_] = classOf[TileInterface]
def createEnvironment(world: World, x: Int, y: Int, z: Int): ManagedEnvironment =
new Environment(world.getTileEntity(x, y, z).asInstanceOf[TileInterface])
final class Environment(val tile: TileInterface) extends ManagedTileEntityEnvironment[TileInterface](tile, "me_interface") with NetworkControl[TileInterface]
object Provider extends EnvironmentProvider {
override def getEnvironment(stack: ItemStack): Class[_] =
if (AEUtil.isBlockInterface(stack))
classOf[Environment]
else null
}
}

View File

@ -0,0 +1,33 @@
package li.cil.oc.integration.thaumicenergistics
import appeng.api.networking.security.IActionHost
import appeng.me.helpers.IGridProxyable
import li.cil.oc.api.driver.EnvironmentProvider
import li.cil.oc.api.network.ManagedEnvironment
import li.cil.oc.api.prefab.DriverTileEntity
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.world.World
import scala.language.existentials
object DriverController extends DriverTileEntity {
private type TileController = TileEntity with IGridProxyable with IActionHost
def getTileEntityClass = AEUtil.controllerClass
def createEnvironment(world: World, x: Int, y: Int, z: Int): ManagedEnvironment =
new Environment(world.getTileEntity(x, y, z).asInstanceOf[TileController])
final class Environment(val tile: TileController) extends ManagedTileEntityEnvironment[TileController](tile, "me_controller") with NetworkControl[TileController]
object Provider extends EnvironmentProvider {
override def getEnvironment(stack: ItemStack): Class[_] =
if (AEUtil.isController(stack))
classOf[Environment]
else null
}
}

View File

@ -0,0 +1,18 @@
package li.cil.oc.integration.thaumicenergistics
import li.cil.oc.api.Driver
import li.cil.oc.integration.Mod
import li.cil.oc.integration.ModProxy
import li.cil.oc.integration.Mods
object ModThaumicEnergistics extends ModProxy {
override def getMod: Mod = Mods.ThaumicEnergistics
override def initialize(): Unit = {
Driver.add(DriverController)
Driver.add(DriverBlockInterface)
Driver.add(DriverController.Provider)
Driver.add(DriverBlockInterface.Provider)
}
}

View File

@ -0,0 +1,24 @@
package li.cil.oc.integration.thaumicenergistics
import appeng.api.networking.security.IActionHost
import appeng.me.helpers.IGridProxyable
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.util.ResultWrapper._
import net.minecraft.tileentity.TileEntity
import thaumicenergistics.api.IThEEssentiaGas
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] {
def tile: AETile
@Callback(doc = "function():table -- Get a list of the stored essentia in the network.")
def getEssentiaInNetwork(context: Context, args: Arguments): Array[AnyRef] =
result(tile.getProxy.getStorage.getFluidInventory.getStorageList.filter(stack =>
stack.getFluid != null && stack.getFluid.isInstanceOf[IThEEssentiaGas]).
map(ThaumicEnergisticsUtils.getAspect).toArray)
}

View File

@ -0,0 +1,12 @@
package li.cil.oc.integration.thaumicenergistics
import appeng.api.storage.data.IAEFluidStack
object ThaumicEnergisticsUtils {
def getAspect(fluid: IAEFluidStack) ={
val aspect = fluid.getFluidStack.copy()
aspect.amount = (fluid.getStackSize / 128).toInt
aspect
}
}