blob: f97193757fd831601a4c89abfc95c9f4093c6b40 [file] [log] [blame] [raw]
package li.cil.oc.integration.bluepower
import com.bluepowermod.api.BPApi
import com.bluepowermod.api.connect.ConnectionType
import com.bluepowermod.api.connect.IConnectionCache
import com.bluepowermod.api.wire.redstone.IRedstoneDevice
import li.cil.oc.common.tileentity.traits.RedstoneAware
import net.minecraft.world.World
import net.minecraftforge.common.util.ForgeDirection
class RedstoneDevice(val tileEntity: RedstoneAware) extends IRedstoneDevice {
lazy val cache = BPApi.getInstance.getRedstoneApi.createRedstoneConnectionCache(this)
override def getX: Int = tileEntity.x
override def getY: Int = tileEntity.y
override def getZ: Int = tileEntity.z
override def getWorld: World = tileEntity.world
override def canConnect(side: ForgeDirection, dev: IRedstoneDevice, connectionType: ConnectionType): Boolean = tileEntity.isOutputEnabled
override def isNormalFace(side: ForgeDirection): Boolean = true
override def getRedstoneConnectionCache: IConnectionCache[_ <: IRedstoneDevice] = cache
override def getRedstonePower(side: ForgeDirection): Byte = tileEntity.output(side).toByte
override def setRedstonePower(side: ForgeDirection, power: Byte): Unit = tileEntity.input(side, power & 0xFF)
override def onRedstoneUpdate(): Unit = tileEntity.checkRedstoneInputChanged()
}