deduplicate stuff

This commit is contained in:
DBotThePony 2023-02-23 02:10:57 +07:00
parent 2db9e45291
commit 5b12be2ac4
Signed by: DBot
GPG Key ID: DCC23B5715498507

View File

@ -210,9 +210,9 @@ abstract class MatteryDeviceBlockEntity(blockEntityType: BlockEntityType<*>, blo
} }
inner class ConfigurableItemHandler( inner class ConfigurableItemHandler(
input: IItemHandler? = null, val input: IItemHandler? = null,
output: IItemHandler? = null, val output: IItemHandler? = null,
battery: IItemHandler? = null, val battery: IItemHandler? = null,
val frontDefault: ItemHandlerMode = determineDefaultMode(input, output, battery, RelativeSide.FRONT), val frontDefault: ItemHandlerMode = determineDefaultMode(input, output, battery, RelativeSide.FRONT),
val backDefault: ItemHandlerMode = determineDefaultMode(input, output, battery, RelativeSide.BACK), val backDefault: ItemHandlerMode = determineDefaultMode(input, output, battery, RelativeSide.BACK),
val leftDefault: ItemHandlerMode = determineDefaultMode(input, output, battery, RelativeSide.LEFT), val leftDefault: ItemHandlerMode = determineDefaultMode(input, output, battery, RelativeSide.LEFT),
@ -233,12 +233,12 @@ abstract class MatteryDeviceBlockEntity(blockEntityType: BlockEntityType<*>, blo
exposeSideless(ForgeCapabilities.ITEM_HANDLER, sideless) exposeSideless(ForgeCapabilities.ITEM_HANDLER, sideless)
} }
val front = Piece(RelativeSide.FRONT, input, output, battery).also { it.mode = frontDefault } val front = Piece(RelativeSide.FRONT).also { it.mode = frontDefault }
val back = Piece(RelativeSide.BACK, input, output, battery).also { it.mode = backDefault } val back = Piece(RelativeSide.BACK).also { it.mode = backDefault }
val left = Piece(RelativeSide.LEFT, input, output, battery).also { it.mode = leftDefault } val left = Piece(RelativeSide.LEFT).also { it.mode = leftDefault }
val right = Piece(RelativeSide.RIGHT, input, output, battery).also { it.mode = rightDefault } val right = Piece(RelativeSide.RIGHT).also { it.mode = rightDefault }
val top = Piece(RelativeSide.TOP, input, output, battery).also { it.mode = topDefault } val top = Piece(RelativeSide.TOP).also { it.mode = topDefault }
val bottom = Piece(RelativeSide.BOTTOM, input, output, battery).also { it.mode = bottomDefault } val bottom = Piece(RelativeSide.BOTTOM).also { it.mode = bottomDefault }
val pieces = immutableMap { val pieces = immutableMap {
put(RelativeSide.FRONT, front) put(RelativeSide.FRONT, front)
@ -258,40 +258,38 @@ abstract class MatteryDeviceBlockEntity(blockEntityType: BlockEntityType<*>, blo
put(RelativeSide.BOTTOM, bottomDefault) put(RelativeSide.BOTTOM, bottomDefault)
} }
val possibleViews: ImmutableSet<ItemHandlerMode>
val inputOutput: IItemHandler?
init {
val builder = ImmutableSet.Builder<ItemHandlerMode>()
builder.add(ItemHandlerMode.DISABLED)
if (input != null) builder.add(ItemHandlerMode.INPUT)
if (output != null) builder.add(ItemHandlerMode.OUTPUT)
if (input != null && output != null) builder.add(ItemHandlerMode.INPUT_OUTPUT)
if (battery != null) builder.add(ItemHandlerMode.BATTERY)
possibleViews = builder.build()
if (input != null && output != null) {
inputOutput = CombinedItemHandler(input, output)
} else {
inputOutput = null
}
}
inner class Piece( inner class Piece(
val side: RelativeSide, val side: RelativeSide,
val input: IItemHandler? = null,
val output: IItemHandler? = null,
val battery: IItemHandler? = null,
) : IItemHandler, ITickable { ) : IItemHandler, ITickable {
private var currentHandler: IItemHandler = EmptyItemHandler private var currentHandler: IItemHandler = EmptyItemHandler
private val capController = sides[side]!!.Cap(ForgeCapabilities.ITEM_HANDLER, this) private val capController = sides[side]!!.Cap(ForgeCapabilities.ITEM_HANDLER, this)
private val neighbour by sides[side]!!.track(ForgeCapabilities.ITEM_HANDLER) private val neighbour by sides[side]!!.track(ForgeCapabilities.ITEM_HANDLER)
val possibleViews: ImmutableSet<ItemHandlerMode>
val inputOutput: IItemHandler?
init { init {
tickList.always(this) tickList.always(this)
val builder = ImmutableSet.Builder<ItemHandlerMode>()
builder.add(ItemHandlerMode.DISABLED)
if (input != null) builder.add(ItemHandlerMode.INPUT)
if (output != null) builder.add(ItemHandlerMode.OUTPUT)
if (input != null && output != null) builder.add(ItemHandlerMode.INPUT_OUTPUT)
if (battery != null) builder.add(ItemHandlerMode.BATTERY)
possibleViews = builder.build()
capController.close() capController.close()
if (input != null && output != null) {
inputOutput = CombinedItemHandler(input, output)
} else {
inputOutput = null
}
} }
var mode by synchronizer.enum(ItemHandlerMode.DISABLED, setter = { value, access, setByRemote -> var mode by synchronizer.enum(ItemHandlerMode.DISABLED, setter = { value, access, setByRemote ->