Update Matter Decomposer to use SlottedContainer
This commit is contained in:
parent
7f9af78734
commit
d558252db9
@ -23,6 +23,10 @@ import ru.dbotthepony.mc.otm.capability.matter.ProfiledMatterStorage
|
||||
import ru.dbotthepony.mc.otm.config.MachinesConfig
|
||||
import ru.dbotthepony.mc.otm.container.HandlerFilter
|
||||
import ru.dbotthepony.mc.otm.container.MatteryContainer
|
||||
import ru.dbotthepony.mc.otm.container.slotted.AutomationFilters
|
||||
import ru.dbotthepony.mc.otm.container.slotted.ContainerSlot
|
||||
import ru.dbotthepony.mc.otm.container.slotted.FilteredContainerSlot
|
||||
import ru.dbotthepony.mc.otm.container.slotted.SlottedContainer
|
||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||
import ru.dbotthepony.mc.otm.core.otmRandom
|
||||
import ru.dbotthepony.mc.otm.data.codec.DecimalCodec
|
||||
@ -72,22 +76,23 @@ class MatterDecomposerBlockEntity(pos: BlockPos, state: BlockState)
|
||||
savetables.stateful(::matter, MATTER_STORAGE_KEY)
|
||||
}
|
||||
|
||||
private inner class InputSlot(container: SlottedContainer, slot: Int) : FilteredContainerSlot(container, slot) {
|
||||
override fun canAutomationPlaceItem(itemStack: ItemStack): Boolean {
|
||||
return super.canAutomationPlaceItem(itemStack) && MatterManager.canDecompose(itemStack)
|
||||
}
|
||||
|
||||
override fun canAutomationTakeItem(desired: Int): Boolean {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
// вход, выход
|
||||
val inputContainer = MatteryContainer(::markDirtyFast, 1).also(::addDroppableContainer)
|
||||
val outputContainer = MatteryContainer(::markDirtyFast, 2).also(::addDroppableContainer)
|
||||
val inputContainer = SlottedContainer.simple(1, ::InputSlot, ::markDirtyFast).also(::addDroppableContainer)
|
||||
val outputContainer = SlottedContainer.simple(2, AutomationFilters.ONLY_OUT.simpleProvider, ::markDirtyFast).also(::addDroppableContainer)
|
||||
|
||||
val itemConfig = ConfigurableItemHandler(
|
||||
input = inputContainer.handler(object : HandlerFilter {
|
||||
override fun canInsert(slot: Int, stack: ItemStack): Boolean {
|
||||
return MatterManager.canDecompose(stack)
|
||||
}
|
||||
|
||||
override fun canExtract(slot: Int, amount: Int, stack: ItemStack): Boolean {
|
||||
return false
|
||||
}
|
||||
}),
|
||||
|
||||
output = outputContainer.handler(HandlerFilter.OnlyOut)
|
||||
input = inputContainer,
|
||||
output = outputContainer
|
||||
)
|
||||
|
||||
init {
|
||||
|
@ -17,7 +17,8 @@ import net.minecraft.world.level.storage.loot.LootContext
|
||||
import net.minecraft.world.level.storage.loot.functions.LootItemFunction
|
||||
import net.minecraft.world.level.storage.loot.functions.LootItemFunctionType
|
||||
import ru.dbotthepony.mc.otm.config.ItemsConfig
|
||||
import ru.dbotthepony.mc.otm.container.MatteryContainer
|
||||
import ru.dbotthepony.mc.otm.container.IEnhancedContainer
|
||||
import ru.dbotthepony.mc.otm.container.set
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||
import ru.dbotthepony.mc.otm.matter.IMatterItem
|
||||
@ -65,7 +66,7 @@ class MatterDustItem : Item(Properties().stacksTo(64)), IMatterItem {
|
||||
return MatterValue(value, 1.0)
|
||||
}
|
||||
|
||||
fun moveIntoContainer(matterValue: Decimal, container: MatteryContainer, mainSlot: Int, stackingSlot: Int): Decimal {
|
||||
fun moveIntoContainer(matterValue: Decimal, container: IEnhancedContainer, mainSlot: Int, stackingSlot: Int): Decimal {
|
||||
@Suppress("name_shadowing")
|
||||
var matterValue = matterValue
|
||||
|
||||
|
@ -1,12 +1,11 @@
|
||||
package ru.dbotthepony.mc.otm.menu.matter
|
||||
|
||||
import kotlin.jvm.JvmOverloads
|
||||
import net.minecraft.world.entity.player.Inventory
|
||||
import ru.dbotthepony.mc.otm.block.entity.matter.MatterDecomposerBlockEntity
|
||||
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.slotted.SlottedContainer
|
||||
import ru.dbotthepony.mc.otm.matter.MatterManager
|
||||
import ru.dbotthepony.mc.otm.menu.OutputMenuSlot
|
||||
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
|
||||
@ -17,12 +16,12 @@ import ru.dbotthepony.mc.otm.menu.makeUpgradeSlots
|
||||
import ru.dbotthepony.mc.otm.menu.widget.ProfiledLevelGaugeWidget
|
||||
import ru.dbotthepony.mc.otm.registry.game.MMenus
|
||||
|
||||
class MatterDecomposerMenu @JvmOverloads constructor(
|
||||
class MatterDecomposerMenu(
|
||||
containerID: Int,
|
||||
inventory: Inventory,
|
||||
tile: MatterDecomposerBlockEntity? = null
|
||||
) : MatteryPoweredMenu(MMenus.MATTER_DECOMPOSER, containerID, inventory, tile) {
|
||||
val input = object : MatteryMenuSlot(tile?.inputContainer ?: SimpleContainer(1), 0) {
|
||||
val input = object : MatteryMenuSlot(tile?.inputContainer ?: SlottedContainer.filtered(1), 0) {
|
||||
override fun mayPlace(itemStack: ItemStack) = MatterManager.canDecompose(itemStack)
|
||||
}
|
||||
|
||||
@ -36,7 +35,7 @@ class MatterDecomposerMenu @JvmOverloads constructor(
|
||||
val upgrades = makeUpgradeSlots(4, tile?.upgrades)
|
||||
|
||||
init {
|
||||
val container = tile?.outputContainer ?: SimpleContainer(2)
|
||||
val container = tile?.outputContainer ?: SlottedContainer.simple(2)
|
||||
|
||||
// Выход
|
||||
outputMain = OutputMenuSlot(container, 0)
|
||||
|
Loading…
Reference in New Issue
Block a user