Make it compile again so migration can be done incrementally

This commit is contained in:
DBotThePony 2025-02-28 20:16:23 +07:00
parent 5e8ab76f49
commit ffdd44357d
Signed by: DBot
GPG Key ID: DCC23B5715498507
7 changed files with 23 additions and 23 deletions

View File

@ -149,7 +149,7 @@ val ItemStack.matteryEnergy: IMatteryEnergyStorage? get() {
}
fun Player.items(includeCosmetics: Boolean = true): Iterator<ItemStack> {
val matteryPlayer = matteryPlayer ?: return emptyIterator()
val matteryPlayer = matteryPlayer
val iterators = ArrayList<Iterator<ItemStack>>()
iterators.add(matteryPlayer.wrappedInventory.slotIterator().filter { !it.isForbiddenForAutomation }.map { it.item })

View File

@ -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 {

View File

@ -47,7 +47,7 @@ interface IContainerSlot : Delegate<ItemStack> {
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()
}

View File

@ -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<ItemStack> {
interface IMatteryContainer : IEnhancedContainer {
fun getSlotFilter(slot: Int): Item?
/**
@ -22,7 +22,6 @@ interface IMatteryContainer : IContainer, RecipeInput, Iterable<ItemStack> {
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<ItemStack> {
/**
* Iterates non-empty slots of this container
*/
fun slotIterator(): Iterator<IContainerSlot> {
override fun slotIterator(): Iterator<IFilteredContainerSlot> {
return slotIterator(true)
}
@ -53,7 +52,7 @@ interface IMatteryContainer : IContainer, RecipeInput, Iterable<ItemStack> {
/**
* Iterates either non-empty slots of container or all slots of container
*/
fun slotIterator(nonEmpty: Boolean): Iterator<IContainerSlot> {
fun slotIterator(nonEmpty: Boolean): Iterator<IFilteredContainerSlot> {
if (nonEmpty) {
return (0 until containerSize).iterator().filter { this[it].isNotEmpty }.map { containerSlot(it) }
} else {
@ -61,9 +60,7 @@ interface IMatteryContainer : IContainer, RecipeInput, Iterable<ItemStack> {
}
}
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<ItemStack> {
}
}
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<ItemStack> {
return addItem(stack, false, slots, ignoreFilters).isEmpty
}
fun toList(): MutableList<ItemStack> {
val list = ArrayList<ItemStack>(size())
for (i in 0 until size()) {
list.add(this[i])
}
return list
}
}

View File

@ -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) {

View File

@ -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<MatterySlot> = makeSlots(CombinedContainer(tile?.bottling ?: SimpleContainer(3), tile?.unbottling ?: SimpleContainer(3))) { it, index ->
val storageSlots: ImmutableList<MatterySlot> = 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

View File

@ -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 = {