Skip to content

Commit

Permalink
port Ender IO, Railcraft drivers
Browse files Browse the repository at this point in the history
  • Loading branch information
asiekierka committed Jun 4, 2023
1 parent 71a9abd commit 362411c
Show file tree
Hide file tree
Showing 7 changed files with 142 additions and 0 deletions.
2 changes: 2 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,8 @@ dependencies {
compileOnly fg.deobf("org.squiddev:cc-tweaked-1.12.2:${config.cctweaked.version}")
compileOnly fg.deobf("charset:Charset:${config.charset.version}:api")
compileOnly fg.deobf("curse.maven:cofh-core-69162:2920433") /* CoFHCore */
compileOnly fg.deobf("curse.maven:ender-io-64578:3328811") /* Ender IO */
compileOnly fg.deobf("curse.maven:railcraft-51195:2687757") /* Railcraft */

provided fg.deobf("appeng:appliedenergistics2:${config.ae2.version}") {
transitive = false
Expand Down
6 changes: 6 additions & 0 deletions src/main/scala/li/cil/oc/integration/Mods.scala
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ object Mods {
val AppliedEnergistics2 = new ClassBasedMod(IDs.AppliedEnergistics2, "appeng.api.storage.channels.IItemStorageChannel")
val CoFHCore = new SimpleMod(IDs.CoFHCore)
val ComputerCraft = new SimpleMod(IDs.ComputerCraft)
val EnderIO = new SimpleMod(IDs.EnderIO)
val ExtraCells = new SimpleMod(IDs.ExtraCells, version = "@[2.5.2,)")
val Forestry = new SimpleMod(IDs.Forestry, version = "@[5.2,)")
val IndustrialCraft2 = new SimpleMod(IDs.IndustrialCraft2)
Expand All @@ -30,6 +31,7 @@ object Mods {
val MekanismGas = new SimpleMod(IDs.MekanismGas)
val Minecraft = new SimpleMod(IDs.Minecraft)
val OpenComputers = new SimpleMod(IDs.OpenComputers)
val Railcraft = new SimpleMod(IDs.Railcraft)
val TIS3D = new SimpleMod(IDs.TIS3D, version = "@[0.9,)")
val Waila = new SimpleMod(IDs.Waila)
val ProjectRedBase = new SimpleMod((IDs.ProjectRedCore))
Expand All @@ -47,9 +49,11 @@ object Mods {
integration.cofh.item.ModCoFHItem,
integration.cofh.tileentity.ModCoFHTileEntity,
integration.ec.ModExtraCells,
integration.enderio.ModEnderIO,
integration.forestry.ModForestry,
integration.ic2.ModIndustrialCraft2,
integration.minecraftforge.ModMinecraftForge,
integration.railcraft.ModRailcraft,
integration.tis3d.ModTIS3D,
integration.mekanism.ModMekanism,
integration.mekanism.gas.ModMekanismGas,
Expand Down Expand Up @@ -91,6 +95,7 @@ object Mods {
final val AppliedEnergistics2 = "appliedenergistics2"
final val CoFHCore = "cofhcore"
final val ComputerCraft = "computercraft"
final val EnderIO = "enderio"
final val ExtraCells = "extracells"
final val Forestry = "forestry"
final val Forge = "forge"
Expand All @@ -100,6 +105,7 @@ object Mods {
final val MekanismGas = "MekanismAPI|gas"
final val Minecraft = "minecraft"
final val OpenComputers = "opencomputers"
final val Railcraft = "railcraft"
final val TIS3D = "tis3d"
final val Waila = "waila"
final val ProjectRedCore = "projectred-core"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package li.cil.oc.integration.enderio

import crazypants.enderio.api.tool.ITool
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.EnumHand
import net.minecraft.util.math.BlockPos

object EventHandlerEnderIO {
def useWrench(player: EntityPlayer, pos: BlockPos, changeDurability: Boolean): Boolean = {
player.getHeldItemMainhand.getItem match {
case wrench: ITool =>
if (changeDurability) {
wrench.used(EnumHand.MAIN_HAND, player, pos)
true
}
else wrench.canUse(EnumHand.MAIN_HAND, player, pos)
case _ => false
}
}

def isWrench(stack: ItemStack): Boolean = stack.getItem.isInstanceOf[ITool]
}
14 changes: 14 additions & 0 deletions src/main/scala/li/cil/oc/integration/enderio/ModEnderIO.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package li.cil.oc.integration.enderio

import li.cil.oc.api
import li.cil.oc.integration.ModProxy
import li.cil.oc.integration.Mods

object ModEnderIO extends ModProxy {
override def getMod = Mods.EnderIO

override def initialize(): Unit = {
api.IMC.registerWrenchTool("li.cil.oc.integration.enderio.EventHandlerEnderIO.useWrench")
api.IMC.registerWrenchToolCheck("li.cil.oc.integration.enderio.EventHandlerEnderIO.isWrench")
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package li.cil.oc.integration.railcraft


import li.cil.oc.api.driver.NamedBlock
import li.cil.oc.api.machine.{Arguments, Callback, Context}
import li.cil.oc.api.network.ManagedEnvironment
import li.cil.oc.api.prefab.DriverSidedTileEntity
import li.cil.oc.integration.ManagedTileEntityEnvironment
import li.cil.oc.util.ResultWrapper.result
import mods.railcraft.common.blocks.machine.worldspike.{TileWorldspike, WorldspikeVariant}
import net.minecraft.util.EnumFacing
import net.minecraft.util.math.BlockPos
import net.minecraft.world.World

import java.util.Objects

object DriverWorldspike extends DriverSidedTileEntity {
def getTileEntityClass: Class[_] = classOf[TileWorldspike]

def createEnvironment(world: World, pos: BlockPos, side: EnumFacing): ManagedEnvironment =
new Environment(world.getTileEntity(pos).asInstanceOf[TileWorldspike])

final class Environment(val tile: TileWorldspike) extends ManagedTileEntityEnvironment[TileWorldspike](tile, "worldspike") with NamedBlock {
override def preferredName = "worldspike"
override def priority = 5

@Callback(doc = "function():int -- Get the amount of fuel.")
def getFuel(context: Context, args: Arguments): Array[AnyRef] = result(tile.getFuelAmount)

@Callback(doc = "function():string -- Get the anchor owner name.")
def getOwner(context: Context, args: Arguments): Array[AnyRef] =
if (tile.getOwner == null || tile.getOwner.getName == null || Objects.equals(tile.getOwner.getName, "[unknown]"))
result()
else
result(tile.getOwner.getName)

@Callback(doc = "function():string -- Get the anchor type.")
def getType(context: Context, args: Arguments): Array[AnyRef] = tile.getMachineType match {
case WorldspikeVariant.STANDARD => result("world")
case WorldspikeVariant.ADMIN => result("admin")
case WorldspikeVariant.PERSONAL => result("personal")
case WorldspikeVariant.PASSIVE => result("passive")
case _ => result("missing")
}

@Callback(doc = "function():table -- Get the anchor fuel slot's contents.")
def getFuelSlotContents(context: Context, args: Arguments): Array[AnyRef] = {
if (tile.needsFuel())
result(tile.getStackInSlot(0))
else
result()
}

@Callback(doc = "function():boolean -- If the anchor is disabled (powered by redstone).")
def isDisabled(context: Context, args: Arguments): Array[AnyRef] = result(tile.isPowered)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package li.cil.oc.integration.railcraft

import mods.railcraft.api.items.IToolCrowbar
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.EnumHand
import net.minecraft.util.math.BlockPos

object EventHandlerRailcraft {
def useWrench(player: EntityPlayer, pos: BlockPos, changeDurability: Boolean): Boolean = {
player.getHeldItemMainhand.getItem match {
case wrench: IToolCrowbar =>
if (changeDurability) {
wrench.onWhack(player, EnumHand.MAIN_HAND, player.getHeldItemMainhand, pos)
true
}
else wrench.canWhack(player, EnumHand.MAIN_HAND, player.getHeldItemMainhand, pos)
case _ => false
}
}

def isWrench(stack: ItemStack): Boolean = stack.getItem.isInstanceOf[IToolCrowbar]
}
17 changes: 17 additions & 0 deletions src/main/scala/li/cil/oc/integration/railcraft/ModRailcraft.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package li.cil.oc.integration.railcraft

import li.cil.oc.api
import li.cil.oc.api.Driver
import li.cil.oc.integration.ModProxy
import li.cil.oc.integration.Mods

object ModRailcraft extends ModProxy {
override def getMod = Mods.Railcraft

override def initialize() {
api.IMC.registerWrenchTool("li.cil.oc.integration.railcraft.EventHandlerRailcraft.useWrench")
api.IMC.registerWrenchToolCheck("li.cil.oc.integration.railcraft.EventHandlerRailcraft.isWrench")

Driver.add(DriverWorldspike)
}
}

0 comments on commit 362411c

Please sign in to comment.