From ffdd44357db5f3f145b454df28feef97c4bde0c2 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Fri, 28 Feb 2025 20:16:23 +0700 Subject: [PATCH] Make it compile again so migration can be done incrementally --- .../ru/dbotthepony/mc/otm/capability/Ext.kt | 2 +- .../mc/otm/capability/MatteryPlayer.kt | 10 ++++++++ .../mc/otm/container/IContainerSlot.kt | 2 +- .../mc/otm/container/IMatteryContainer.kt | 23 ++++--------------- .../mc/otm/menu/decorative/PainterMenu.kt | 3 ++- .../mc/otm/menu/matter/MatterBottlerMenu.kt | 3 ++- .../otm/menu/matter/MatterReplicatorMenu.kt | 3 ++- 7 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/Ext.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/Ext.kt index d2ac47101..a95c4f8b7 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/Ext.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/Ext.kt @@ -149,7 +149,7 @@ val ItemStack.matteryEnergy: IMatteryEnergyStorage? get() { } fun Player.items(includeCosmetics: Boolean = true): Iterator { - val matteryPlayer = matteryPlayer ?: return emptyIterator() + val matteryPlayer = matteryPlayer val iterators = ArrayList>() iterators.add(matteryPlayer.wrappedInventory.slotIterator().filter { !it.isForbiddenForAutomation }.map { it.item }) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/MatteryPlayer.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/MatteryPlayer.kt index a0211b503..72eedca24 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/MatteryPlayer.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/MatteryPlayer.kt @@ -79,6 +79,8 @@ import ru.dbotthepony.mc.otm.config.ExopackConfig import ru.dbotthepony.mc.otm.container.CombinedContainer import ru.dbotthepony.mc.otm.container.DynamicallyProxiedContainer import ru.dbotthepony.mc.otm.container.IContainer +import ru.dbotthepony.mc.otm.container.IContainerSlot +import ru.dbotthepony.mc.otm.container.IFilteredContainerSlot import ru.dbotthepony.mc.otm.container.IMatteryContainer import ru.dbotthepony.mc.otm.container.MatteryContainer import ru.dbotthepony.mc.otm.container.get @@ -329,6 +331,14 @@ class MatteryPlayer(val ply: Player) { override fun clearSlotFilters() { regularSlotFilters.forEach { it.accept(null) } } + + override fun containerSlot(slot: Int): IFilteredContainerSlot { + return object : IContainerSlot.Simple(slot, this), IFilteredContainerSlot { + override var filter: Item? + get() = regularSlotFilters.getOrNull(slot)?.get() + set(value) { regularSlotFilters.getOrNull(slot)?.accept(value) } + } + } } val wrappedItemInventory: IMatteryContainer = object : IMatteryContainer by wrappedInventory { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/container/IContainerSlot.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/container/IContainerSlot.kt index de28c6fa4..f5f8e26d2 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/container/IContainerSlot.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/container/IContainerSlot.kt @@ -47,7 +47,7 @@ interface IContainerSlot : Delegate { val isNotEmpty: Boolean get() = item.isNotEmpty - class Simple(private val slot: Int, private val container: Container) : IContainerSlot { + open class Simple(protected val slot: Int, protected val container: Container) : IContainerSlot { override fun setChanged() { container.setChanged() } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/container/IMatteryContainer.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/container/IMatteryContainer.kt index 6dc2e7e87..b41c5f2eb 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/container/IMatteryContainer.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/container/IMatteryContainer.kt @@ -9,7 +9,7 @@ import ru.dbotthepony.mc.otm.core.collect.filter import ru.dbotthepony.mc.otm.core.collect.map import ru.dbotthepony.mc.otm.core.isNotEmpty -interface IMatteryContainer : IContainer, RecipeInput, Iterable { +interface IMatteryContainer : IEnhancedContainer { fun getSlotFilter(slot: Int): Item? /** @@ -22,7 +22,6 @@ interface IMatteryContainer : IContainer, RecipeInput, Iterable { fun clearSlotFilters() override fun isEmpty(): Boolean - fun setChanged(slot: Int) override fun size(): Int { return containerSize @@ -38,7 +37,7 @@ interface IMatteryContainer : IContainer, RecipeInput, Iterable { /** * Iterates non-empty slots of this container */ - fun slotIterator(): Iterator { + override fun slotIterator(): Iterator { return slotIterator(true) } @@ -53,7 +52,7 @@ interface IMatteryContainer : IContainer, RecipeInput, Iterable { /** * Iterates either non-empty slots of container or all slots of container */ - fun slotIterator(nonEmpty: Boolean): Iterator { + fun slotIterator(nonEmpty: Boolean): Iterator { if (nonEmpty) { return (0 until containerSize).iterator().filter { this[it].isNotEmpty }.map { containerSlot(it) } } else { @@ -61,9 +60,7 @@ interface IMatteryContainer : IContainer, RecipeInput, Iterable { } } - fun containerSlot(slot: Int): IContainerSlot { - return IContainerSlot.Simple(slot, this) - } + override fun containerSlot(slot: Int): IFilteredContainerSlot fun hasSlotFilter(slot: Int) = getSlotFilter(slot) !== null fun isSlotForbiddenForAutomation(slot: Int) = getSlotFilter(slot) === Items.AIR @@ -80,7 +77,7 @@ interface IMatteryContainer : IContainer, RecipeInput, Iterable { } } - fun getMaxStackSize(slot: Int, itemStack: ItemStack) = maxStackSize.coerceAtMost(itemStack.maxStackSize) + override fun getMaxStackSize(slot: Int, itemStack: ItemStack) = maxStackSize.coerceAtMost(itemStack.maxStackSize) private fun addItem(stack: ItemStack, simulate: Boolean, filterPass: Boolean, slots: IntIterable, onlyIntoExisting: Boolean, popTime: Int?, ignoreFilters: Boolean): ItemStack { if (stack.isEmpty) @@ -203,14 +200,4 @@ interface IMatteryContainer : IContainer, RecipeInput, Iterable { return addItem(stack, false, slots, ignoreFilters).isEmpty } - - fun toList(): MutableList { - val list = ArrayList(size()) - - for (i in 0 until size()) { - list.add(this[i]) - } - - return list - } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/decorative/PainterMenu.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/decorative/PainterMenu.kt index 027b7ed25..99f364506 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/decorative/PainterMenu.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/decorative/PainterMenu.kt @@ -79,7 +79,8 @@ class PainterMenu( if (isBulk.value) { val found = player.matteryPlayer.inventoryAndExopack .slotIterator() - .filter { !it.isForbiddenForAutomation && ItemStack.isSameItemSameComponents(it.item, inputSlot.item) } + //.filter { !it.isForbiddenForAutomation && ItemStack.isSameItemSameComponents(it.item, inputSlot.item) } + .filter { ItemStack.isSameItemSameComponents(it.item, inputSlot.item) } .maybe() if (found != null) { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/matter/MatterBottlerMenu.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/matter/MatterBottlerMenu.kt index b83cd4b6b..b3817461c 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/matter/MatterBottlerMenu.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/matter/MatterBottlerMenu.kt @@ -9,6 +9,7 @@ import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.matter.canExtractMatter import ru.dbotthepony.mc.otm.capability.matter.canReceiveMatter import ru.dbotthepony.mc.otm.container.CombinedContainer +import ru.dbotthepony.mc.otm.container.slotted.SlottedContainer import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget import ru.dbotthepony.mc.otm.menu.widget.ProgressGaugeWidget @@ -28,7 +29,7 @@ class MatterBottlerMenu( val progressWidget = ProgressGaugeWidget(this) val matterWidget = ProfiledLevelGaugeWidget(this, tile?.matter, LevelGaugeWidget(this, tile?.matter)) - val storageSlots: ImmutableList = makeSlots(CombinedContainer(tile?.bottling ?: SimpleContainer(3), tile?.unbottling ?: SimpleContainer(3))) { it, index -> + val storageSlots: ImmutableList = makeSlots(CombinedContainer(tile?.bottling ?: SlottedContainer.simple(3), tile?.unbottling ?: SlottedContainer.simple(3))) { it, index -> object : MatterySlot(it, index) { override fun mayPlace(itemStack: ItemStack): Boolean { val cap = itemStack.getCapability(MatteryCapability.MATTER_ITEM) ?: return false diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/matter/MatterReplicatorMenu.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/matter/MatterReplicatorMenu.kt index 0bbc18fec..d37fba87d 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/matter/MatterReplicatorMenu.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/matter/MatterReplicatorMenu.kt @@ -8,6 +8,7 @@ import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget import ru.dbotthepony.mc.otm.menu.widget.ProgressGaugeWidget import net.minecraft.world.SimpleContainer import ru.dbotthepony.mc.otm.container.CombinedContainer +import ru.dbotthepony.mc.otm.container.slotted.SlottedContainer import ru.dbotthepony.mc.otm.core.immutableList import ru.dbotthepony.mc.otm.core.isNotEmpty import ru.dbotthepony.mc.otm.menu.OutputSlot @@ -34,7 +35,7 @@ class MatterReplicatorMenu @JvmOverloads constructor( val upgrades = makeUpgradeSlots(3, tile?.upgrades) init { - val container = CombinedContainer(tile?.outputContainer ?: SimpleContainer(3), tile?.dustContainer ?: SimpleContainer(2)) + val container = CombinedContainer(tile?.outputContainer ?: SlottedContainer.simple(3), tile?.dustContainer ?: SlottedContainer.simple(2)) storageSlots = immutableList(5) { addStorageSlot(OutputSlot(container, it, onTake = {