mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-28 07:25:35 -04:00
Added conduit connection mode, extraction redstone mode and color support
Merged 2 `setItemConduit(Input|Output)Color` functions Added redstone conduit support Automatically upcase input enum values to avoid confusion
This commit is contained in:
parent
30aa902620
commit
740334eea3
@ -3,10 +3,12 @@ package li.cil.oc.server.component
|
|||||||
import java.util
|
import java.util
|
||||||
|
|
||||||
import com.enderio.core.common.util.DyeColor
|
import com.enderio.core.common.util.DyeColor
|
||||||
import crazypants.enderio.conduit.IConduitBundle
|
import crazypants.enderio.conduit.{ConnectionMode, IConduitBundle}
|
||||||
import crazypants.enderio.conduit.item.IItemConduit
|
import crazypants.enderio.conduit.item.IItemConduit
|
||||||
import crazypants.enderio.conduit.item.filter.{IItemFilter, ItemFilter}
|
import crazypants.enderio.conduit.item.filter.{IItemFilter, ItemFilter}
|
||||||
import crazypants.enderio.conduit.liquid.{AbstractEnderLiquidConduit, AbstractTankConduit, FluidFilter, ILiquidConduit}
|
import crazypants.enderio.conduit.liquid.{AbstractEnderLiquidConduit, AbstractTankConduit, FluidFilter, ILiquidConduit}
|
||||||
|
import crazypants.enderio.conduit.redstone.{IInsulatedRedstoneConduit, IRedstoneConduit}
|
||||||
|
import crazypants.enderio.machine.RedstoneControlMode
|
||||||
import li.cil.oc.Constants
|
import li.cil.oc.Constants
|
||||||
import li.cil.oc.api.driver.DeviceInfo
|
import li.cil.oc.api.driver.DeviceInfo
|
||||||
import li.cil.oc.api.driver.DeviceInfo.{DeviceAttribute, DeviceClass}
|
import li.cil.oc.api.driver.DeviceInfo.{DeviceAttribute, DeviceClass}
|
||||||
@ -97,7 +99,20 @@ object UpgradeConfigurator {
|
|||||||
conduitAt(position.offset(side)) match {
|
conduitAt(position.offset(side)) match {
|
||||||
case Some(conduit) if conduit.hasType(classOf[AbstractEnderLiquidConduit])
|
case Some(conduit) if conduit.hasType(classOf[AbstractEnderLiquidConduit])
|
||||||
=> f(conduit.getConduit(classOf[AbstractEnderLiquidConduit]))
|
=> f(conduit.getConduit(classOf[AbstractEnderLiquidConduit]))
|
||||||
case _ => result(Unit, "no item conduit here")
|
case _ => result(Unit, "no ender conduit here")
|
||||||
|
}
|
||||||
|
|
||||||
|
def withFluidConduit(side: ForgeDirection, f: ILiquidConduit => Array[AnyRef]): Array[AnyRef] =
|
||||||
|
conduitAt(position.offset(side)) match {
|
||||||
|
case Some(conduit) if conduit.hasType(classOf[ILiquidConduit])
|
||||||
|
=> f(conduit.getConduit(classOf[ILiquidConduit]))
|
||||||
|
case _ => result(Unit, "no liquid conduit here")
|
||||||
|
}
|
||||||
|
def withInsulatedRedstoneConduit(side: ForgeDirection, f: IInsulatedRedstoneConduit => Array[AnyRef]): Array[AnyRef] =
|
||||||
|
conduitAt(position.offset(side)) match {
|
||||||
|
case Some(conduit) if conduit.hasType(classOf[IInsulatedRedstoneConduit])
|
||||||
|
=> f(conduit.getConduit(classOf[IInsulatedRedstoneConduit]))
|
||||||
|
case _ => result(Unit, "no liquid conduit here")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,6 +130,8 @@ object UpgradeConfigurator {
|
|||||||
info += "ItemConduit" -> convert(dir, conduit.getConduit(classOf[IItemConduit]))
|
info += "ItemConduit" -> convert(dir, conduit.getConduit(classOf[IItemConduit]))
|
||||||
if (conduit.hasType(classOf[ILiquidConduit]))
|
if (conduit.hasType(classOf[ILiquidConduit]))
|
||||||
info += "LiquidConduit" -> convert(dir, conduit.getConduit(classOf[ILiquidConduit]))
|
info += "LiquidConduit" -> convert(dir, conduit.getConduit(classOf[ILiquidConduit]))
|
||||||
|
if (conduit.hasType(classOf[IRedstoneConduit]))
|
||||||
|
info += "RedstoneConduit" -> convert(dir, conduit.getConduit(classOf[IRedstoneConduit]))
|
||||||
result(info)
|
result(info)
|
||||||
|
|
||||||
case _ => result(null, "No conduit here")
|
case _ => result(null, "No conduit here")
|
||||||
@ -124,25 +141,14 @@ object UpgradeConfigurator {
|
|||||||
result(null, "EnderIO not loaded")
|
result(null, "EnderIO not loaded")
|
||||||
|
|
||||||
//noinspection ScalaUnusedSymbol
|
//noinspection ScalaUnusedSymbol
|
||||||
@Callback(doc = """function(side:number, direction: number, color: string):boolean -- Set conduit input color at side facing direction""")
|
@Callback(doc = """function(side:number, direction: number, isInput:boolean, color: string):boolean -- Set conduit input/output color at side facing direction""")
|
||||||
def setItemConduitInputColor(context: Context, args: Arguments): Array[AnyRef] = if (Mods.EnderIO.isModAvailable) {
|
def setItemConduitColor(context: Context, args: Arguments): Array[AnyRef] = if (Mods.EnderIO.isModAvailable) {
|
||||||
val facing = checkSideForAction(args, 0)
|
val facing = checkSideForAction(args, 0)
|
||||||
val dir = args.checkSideAny(1)
|
val dir = args.checkSideAny(1)
|
||||||
withItemConduit(facing, c =>{
|
withItemConduit(facing, c =>{
|
||||||
c.setInputColor(dir, DyeColor.valueOf(args.checkString(2)))
|
val color = DyeColor.valueOf(args.checkString(3).toUpperCase)
|
||||||
result(true)
|
val isInput = args.checkBoolean(2)
|
||||||
})
|
if (isInput) c.setInputColor(dir, color) else c.setOutputColor(dir, color)
|
||||||
}
|
|
||||||
else
|
|
||||||
result(false, "EnderIO not loaded")
|
|
||||||
|
|
||||||
//noinspection ScalaUnusedSymbol
|
|
||||||
@Callback(doc = """function(side:number, direction: number, color: string):boolean -- Set conduit output color at side facing direction""")
|
|
||||||
def setItemConduitOutputColor(context: Context, args: Arguments): Array[AnyRef] = if (Mods.EnderIO.isModAvailable) {
|
|
||||||
val facing = checkSideForAction(args, 0)
|
|
||||||
val dir = args.checkSideAny(1)
|
|
||||||
withItemConduit(facing, c => {
|
|
||||||
c.setOutputColor(dir, DyeColor.valueOf(args.checkString(2)))
|
|
||||||
result(true)
|
result(true)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -186,6 +192,48 @@ object UpgradeConfigurator {
|
|||||||
else
|
else
|
||||||
result(false, "EnderIO not loaded")
|
result(false, "EnderIO not loaded")
|
||||||
|
|
||||||
|
//noinspection ScalaUnusedSymbol
|
||||||
|
@Callback(doc = """function(side:number, direction:number, mode:string):boolean -- Set item conduit connection mode at side facing direction""")
|
||||||
|
def setItemConduitConnectionMode(context: Context, args: Arguments): Array[AnyRef] = if (Mods.EnderIO.isModAvailable) {
|
||||||
|
val facing = checkSideForAction(args, 0)
|
||||||
|
val dir = args.checkSideAny(1)
|
||||||
|
withItemConduit(facing, c => {
|
||||||
|
val mode = ConnectionMode.valueOf(args.checkString(2).toUpperCase)
|
||||||
|
c.setConnectionMode(dir, mode)
|
||||||
|
result(true)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else
|
||||||
|
result(false, "EnderIO not loaded")
|
||||||
|
|
||||||
|
//noinspection ScalaUnusedSymbol
|
||||||
|
@Callback(doc = """function(side:number, direction:number, color:string):boolean -- Set item conduit extraction redstone signal color at side facing direction""")
|
||||||
|
def setItemConduitExtractionRedstoneColor(context: Context, args: Arguments): Array[AnyRef] = if (Mods.EnderIO.isModAvailable) {
|
||||||
|
val facing = checkSideForAction(args, 0)
|
||||||
|
val dir = args.checkSideAny(1)
|
||||||
|
withItemConduit(facing, c => {
|
||||||
|
val color = DyeColor.valueOf(args.checkString(2).toUpperCase)
|
||||||
|
c.setExtractionSignalColor(dir, color)
|
||||||
|
result(true)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else
|
||||||
|
result(false, "EnderIO not loaded")
|
||||||
|
|
||||||
|
//noinspection ScalaUnusedSymbol
|
||||||
|
@Callback(doc = """function(side:number, direction:number, color:string):boolean -- Set item conduit extraction redstone signal color at side facing direction""")
|
||||||
|
def setItemConduitExtractionRedstoneMode(context: Context, args: Arguments): Array[AnyRef] = if (Mods.EnderIO.isModAvailable) {
|
||||||
|
val facing = checkSideForAction(args, 0)
|
||||||
|
val dir = args.checkSideAny(1)
|
||||||
|
withItemConduit(facing, c => {
|
||||||
|
val mode = RedstoneControlMode.valueOf(args.checkString(2).toUpperCase)
|
||||||
|
c.setExtractionRedstoneMode(mode, dir)
|
||||||
|
result(true)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else
|
||||||
|
result(false, "EnderIO not loaded")
|
||||||
|
|
||||||
//noinspection ScalaUnusedSymbol
|
//noinspection ScalaUnusedSymbol
|
||||||
@Callback(doc = """function(side:number, direction:number, fluid:string, blacklist:boolean, isInput:boolean[, filterIndex:number]):boolean -- Set ender liquid conduit filter at side facing direction""")
|
@Callback(doc = """function(side:number, direction:number, fluid:string, blacklist:boolean, isInput:boolean[, filterIndex:number]):boolean -- Set ender liquid conduit filter at side facing direction""")
|
||||||
def setEnderLiquidConduitFilter(context: Context, args: Arguments): Array[AnyRef] = if (Mods.EnderIO.isModAvailable) {
|
def setEnderLiquidConduitFilter(context: Context, args: Arguments): Array[AnyRef] = if (Mods.EnderIO.isModAvailable) {
|
||||||
@ -205,13 +253,13 @@ object UpgradeConfigurator {
|
|||||||
result(false, "EnderIO not loaded")
|
result(false, "EnderIO not loaded")
|
||||||
|
|
||||||
//noinspection ScalaUnusedSymbol
|
//noinspection ScalaUnusedSymbol
|
||||||
@Callback(doc = """function(side:number, direction:number, isInput:boolean, color:string):boolean -- Set fluid conduit priority at side facing direction""")
|
@Callback(doc = """function(side:number, direction:number, isInput:boolean, color:string):boolean -- Set fluid conduit color at side facing direction""")
|
||||||
def setEnderLiquidConduitColor(context: Context, args: Arguments): Array[AnyRef] = if (Mods.EnderIO.isModAvailable) {
|
def setEnderLiquidConduitColor(context: Context, args: Arguments): Array[AnyRef] = if (Mods.EnderIO.isModAvailable) {
|
||||||
val facing = checkSideForAction(args, 0)
|
val facing = checkSideForAction(args, 0)
|
||||||
val dir = args.checkSideAny(1)
|
val dir = args.checkSideAny(1)
|
||||||
withEnderFluidConduit(facing, c => {
|
withEnderFluidConduit(facing, c => {
|
||||||
val isInput = args.checkBoolean(2)
|
val isInput = args.checkBoolean(2)
|
||||||
val color = DyeColor.valueOf(args.checkString(3))
|
val color = DyeColor.valueOf(args.checkString(3).toUpperCase)
|
||||||
if (isInput) c.setInputColor(dir, color) else c.setOutputColor(dir, color)
|
if (isInput) c.setInputColor(dir, color) else c.setOutputColor(dir, color)
|
||||||
result(true)
|
result(true)
|
||||||
})
|
})
|
||||||
@ -219,6 +267,76 @@ object UpgradeConfigurator {
|
|||||||
else
|
else
|
||||||
result(false, "EnderIO not loaded")
|
result(false, "EnderIO not loaded")
|
||||||
|
|
||||||
|
//noinspection ScalaUnusedSymbol
|
||||||
|
@Callback(doc = """function(side:number, direction:number, mode:string):boolean -- Set fluid conduit connection mode at side facing direction""")
|
||||||
|
def setLiquidConduitConnectionMode(context: Context, args: Arguments): Array[AnyRef] = if (Mods.EnderIO.isModAvailable) {
|
||||||
|
val facing = checkSideForAction(args, 0)
|
||||||
|
val dir = args.checkSideAny(1)
|
||||||
|
withFluidConduit(facing, c => {
|
||||||
|
val mode = ConnectionMode.valueOf(args.checkString(2).toUpperCase)
|
||||||
|
c.setConnectionMode(dir, mode)
|
||||||
|
result(true)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else
|
||||||
|
result(false, "EnderIO not loaded")
|
||||||
|
|
||||||
|
//noinspection ScalaUnusedSymbol
|
||||||
|
@Callback(doc = """function(side:number, direction:number, color:string):boolean -- Set fluid conduit extraction redstone signal color at side facing direction""")
|
||||||
|
def setLiquidConduitExtractionRedstoneColor(context: Context, args: Arguments): Array[AnyRef] = if (Mods.EnderIO.isModAvailable) {
|
||||||
|
val facing = checkSideForAction(args, 0)
|
||||||
|
val dir = args.checkSideAny(1)
|
||||||
|
withFluidConduit(facing, c => {
|
||||||
|
val color = DyeColor.valueOf(args.checkString(2).toUpperCase)
|
||||||
|
c.setExtractionSignalColor(dir, color)
|
||||||
|
result(true)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else
|
||||||
|
result(false, "EnderIO not loaded")
|
||||||
|
|
||||||
|
//noinspection ScalaUnusedSymbol
|
||||||
|
@Callback(doc = """function(side:number, direction:number, color:string):boolean -- Set fluid conduit extraction redstone signal color at side facing direction""")
|
||||||
|
def setLiquidConduitExtractionRedstoneMode(context: Context, args: Arguments): Array[AnyRef] = if (Mods.EnderIO.isModAvailable) {
|
||||||
|
val facing = checkSideForAction(args, 0)
|
||||||
|
val dir = args.checkSideAny(1)
|
||||||
|
withFluidConduit(facing, c => {
|
||||||
|
val mode = RedstoneControlMode.valueOf(args.checkString(2).toUpperCase)
|
||||||
|
c.setExtractionRedstoneMode(mode, dir)
|
||||||
|
result(true)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else
|
||||||
|
result(false, "EnderIO not loaded")
|
||||||
|
|
||||||
|
//noinspection ScalaUnusedSymbol
|
||||||
|
@Callback(doc = """function(side:number, direction:number, color:string):boolean -- Set redstone conduit signal color at side facing direction""")
|
||||||
|
def setRedstoneConduitSignalColor(context: Context, args: Arguments): Array[AnyRef] = if (Mods.EnderIO.isModAvailable) {
|
||||||
|
val facing = checkSideForAction(args, 0)
|
||||||
|
val dir = args.checkSideAny(1)
|
||||||
|
withInsulatedRedstoneConduit(facing, c => {
|
||||||
|
val color = DyeColor.valueOf(args.checkString(2).toUpperCase)
|
||||||
|
c.setSignalColor(dir, color)
|
||||||
|
result(true)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else
|
||||||
|
result(false, "EnderIO not loaded")
|
||||||
|
|
||||||
|
//noinspection ScalaUnusedSymbol
|
||||||
|
@Callback(doc = """function(side:number, direction:number, strength:boolean):boolean -- Set redstone conduit signal color at side facing direction""")
|
||||||
|
def setRedstoneConduitSignalStrength(context: Context, args: Arguments): Array[AnyRef] = if (Mods.EnderIO.isModAvailable) {
|
||||||
|
val facing = checkSideForAction(args, 0)
|
||||||
|
val dir = args.checkSideAny(1)
|
||||||
|
withInsulatedRedstoneConduit(facing, c => {
|
||||||
|
val strength = args.checkBoolean(2)
|
||||||
|
c.setOutputStrength(dir, strength)
|
||||||
|
result(true)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else
|
||||||
|
result(false, "EnderIO not loaded")
|
||||||
|
|
||||||
private def convert(dir: ForgeDirection, ic: IItemConduit): Map[AnyRef, AnyRef] = Map(
|
private def convert(dir: ForgeDirection, ic: IItemConduit): Map[AnyRef, AnyRef] = Map(
|
||||||
"OutputColor" -> ic.getOutputColor(dir).getName,
|
"OutputColor" -> ic.getOutputColor(dir).getName,
|
||||||
"InputColor" -> ic.getInputColor(dir).getName,
|
"InputColor" -> ic.getInputColor(dir).getName,
|
||||||
@ -227,19 +345,34 @@ object UpgradeConfigurator {
|
|||||||
"ExtractionRedstoneConditionMet" -> ic.isExtractionRedstoneConditionMet(dir).asInstanceOf[AnyRef],
|
"ExtractionRedstoneConditionMet" -> ic.isExtractionRedstoneConditionMet(dir).asInstanceOf[AnyRef],
|
||||||
"OutputPriority" -> ic.getOutputPriority(dir).asInstanceOf[AnyRef],
|
"OutputPriority" -> ic.getOutputPriority(dir).asInstanceOf[AnyRef],
|
||||||
"InputFilter" -> convert(ic.getInputFilter(dir)),
|
"InputFilter" -> convert(ic.getInputFilter(dir)),
|
||||||
"OutputFilter" -> convert(ic.getOutputFilter(dir))
|
"OutputFilter" -> convert(ic.getOutputFilter(dir)),
|
||||||
|
"ConnectionMode" -> ic.getConnectionMode(dir),
|
||||||
|
"ExtractionRedstoneMode" -> ic.getExtractionRedstoneMode(dir),
|
||||||
|
"ExtractionRedstoneColor" -> ic.getExtractionSignalColor(dir)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
private def convert(dir: ForgeDirection, ic: IRedstoneConduit): Map[AnyRef, AnyRef] = Map(
|
||||||
|
"SignalColor" -> ic.getSignalColor(dir),
|
||||||
|
"IsOutputStrong" -> ic.isProvidingStrongPower(dir).toString,
|
||||||
|
"ConnectionMode" -> ic.getConnectionMode(dir)
|
||||||
|
)
|
||||||
|
|
||||||
private def convert(dir: ForgeDirection, ic: ILiquidConduit): Map[AnyRef, AnyRef] = ic match {
|
private def convert(dir: ForgeDirection, ic: ILiquidConduit): Map[AnyRef, AnyRef] = ic match {
|
||||||
case c: AbstractEnderLiquidConduit => Map[AnyRef,AnyRef](
|
case c: AbstractEnderLiquidConduit => Map[AnyRef,AnyRef](
|
||||||
"InputFilter" -> convert(c.getFilter(dir, true)),
|
"InputFilter" -> convert(c.getFilter(dir, true)),
|
||||||
"OutputFilter" -> convert(c.getFilter(dir, false)),
|
"OutputFilter" -> convert(c.getFilter(dir, false)),
|
||||||
"InputColor" -> c.getInputColor(dir).getName,
|
"InputColor" -> c.getInputColor(dir).getName,
|
||||||
"OutputColor" -> c.getOutputColor(dir).getName
|
"OutputColor" -> c.getOutputColor(dir).getName,
|
||||||
|
"ConnectionMode" -> c.getConnectionMode(dir),
|
||||||
|
"ExtractionRedstoneMode" -> c.getExtractionRedstoneMode(dir),
|
||||||
|
"ExtractionRedstoneColor" -> c.getExtractionSignalColor(dir)
|
||||||
)
|
)
|
||||||
|
|
||||||
case c: AbstractTankConduit => Map[AnyRef,AnyRef](
|
case c: AbstractTankConduit => Map[AnyRef,AnyRef](
|
||||||
"FluidType" -> c.getFluidType.getLocalizedName
|
"FluidType" -> c.getFluidType.getLocalizedName,
|
||||||
|
"ConnectionMode" -> c.getConnectionMode(dir),
|
||||||
|
"ExtractionRedstoneMode" -> c.getExtractionRedstoneMode(dir),
|
||||||
|
"ExtractionRedstoneColor" -> c.getExtractionSignalColor(dir)
|
||||||
)
|
)
|
||||||
case _ => null
|
case _ => null
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user