Fabric Flux

Quick rating

Community listing page, reviews here may not be monitored by the author.

Fabric Flux

No reviews yet

Simple energy API for Fabric mods

Mod Loaders
Minecraft

About

Description

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.