Revert "Update Upgrade Container to use SlottedContainer"

This reverts commit 861b94a30a.
This commit is contained in:
DBotThePony 2025-03-06 16:06:21 +07:00
parent de79019f56
commit 9806e1ec52
Signed by: DBot
GPG Key ID: DCC23B5715498507
11 changed files with 21 additions and 24 deletions

View File

@ -106,7 +106,7 @@ class MatterBottlerBlockEntity(blockPos: BlockPos, blockState: BlockState) :
savetables.stateful(::matter, MATTER_STORAGE_KEY)
savetables.stateful(::bottling)
savetables.stateful(::unbottling)
savetables.stateful(upgrades::container, "upgrades")
savetables.stateful(::upgrades)
}
var workProgress: Float = 0f

View File

@ -64,7 +64,7 @@ class MatterDecomposerBlockEntity(pos: BlockPos, state: BlockState)
init {
savetables.stateful(::energy, ENERGY_KEY)
savetables.stateful(upgrades::container, "upgrades")
savetables.stateful(::upgrades)
}
val matter = ProfiledMatterStorage(MatterStorageImpl(::markDirtyFast, FlowDirection.OUTPUT, upgrades.matterCapacity(MachinesConfig.MATTER_DECOMPOSER::matterCapacity)))

View File

@ -144,7 +144,7 @@ class MatterEntanglerBlockEntity(blockPos: BlockPos, blockState: BlockState) : M
savetables.stateful(::energy, ENERGY_KEY)
savetables.stateful(::matter, MATTER_STORAGE_KEY)
savetables.stateful(upgrades::container, "upgrades")
savetables.stateful(::upgrades)
savetables.stateful(inputs::parent, "inputs")
savetables.stateful(::output)
savetables.stateful(::experience)

View File

@ -37,7 +37,8 @@ import ru.dbotthepony.mc.otm.menu.matter.MatterReconstructorMenu
import ru.dbotthepony.mc.otm.registry.game.MBlockEntities
import java.util.function.BooleanSupplier
class MatterReconstructorBlockEntity(blockPos: BlockPos, blockState: BlockState) : MatteryPoweredBlockEntity(MBlockEntities.MATTER_RECONSTRUCTOR, blockPos, blockState) {
class MatterReconstructorBlockEntity(blockPos: BlockPos, blockState: BlockState) : MatteryPoweredBlockEntity(
MBlockEntities.MATTER_RECONSTRUCTOR, blockPos, blockState) {
val repairContainer = MatteryContainer(::containerChanged, 1).also(::addDroppableContainer)
private var matterPerTick = Decimal.ZERO
@ -85,7 +86,7 @@ class MatterReconstructorBlockEntity(blockPos: BlockPos, blockState: BlockState)
savetables.stateful(::repairContainer)
savetables.stateful(::matter)
savetables.stateful(::energy)
savetables.stateful(upgrades::container, "upgrades")
savetables.stateful(::upgrades)
savetables.decimal(::matterPerTick)
savetables.double(::progressPerTick)

View File

@ -72,7 +72,7 @@ class MatterRecyclerBlockEntity(blockPos: BlockPos, blockState: BlockState)
savetables.stateful(::energy, ENERGY_KEY)
savetables.stateful(::container, INVENTORY_KEY)
savetables.stateful(::matter, MATTER_STORAGE_KEY)
savetables.stateful(upgrades::container, "upgrades")
savetables.stateful(::upgrades)
}
override fun setRemoved() {

View File

@ -103,7 +103,7 @@ class MatterReplicatorBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) :
savetables.stateful(::matter, MATTER_STORAGE_KEY)
savetables.stateful(::outputContainer, INVENTORY_KEY)
savetables.stateful(::dustContainer)
savetables.stateful(upgrades::container, "upgrades")
savetables.stateful(::upgrades)
}
override fun createMenu(containerID: Int, inventory: Inventory, ply: Player): AbstractContainerMenu {

View File

@ -68,7 +68,7 @@ class MatterScannerBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) :
savetables.stateful(::container, INVENTORY_KEY)
savetables.stateful(::energy, ENERGY_KEY)
savetables.stateful(upgrades::container, "upgrades")
savetables.stateful(::upgrades)
}
override fun setRemoved() {

View File

@ -84,7 +84,7 @@ sealed class AbstractPoweredFurnaceBlockEntity<P : AbstractCookingRecipe, S : Ma
init {
exposeGlobally(Capabilities.FluidHandler.BLOCK, experience)
savetables.stateful(upgrades::container, "upgrades")
savetables.stateful(::upgrades)
savetables.stateful(::energy)
savetables.stateful(::experience)

View File

@ -50,7 +50,7 @@ class PlatePressBlockEntity(
savetables.stateful(::inputContainer)
savetables.stateful(::outputContainer)
savetables.stateful(::experience)
savetables.stateful(upgrades::container, "upgrades")
savetables.stateful(::upgrades)
}
override fun createMenu(containerID: Int, inventory: Inventory, ply: Player): AbstractContainerMenu {

View File

@ -5,7 +5,6 @@ import ru.dbotthepony.mc.otm.capability.MatteryCapability
import ru.dbotthepony.mc.otm.capability.UpgradeType
import ru.dbotthepony.mc.otm.config.EnergyBalanceValues
import ru.dbotthepony.mc.otm.config.VerboseEnergyBalanceValues
import ru.dbotthepony.mc.otm.container.slotted.SlottedContainer
import ru.dbotthepony.mc.otm.core.collect.map
import ru.dbotthepony.mc.otm.core.collect.reduce
import ru.dbotthepony.mc.otm.core.math.Decimal
@ -17,34 +16,32 @@ class UpgradeContainer(
val allowedUpgrades: Set<UpgradeType> = UpgradeType.ALL,
val shouldLockUpgradeSlots: BooleanSupplier = BooleanSupplier { false },
listener: Runnable = Runnable {}
) : IMatteryUpgrade {
val container = SlottedContainer.simple(slotCount, listener)
) : MatteryContainer(listener, slotCount), IMatteryUpgrade {
override val upgradeTypes: Set<UpgradeType>
get() = setOf()
private fun positiveDecimals(fn: (IMatteryUpgrade) -> Decimal, reducer: (Decimal, Decimal) -> Decimal): Decimal {
if (container.isEmpty)
if (isEmpty)
return Decimal.ZERO
return container.iterator()
return iterator()
.map { (it.getCapability(MatteryCapability.UPGRADE)?.let(fn) ?: Decimal.ZERO).moreThanZero() * it.count }
.reduce(Decimal.ZERO, reducer)
}
private fun anyDecimals(fn: (IMatteryUpgrade) -> Decimal, reducer: (Decimal, Decimal) -> Decimal): Decimal {
if (container.isEmpty)
if (isEmpty)
return Decimal.ZERO
return container.iterator()
return iterator()
.map { (it.getCapability(MatteryCapability.UPGRADE)?.let(fn) ?: Decimal.ZERO) * it.count }
.reduce(Decimal.ZERO, reducer)
}
override val speedBonus: Double
get() = container.iterator().map { (it.getCapability(MatteryCapability.UPGRADE)?.speedBonus ?: 0.0) * it.count }.reduce(0.0) { a, b -> a + b }
get() = iterator().map { (it.getCapability(MatteryCapability.UPGRADE)?.speedBonus ?: 0.0) * it.count }.reduce(0.0) { a, b -> a + b }
override val processingItems: Int
get() = container.iterator().map { (it.getCapability(MatteryCapability.UPGRADE)?.processingItems ?: 0).coerceAtLeast(0) * it.count }.reduce(0) { a, b -> a + b }
get() = iterator().map { (it.getCapability(MatteryCapability.UPGRADE)?.processingItems ?: 0).coerceAtLeast(0) * it.count }.reduce(0) { a, b -> a + b }
override val energyStorageFlat: Decimal
get() = positiveDecimals(IMatteryUpgrade::energyStorageFlat, Decimal::plus)
override val energyStorage: Decimal
@ -56,7 +53,7 @@ class UpgradeContainer(
override val energyConsumed: Decimal
get() = anyDecimals(IMatteryUpgrade::energyConsumed, Decimal::plus)
override val failureMultiplier: Double
get() = container.iterator().map { (it.getCapability(MatteryCapability.UPGRADE)?.failureMultiplier ?: 1.0).coerceAtLeast(0.0).pow(it.count.toDouble()) }.reduce(1.0) { a, b -> a * b }
get() = iterator().map { (it.getCapability(MatteryCapability.UPGRADE)?.failureMultiplier ?: 1.0).coerceAtLeast(0.0).pow(it.count.toDouble()) }.reduce(1.0) { a, b -> a * b }
override val energyThroughputFlat: Decimal
get() = positiveDecimals(IMatteryUpgrade::energyThroughputFlat, Decimal::plus)
override val energyThroughput: Decimal

View File

@ -22,7 +22,6 @@ import ru.dbotthepony.mc.otm.container.IFilteredContainerSlot
import ru.dbotthepony.mc.otm.container.IMatteryContainer
import ru.dbotthepony.mc.otm.container.ItemFilter
import ru.dbotthepony.mc.otm.container.UpgradeContainer
import ru.dbotthepony.mc.otm.container.slotted.SlottedContainer
import ru.dbotthepony.mc.otm.container.util.containerSlotOrNull
import ru.dbotthepony.mc.otm.core.collect.ConditionalEnumSet
import ru.dbotthepony.mc.otm.core.immutableList
@ -262,7 +261,7 @@ data class UpgradeSlots(
fun MatteryMenu.makeUpgradeSlots(count: Int, container: UpgradeContainer?): UpgradeSlots {
if (container != null) {
require(count == container.container.containerSize) { "Upgrade container size ${container.container.containerSize} does not match with provided size $count" }
require(count == container.containerSize) { "Upgrade container size ${container.containerSize} does not match with provided size $count" }
}
val shouldLockUpgradeSlots: Supplier<Boolean>
@ -284,7 +283,7 @@ fun MatteryMenu.makeUpgradeSlots(count: Int, container: UpgradeContainer?): Upgr
allowedTypes[value] = BooleanSupplier { b.get() }
}
val syncContainer = container?.container ?: SlottedContainer.simple(count)
val syncContainer = container ?: SimpleContainer(count)
val isOpen = InstantBooleanInput(this)
return UpgradeSlots(