PylonFluidBufferBlock

Allows for creating 'fluid buffers' in a block, which have a capacity and can be filled and emptied by fluid connections.

In more detail: Usually, fluid machines store fluids in internal 'buffers.' For example, the press has an internal buffer used to store plant oil, of size 1000mB by default. This is a common enough thing that we created a new interface to handle it: PylonFluidBufferBlock. This interface allows your block to easily manage fluid buffers.

You will need to call createFluidBuffer when your block is placed and specify the buffer's fluid type, capacity, whether it can take in fluids from input points, and whether it can supply fluids to output points.

You do not need to handle saving buffers or implement any of the PylonFluidBlock methods for this; this is all done automatically.

Functions

Link copied to clipboard
open fun addFluid(fluid: PylonFluid, amount: Double): Boolean

Adds to a fluid buffer only if the new amount of fluid is greater than or equal to zero and fits in the buffer.

Link copied to clipboard
open fun canSetFluid(fluid: PylonFluid, amount: Double): Boolean

Checks if a new amount of fluid is greater than zero and fits inside the corresponding buffer.

Link copied to clipboard
open fun createFluidBuffer(fluid: PylonFluid, capacity: Double, input: Boolean, output: Boolean)

Creates a fluid buffer with the specified fluid type and capacity

Link copied to clipboard
open fun deleteFluidBuffer(fluid: PylonFluid)

Deletes a fluid buffer

Link copied to clipboard
open fun fluidAmount(fluid: PylonFluid): Double

Returns the amount of fluid stored in a buffer

Link copied to clipboard
open override fun fluidAmountRequested(fluid: PylonFluid, deltaSeconds: Double): Double

Returns the amount of the given fluid that the machine wants to receive next tick.

Link copied to clipboard
open fun fluidCapacity(fluid: PylonFluid): Double

Returns the capacity of a buffer

Link copied to clipboard

Returns the amount of space remaining in a fluid buffer

Link copied to clipboard
Link copied to clipboard
open override fun getFacing(): BlockFace?
Link copied to clipboard
open override fun getSuppliedFluids(deltaSeconds: Double): Map<PylonFluid, Double>

Returns a map of fluid types - and their corresponding amounts - that can be supplied by the block for this fluid tick. deltaSeconds is the time since the last fluid tick.

Link copied to clipboard
open fun hasFluid(fluid: PylonFluid): Boolean

Returns whether a buffer exists for this fluid

Link copied to clipboard
open override fun onFluidAdded(fluid: PylonFluid, amount: Double)

amount is always at most getRequestedFluids().get(fluid) and will never be zero or less.

Link copied to clipboard
open override fun onFluidRemoved(fluid: PylonFluid, amount: Double)

amount is always at least getSuppliedFluids().get(fluid) and will never be zero or less.

Link copied to clipboard
open fun removeFluid(fluid: PylonFluid, amount: Double): Boolean

Removes from a fluid buffer only if the new amount of fluid is greater than zero and fits in the buffer.

Link copied to clipboard
open fun setFluid(fluid: PylonFluid, amount: Double): Boolean

Sets a fluid buffer only if the new amount of fluid is greater than or equal to zero and fits in the buffer.

Link copied to clipboard
open fun setFluidCapacity(fluid: PylonFluid, capacity: Double)

Sets the new capacity of a buffer. Any existing fluid will not be removed, so you may end up with a buffer containing more fluid than it technically has capacity for.