Fabric Flux

Mods
1,329 Downloads Last Updated: Jan 25, 2020 Game Version: 1.15.1

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

Fabric Flux (in short FF) is a mod/library aiming to provide energy implementation to Fabric mods.

Battery

Battery crafting recipe 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

  • Every Item accepting energy should implement IFluxContainer and always check in getFluxFor if object type is ItemStack. Other object types are welcome.
  • Any BlockEntity can implement both IFlux and IFluxContainer. If controller is implemented then getFluxFor method 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 -1 instead 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 (Item has to create a fresh interface because it can't be stored in an item stack).
  • IFlux::to should be used to transfer energy. This method can be overriden.
  • FluxBattery class 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.

Comments

Posts Quoted: