More lenient "fill" checks
This commit is contained in:
parent
7ce73bdb52
commit
509630ca35
@ -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)
|
||||
|
@ -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))
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user