From c93fa7bb7a63c7f1083e35b84b7773817bf0d409 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sat, 29 Mar 2025 13:37:14 +0700 Subject: [PATCH] Weaken type argument in AutomationFilters --- .../otm/container/slotted/AutomationFilter.kt | 11 ++-- .../container/slotted/AutomationFilters.kt | 51 ++++++++++--------- 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/container/slotted/AutomationFilter.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/container/slotted/AutomationFilter.kt index c7cf2bf35..43f09142f 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/container/slotted/AutomationFilter.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/container/slotted/AutomationFilter.kt @@ -1,24 +1,25 @@ package ru.dbotthepony.mc.otm.container.slotted import net.minecraft.world.item.ItemStack +import ru.dbotthepony.mc.otm.container.IContainerSlot -fun interface AutomationPlaceItem { +fun interface AutomationPlaceItem { fun canAutomationPlaceItem(self: S, itemStack: ItemStack): Boolean } -fun interface AutomationTakeItem { +fun interface AutomationTakeItem { fun canAutomationTakeItem(self: S, desired: Int): Boolean } -fun interface AutomationModifyPlaceCount { +fun interface AutomationModifyPlaceCount { fun modifyAutomationPlaceCount(self: S, itemStack: ItemStack): Int } -fun interface AutomationModifyExtractionCount { +fun interface AutomationModifyExtractionCount { fun modifyAutomationExtractionCount(self: S, desired: Int): Int } -interface AutomationFilter : AutomationPlaceItem, AutomationTakeItem, AutomationModifyPlaceCount, AutomationModifyExtractionCount { +interface AutomationFilter : AutomationPlaceItem, AutomationTakeItem, AutomationModifyPlaceCount, AutomationModifyExtractionCount { override fun modifyAutomationPlaceCount(self: S, itemStack: ItemStack): Int { return itemStack.count } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/container/slotted/AutomationFilters.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/container/slotted/AutomationFilters.kt index 702cd4a54..39ea51c3c 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/container/slotted/AutomationFilters.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/container/slotted/AutomationFilters.kt @@ -4,118 +4,119 @@ import net.minecraft.world.item.ItemStack import net.neoforged.neoforge.capabilities.Capabilities import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.fluid.stream +import ru.dbotthepony.mc.otm.container.IContainerSlot import ru.dbotthepony.mc.otm.core.isNotEmpty import ru.dbotthepony.mc.otm.core.math.Decimal -enum class AutomationFilters : AutomationFilter { +enum class AutomationFilters : AutomationFilter { ONLY_OUT { - override fun canAutomationPlaceItem(self: ContainerSlot, itemStack: ItemStack): Boolean { + override fun canAutomationPlaceItem(self: IContainerSlot, itemStack: ItemStack): Boolean { return true } - override fun canAutomationTakeItem(self: ContainerSlot, desired: Int): Boolean { + override fun canAutomationTakeItem(self: IContainerSlot, desired: Int): Boolean { return false } }, ONLY_IN { - override fun canAutomationPlaceItem(self: ContainerSlot, itemStack: ItemStack): Boolean { + override fun canAutomationPlaceItem(self: IContainerSlot, itemStack: ItemStack): Boolean { return false } - override fun canAutomationTakeItem(self: ContainerSlot, desired: Int): Boolean { + override fun canAutomationTakeItem(self: IContainerSlot, desired: Int): Boolean { return true } }, ALLOW { - override fun canAutomationPlaceItem(self: ContainerSlot, itemStack: ItemStack): Boolean { + override fun canAutomationPlaceItem(self: IContainerSlot, itemStack: ItemStack): Boolean { return true } - override fun canAutomationTakeItem(self: ContainerSlot, desired: Int): Boolean { + override fun canAutomationTakeItem(self: IContainerSlot, desired: Int): Boolean { return true } }, DENY { - override fun canAutomationPlaceItem(self: ContainerSlot, itemStack: ItemStack): Boolean { + override fun canAutomationPlaceItem(self: IContainerSlot, itemStack: ItemStack): Boolean { return false } - override fun canAutomationTakeItem(self: ContainerSlot, desired: Int): Boolean { + override fun canAutomationTakeItem(self: IContainerSlot, desired: Int): Boolean { return false } }, FLUID_CONTAINERS { - override fun canAutomationPlaceItem(self: ContainerSlot, itemStack: ItemStack): Boolean { + override fun canAutomationPlaceItem(self: IContainerSlot, itemStack: ItemStack): Boolean { return itemStack.getCapability(Capabilities.FluidHandler.ITEM)?.let { it.tanks > 0 } ?: false } - override fun canAutomationTakeItem(self: ContainerSlot, desired: Int): Boolean { + override fun canAutomationTakeItem(self: IContainerSlot, desired: Int): Boolean { return true } }, DRAINABLE_FLUID_CONTAINERS { - override fun canAutomationPlaceItem(self: ContainerSlot, itemStack: ItemStack): Boolean { + override fun canAutomationPlaceItem(self: IContainerSlot, itemStack: ItemStack): Boolean { return itemStack.getCapability(Capabilities.FluidHandler.ITEM)?.let { it.stream().anyMatch { it.isNotEmpty } } ?: false } - override fun canAutomationTakeItem(self: ContainerSlot, desired: Int): Boolean { + override fun canAutomationTakeItem(self: IContainerSlot, desired: Int): Boolean { return !canAutomationPlaceItem(self, self.item) } }, DISCHARGABLE { - override fun canAutomationPlaceItem(self: ContainerSlot, itemStack: ItemStack): Boolean { + override fun canAutomationPlaceItem(self: IContainerSlot, itemStack: ItemStack): Boolean { return itemStack.getCapability(Capabilities.EnergyStorage.ITEM)?.let { it.canExtract() && it.extractEnergy(Int.MAX_VALUE, true) > 0 } ?: false } - override fun canAutomationTakeItem(self: ContainerSlot, desired: Int): Boolean { + override fun canAutomationTakeItem(self: IContainerSlot, desired: Int): Boolean { return self.item.getCapability(Capabilities.EnergyStorage.ITEM)?.let { !it.canExtract() || it.extractEnergy(Int.MAX_VALUE, true) <= 0 } ?: true } }, CHARGEABLE { - override fun canAutomationPlaceItem(self: ContainerSlot, itemStack: ItemStack): Boolean { + override fun canAutomationPlaceItem(self: IContainerSlot, itemStack: ItemStack): Boolean { return itemStack.getCapability(Capabilities.EnergyStorage.ITEM)?.let { it.canReceive() && it.receiveEnergy(Int.MAX_VALUE, true) > 0 } ?: false } - override fun canAutomationTakeItem(self: ContainerSlot, desired: Int): Boolean { + override fun canAutomationTakeItem(self: IContainerSlot, desired: Int): Boolean { return self.item.getCapability(Capabilities.EnergyStorage.ITEM)?.let { !it.canReceive() || it.receiveEnergy(Int.MAX_VALUE, true) <= 0 } ?: true } }, CHEMICAL_FUEL { - override fun canAutomationPlaceItem(self: ContainerSlot, itemStack: ItemStack): Boolean { + override fun canAutomationPlaceItem(self: IContainerSlot, itemStack: ItemStack): Boolean { return itemStack.getBurnTime(null) > 0 } - override fun canAutomationTakeItem(self: ContainerSlot, desired: Int): Boolean { + override fun canAutomationTakeItem(self: IContainerSlot, desired: Int): Boolean { return self.item.getBurnTime(null) <= 0 } }, IS_PATTERN { - override fun canAutomationPlaceItem(self: ContainerSlot, itemStack: ItemStack): Boolean { + override fun canAutomationPlaceItem(self: IContainerSlot, itemStack: ItemStack): Boolean { return itemStack.getCapability(MatteryCapability.PATTERN_ITEM) != null } - override fun canAutomationTakeItem(self: ContainerSlot, desired: Int): Boolean { + override fun canAutomationTakeItem(self: IContainerSlot, desired: Int): Boolean { return true } }, MATTER_PROVIDERS { - override fun canAutomationPlaceItem(self: ContainerSlot, itemStack: ItemStack): Boolean { + override fun canAutomationPlaceItem(self: IContainerSlot, itemStack: ItemStack): Boolean { return itemStack.getCapability(MatteryCapability.MATTER_ITEM) ?.let { it.matterFlow.output && it.extractMatterChecked(Decimal.POSITIVE_INFINITY, true) > Decimal.ZERO } ?: false } - override fun canAutomationTakeItem(self: ContainerSlot, desired: Int): Boolean { + override fun canAutomationTakeItem(self: IContainerSlot, desired: Int): Boolean { return self.item.getCapability(MatteryCapability.MATTER_ITEM) ?.let { !it.matterFlow.output || it.extractMatterChecked(Decimal.POSITIVE_INFINITY, true) <= Decimal.ZERO } ?: true @@ -123,13 +124,13 @@ enum class AutomationFilters : AutomationFilter { }, MATTER_CONSUMERS { - override fun canAutomationPlaceItem(self: ContainerSlot, itemStack: ItemStack): Boolean { + override fun canAutomationPlaceItem(self: IContainerSlot, itemStack: ItemStack): Boolean { return itemStack.getCapability(MatteryCapability.MATTER_ITEM) ?.let { it.matterFlow.input && it.receiveMatterChecked(Decimal.POSITIVE_INFINITY, true) > Decimal.ZERO } ?: false } - override fun canAutomationTakeItem(self: ContainerSlot, desired: Int): Boolean { + override fun canAutomationTakeItem(self: IContainerSlot, desired: Int): Boolean { return self.item.getCapability(MatteryCapability.MATTER_ITEM) ?.let { !it.matterFlow.input || it.receiveMatterChecked(Decimal.POSITIVE_INFINITY, true) <= Decimal.ZERO } ?: true