From cfd64fac07c27dc2b78c05fe8dd5053d14d50cf0 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Thu, 6 Mar 2025 21:48:05 +0700 Subject: [PATCH] Update Matter scanner to use SlottedContainer --- .../entity/matter/MatterScannerBlockEntity.kt | 17 ++++++++++------- .../mc/otm/menu/matter/MatterScannerMenu.kt | 10 +++++----- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterScannerBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterScannerBlockEntity.kt index d57799340..e7d68b96e 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterScannerBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterScannerBlockEntity.kt @@ -22,6 +22,8 @@ import ru.dbotthepony.mc.otm.capability.matter.PatternState import ru.dbotthepony.mc.otm.config.MachinesConfig import ru.dbotthepony.mc.otm.container.MatteryContainer import ru.dbotthepony.mc.otm.container.HandlerFilter +import ru.dbotthepony.mc.otm.container.slotted.ContainerSlot +import ru.dbotthepony.mc.otm.container.slotted.SlottedContainer import ru.dbotthepony.mc.otm.menu.matter.MatterScannerMenu import ru.dbotthepony.mc.otm.registry.game.MBlockEntities import ru.dbotthepony.mc.otm.graph.matter.MatterNode @@ -34,19 +36,20 @@ class MatterScannerBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) : MatteryWorkerBlockEntity(MBlockEntities.MATTER_SCANNER, p_155229_, p_155230_, ItemJob.CODEC) { override val upgrades = makeUpgrades(2, UpgradeType.BASIC) - val container = MatteryContainer(::itemContainerUpdated, 1).also(::addDroppableContainer) override val energy = ProfiledEnergyStorage(WorkerEnergyStorage(::energyLevelUpdated, upgrades.transform(MachinesConfig.MATTER_SCANNER))) - val itemConfig = ConfigurableItemHandler(inputOutput = container.handler(object : HandlerFilter { - override fun canInsert(slot: Int, stack: ItemStack): Boolean { - return MatterManager.canDecompose(stack) + private inner class Slot(container: SlottedContainer, slot: Int) : ContainerSlot(container, slot) { + override fun canAutomationPlaceItem(itemStack: ItemStack): Boolean { + return super.canAutomationPlaceItem(itemStack) && MatterManager.canDecompose(itemStack) } - override fun canExtract(slot: Int, amount: Int, stack: ItemStack): Boolean { - return jobEventLoops[0].isIdling + override fun canAutomationTakeItem(desired: Int): Boolean { + return jobEventLoops[0].isIdling && super.canAutomationTakeItem(desired) } - })) + } + val container = SlottedContainer.simple(1, ::Slot, ::itemContainerUpdated).also(::addDroppableContainer) + val itemConfig = ConfigurableItemHandler(inputOutput = container) val energyConfig = ConfigurableEnergy(energy) val matterNode = object : MatterNode() { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/matter/MatterScannerMenu.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/matter/MatterScannerMenu.kt index 1ab6f917a..005e774c1 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/matter/MatterScannerMenu.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/matter/MatterScannerMenu.kt @@ -5,8 +5,8 @@ import net.minecraft.world.entity.player.Inventory import ru.dbotthepony.mc.otm.block.entity.matter.MatterScannerBlockEntity import ru.dbotthepony.mc.otm.menu.widget.ProgressGaugeWidget import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget -import net.minecraft.world.SimpleContainer import net.minecraft.world.item.ItemStack +import ru.dbotthepony.mc.otm.container.EnhancedContainer import ru.dbotthepony.mc.otm.core.math.Decimal import ru.dbotthepony.mc.otm.matter.MatterManager import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu @@ -17,11 +17,11 @@ import ru.dbotthepony.mc.otm.menu.makeUpgradeSlots import ru.dbotthepony.mc.otm.menu.widget.ProfiledLevelGaugeWidget import ru.dbotthepony.mc.otm.registry.game.MMenus -class MatterScannerMenu @JvmOverloads constructor( - p_38852_: Int, +class MatterScannerMenu( + containerID: Int, inventory: Inventory, tile: MatterScannerBlockEntity? = null -) : MatteryPoweredMenu(MMenus.MATTER_SCANNER, p_38852_, inventory, tile) { +) : MatteryPoweredMenu(MMenus.MATTER_SCANNER, containerID, inventory, tile) { val input: MatteryMenuSlot val progress = ProgressGaugeWidget(this, tile) val patterns = LevelGaugeWidget(this) @@ -31,7 +31,7 @@ class MatterScannerMenu @JvmOverloads constructor( val upgrades = makeUpgradeSlots(2, tile?.upgrades) init { - val container = tile?.container ?: SimpleContainer(1) + val container = tile?.container ?: EnhancedContainer(1) input = object : MatteryMenuSlot(container, 0, 64, 38) { override fun mayPlace(itemStack: ItemStack) = MatterManager.canDecompose(itemStack)