From 509630ca35a56118bae522a9a035237cfcc81244 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Thu, 6 Apr 2023 15:16:39 +0700 Subject: [PATCH] More lenient "fill" checks --- .../entity/decorative/FluidTankBlockEntity.kt | 11 ++++++++++- .../mc/otm/menu/decorative/FluidTankMenu.kt | 14 ++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/decorative/FluidTankBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/decorative/FluidTankBlockEntity.kt index ea6cdad3f..39d62c563 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/decorative/FluidTankBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/decorative/FluidTankBlockEntity.kt @@ -41,8 +41,17 @@ class FluidTankBlockEntity(blockPos: BlockPos, blockState: BlockState) : Mattery drainInput.handler(HandlerFilter.DrainableFluidContainers), fillInput.handler(object : HandlerFilter { override fun canInsert(slot: Int, stack: ItemStack): Boolean { - if (fluid.isEmpty) + if (fluid.isEmpty) { + stack.getCapability(ForgeCapabilities.FLUID_HANDLER).ifPresentK { + if (it.tanks > 0) return true + } + + stack.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM).ifPresentK { + if (it.tanks > 0) return true + } + return false + } stack.getCapability(ForgeCapabilities.FLUID_HANDLER).ifPresentK { if (it.fill(fluid[0], IFluidHandler.FluidAction.SIMULATE) > 0) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/decorative/FluidTankMenu.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/decorative/FluidTankMenu.kt index db985d43c..2b746de00 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/decorative/FluidTankMenu.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/decorative/FluidTankMenu.kt @@ -36,9 +36,19 @@ class FluidTankMenu(containerId: Int, inventory: Inventory, tile: FluidTankBlock val fillInput = object : MatterySlot(tile?.fillInput ?: SimpleContainer(1), 0) { override fun mayPlace(itemStack: ItemStack): Boolean { return super.mayPlace(itemStack) && itemStack.getCapability(ForgeCapabilities.FLUID_HANDLER) - .map { it.fill(fluid.fluid, IFluidHandler.FluidAction.SIMULATE) > 0 } + .map { + if (fluid.fluid.isEmpty) + it.tanks > 0 + else + it.fill(fluid.fluid, IFluidHandler.FluidAction.SIMULATE) > 0 + } .orElse(itemStack.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM) - .map { it.fill(fluid.fluid, IFluidHandler.FluidAction.SIMULATE) > 0 } + .map { + if (fluid.fluid.isEmpty) + it.tanks > 0 + else + it.fill(fluid.fluid, IFluidHandler.FluidAction.SIMULATE) > 0 + } .orElse(false)) } }