Warning: This mod is not part of Fabric. It is a 3rd party library that allows developers to create energy-based mods with Fabric.
Fabric Flux (in short FF) is a mod/library aiming to provide energy implementation to Fabric mods.
Try using this battery on entities.
How this works
There are two basic things to remember: Containers and Interfaces.
- Flux Container is an object that provides access to interfaces. Some containers may require some data for access. For example: Item will require ItemStack to provide an interface.
- Flux Interface is used to transfer energy from one container to another. Two interfaces are needed to complete an energy transfer.
Implementation tips for developers
Itemaccepting energy should implement
IFluxContainerand always check in
getFluxForif object type is
ItemStack. Other object types are welcome.
BlockEntitycan implement both
IFluxContainer. If controller is implemented then
getFluxFormethod should always check if object type is
Direction. Other object types are welcome.
- If an interface simply does not accept input/output, it has to return
-1instead of energy amount (which won't be less than
0). This should be checked before calculating energy.
- DO NOT STORE Flux Interfaces, only containers. Some interfaces can be freshly created by a controller. There are some exceptions for items like (dis)charging a battery (
Itemhas to create a fresh interface because it can't be stored in an item stack).
IFlux::toshould be used to transfer energy. This method can be overriden.
FluxBatteryclass is provided in the API as a basic interface.
Energy API differences
FF differs a bit from Forge Energy API. This mod has less methods to implement and it is not capability-based (it uses containers instead). There are no
canExtractEnergy/canReceiveEnergy counterparts, checking with
extractFlux/receiveFlux(0, true) does the same, although this is not required.