Update Matter scanner to use SlottedContainer
This commit is contained in:
parent
8967d3aafa
commit
cfd64fac07
@ -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<ItemJob>(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() {
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user