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(
input: IItemHandler? = null,
output: IItemHandler? = null,
battery: IItemHandler? = null,
val input: IItemHandler? = null,
val output: IItemHandler? = null,
val battery: IItemHandler? = null,
val frontDefault: ItemHandlerMode = determineDefaultMode(input, output, battery, RelativeSide.FRONT),
val backDefault: ItemHandlerMode = determineDefaultMode(input, output, battery, RelativeSide.BACK),
val leftDefault: ItemHandlerMode = determineDefaultMode(input, output, battery, RelativeSide.LEFT),
@ -233,12 +233,12 @@ abstract class MatteryDeviceBlockEntity(blockEntityType: BlockEntityType<*>, blo
exposeSideless(ForgeCapabilities.ITEM_HANDLER, sideless)
}
val front = Piece(RelativeSide.FRONT, input, output, battery).also { it.mode = frontDefault }
val back = Piece(RelativeSide.BACK, input, output, battery).also { it.mode = backDefault }
val left = Piece(RelativeSide.LEFT, input, output, battery).also { it.mode = leftDefault }
val right = Piece(RelativeSide.RIGHT, input, output, battery).also { it.mode = rightDefault }
val top = Piece(RelativeSide.TOP, input, output, battery).also { it.mode = topDefault }
val bottom = Piece(RelativeSide.BOTTOM, input, output, battery).also { it.mode = bottomDefault }
val front = Piece(RelativeSide.FRONT).also { it.mode = frontDefault }
val back = Piece(RelativeSide.BACK).also { it.mode = backDefault }
val left = Piece(RelativeSide.LEFT).also { it.mode = leftDefault }
val right = Piece(RelativeSide.RIGHT).also { it.mode = rightDefault }
val top = Piece(RelativeSide.TOP).also { it.mode = topDefault }
val bottom = Piece(RelativeSide.BOTTOM).also { it.mode = bottomDefault }
val pieces = immutableMap {
put(RelativeSide.FRONT, front)
@ -258,22 +258,10 @@ abstract class MatteryDeviceBlockEntity(blockEntityType: BlockEntityType<*>, blo
put(RelativeSide.BOTTOM, bottomDefault)
}
inner class Piece(
val side: RelativeSide,
val input: IItemHandler? = null,
val output: IItemHandler? = null,
val battery: IItemHandler? = null,
) : IItemHandler, ITickable {
private var currentHandler: IItemHandler = EmptyItemHandler
private val capController = sides[side]!!.Cap(ForgeCapabilities.ITEM_HANDLER, this)
private val neighbour by sides[side]!!.track(ForgeCapabilities.ITEM_HANDLER)
val possibleViews: ImmutableSet<ItemHandlerMode>
val inputOutput: IItemHandler?
init {
tickList.always(this)
val builder = ImmutableSet.Builder<ItemHandlerMode>()
builder.add(ItemHandlerMode.DISABLED)
@ -285,8 +273,6 @@ abstract class MatteryDeviceBlockEntity(blockEntityType: BlockEntityType<*>, blo
possibleViews = builder.build()
capController.close()
if (input != null && output != null) {
inputOutput = CombinedItemHandler(input, output)
} else {
@ -294,6 +280,18 @@ abstract class MatteryDeviceBlockEntity(blockEntityType: BlockEntityType<*>, blo
}
}
inner class Piece(
val side: RelativeSide,
) : IItemHandler, ITickable {
private var currentHandler: IItemHandler = EmptyItemHandler
private val capController = sides[side]!!.Cap(ForgeCapabilities.ITEM_HANDLER, this)
private val neighbour by sides[side]!!.track(ForgeCapabilities.ITEM_HANDLER)
init {
tickList.always(this)
capController.close()
}
var mode by synchronizer.enum(ItemHandlerMode.DISABLED, setter = { value, access, setByRemote ->
require(value in possibleViews) { "View type $value is not allowed (allowed views: $possibleViews)" }