blob: 46ae51b1f4ece33760f31eb1d44105d11e5cb97e [file] [log] [blame] [raw]
package li.cil.oc.server.component
import li.cil.oc.api
import li.cil.oc.api.network.{LuaCallback, Context, Arguments, Visibility}
import net.minecraftforge.common.ForgeDirection
class RedstoneCard extends ManagedComponent {
val node = api.Network.createComponent(api.Network.createNode(this, "redstone", Visibility.Neighbors))
@LuaCallback(value = "getInput", asynchronous = true)
def getInput(context: Context, args: Arguments): Array[Object] = {
val side = args.checkInteger(0)
node.network.node(context.address).host match {
case redstone: Redstone =>
result(redstone.input(ForgeDirection.getOrientation(side)))
case _ => result(false)
}
}
@LuaCallback(value = "getOutput", asynchronous = true)
def getOutput(context: Context, args: Arguments): Array[Object] = {
val side = args.checkInteger(0)
node.network.node(context.address).host match {
case redstone: Redstone =>
result(redstone.output(ForgeDirection.getOrientation(side)))
case _ => result(false)
}
}
@LuaCallback("setOutput")
def setOutput(context: Context, args: Arguments): Array[Object] = {
val side = args.checkInteger(0)
val value = args.checkInteger(1)
node.network.node(context.address).host match {
case redstone: Redstone =>
redstone.output(ForgeDirection.getOrientation(side), value)
result(redstone.output(ForgeDirection.getOrientation(side)))
case _ => result(false)
}
}
}